用c++; 怎样用C++实现硬件的哔哔声?

用c++; 怎样用C++实现硬件的哔哔声?,c++,C++,谢谢这里有一个方法: cout << '\a'; cout最简单的方法可能只是打印一个^G ascii贝尔std::cout打印特殊字符ascii贝尔(代码7) std::cout << '\7'; cout如果您使用的是Windows操作系统,则有一个名为Beep()的函数。 如果您不想在windows中使用Beep(),可以执行以下操作: echo "^G" 来源:ASCII贝尔字符可能就是您要查找的字符。表中的数字7。有一些特定于操作系统的蜂鸣声例程 在类U

谢谢

这里有一个方法:

cout << '\a';

cout最简单的方法可能只是打印一个^G ascii贝尔

std::cout打印特殊字符
ascii贝尔
(代码7)

std::cout << '\7';

cout如果您使用的是Windows操作系统,则有一个名为
Beep()的函数。

如果您不想在windows中使用
Beep()
,可以执行以下操作:

echo "^G"

来源:

ASCII贝尔字符可能就是您要查找的字符。表中的数字7。

有一些特定于操作系统的蜂鸣声例程

  • 在类Unix操作系统上,请尝试。这可能比像其他人所建议的那样编写
    '\a'
    更具可移植性,尽管对于大多数终端仿真器来说,这可能是可行的

  • 在某些BSD中,存在一个。读取驱动程序源代码时,
    SPKRTONE
    ioctl似乎与原始硬件接口相对应,但也似乎有一种围绕
    write()
    -ing字符串构建的高级语言,如手册页所述

  • 看起来Linux有一个类似的驱动程序(例如,请参阅;如果向下滚动一点,上面还有一些示例代码)

  • 在Windows中有一个名为的函数


<代码> CUT> P>在C或C++中,包括STDIO。
char d=(char)(7);
printf("%c\n",d);
(char)7被称为钟形字符。

\include
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;

int main()
{

    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1245, 1000);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1175, 1000);

cout<<endl;
_getch()

return 0
}
#包括 #包括 使用名称空间std; int main() { 嘟嘟声(1568200); 嘟嘟声(1568200); 嘟嘟声(1568200); 嘟嘟声(12451000); 嘟嘟声(1397200); 嘟嘟声(1397200); 嘟嘟声(1397200); 嘟嘟声(11751000);
cout您可以使用条件编译:

#ifdef WINDOWS
#include <Windows.h>
void beep() {
  Beep(440, 1000);
}
#elif LINUX
#include <stdio.h>
void beep() {
  system("echo -e "\007" >/dev/tty10");
}
#else
#include <stdio.h>
void beep() {
  cout << "\a" << flush;
}
#endif
#ifdef窗口
#包括
无效嘟嘟声(){
嘟嘟声(4401000);
}
#eliflinux
#包括
无效嘟嘟声(){
系统(“echo-e”\007“>/dev/tty10”);
}
#否则
#包括
无效嘟嘟声(){

我在这里尝试了很多东西,没有一个能在我的Ubuntu虚拟机上工作

下面是一个快速破解(信用卡):

#包括
int main(){
系统(“(扬声器测试-t正弦-f 1000)&pid=$!;睡眠1.0s;杀死-9$pid”);
}
它基本上使用系统的
扬声器测试来产生声音。但这不会很快终止,因此命令会在后台运行它(
&
部分),然后捕获它的进程id(
pid=$1
部分),休眠一定量,您可以更改(
休眠1.0s
部分)然后它终止该进程(kill-9$pid部分)


<代码>正弦>代码>是声音产生的。你可以把它改成<代码>粉红< /C>或到<代码> wav < /C>文件。< /P>这不是标准的C++。我们甚至不知道他是否使用Windows。操作系统从来没有被提到过,或者TAGSIM不是C++程序员,C主要是认为资源会有帮助,不认为它值得一。投反对票,但那是你的特权+1考虑到这个问题“甚至没有错”,这是一个很好的答案。对于最后一个,当我输入
^
G
时,这不起作用。它只在按
Ctrl+G
时起作用。即使字符串在输入时看起来相同,但它们不同,并且打印方式也不同。
stdout
可能?在
命名空间std
中没有名为
out
的对象当然,如果你使用的是断掉的终端软件,所有的赌注都被关闭了,但是Win32控制台子系统和大多数XTALLE克隆都是正确的。“Ben Voigt:如果我错了,请纠正我,但是C++标准只指定‘a’代表ASCII BEL字符,但C++从来没有指定过。当把这样的字符发送到标准输出时,程序的行为应该是什么。ASCII BEL='\a'部分是非常可移植的,正如你所说,但是哔哔声部分是完全未定义的行为。@Ben:就我而言,如果终端软件没有关闭铃声的方法,它就会被破坏。@Steve:我同意,但我没有读这篇文章estion是“当用户明确关闭声音时,如何发出嘟嘟声?”这来自扬声器。如何使内部主板发出嘟嘟声而不是扬声器?这取决于操作系统。旧的MS-DOS会触发主板声音。如果您运行的是最新的操作系统,我希望内核会触发扬声器的音频信号,而不是使用硬件。这不起作用,我尝试了全音量e、 我的g++版本是
g++(Ubuntu9.3.0-10ubuntu2)9.3.0
最好让LINUX部分也能灵活调整频率和时间,使用“system”(“beep-f 5000-l 50-r 2”)(参见)toot是一个跨平台的C文件,它试图调用多个声音发生器来产生蜂鸣音。
cout << "\a";
char d=(char)(7);
printf("%c\n",d);
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;

int main()
{

    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1245, 1000);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1175, 1000);

cout<<endl;
_getch()

return 0
}
#ifdef WINDOWS
#include <Windows.h>
void beep() {
  Beep(440, 1000);
}
#elif LINUX
#include <stdio.h>
void beep() {
  system("echo -e "\007" >/dev/tty10");
}
#else
#include <stdio.h>
void beep() {
  cout << "\a" << flush;
}
#endif
#include <iostream>
int main() {
  system("(speaker-test -t sine -f 1000)& pid=$!; sleep 1.0s; kill -9 $pid");
}