【发布时间】:2011-05-02 21:57:53
【问题描述】:
如何用c++使硬件发出哔哔声?
【问题讨论】:
-
toot 是一个跨平台的 C 文件,它尝试调用多个声音发生器来产生哔声。 github.com/vareille/toot
标签: c++
如何用c++使硬件发出哔哔声?
【问题讨论】:
标签: c++
【讨论】:
最简单的方法可能只是打印一个 ^G ascii 铃声
【讨论】:
stdout,也许? namespace std 中没有名为 out 的对象。
std::cout << '\7';
【讨论】:
【讨论】:
g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0
如果您使用的是 Windows 操作系统,则有一个名为 Beep() 的函数
#include <iostream>
#include <windows.h> // WinApi header
using namespace std;
int main()
{
Beep(523,500); // 523 hertz (C5) for 500 milliseconds
cin.get(); // wait
return 0;
}
来源:http://www.daniweb.com/forums/thread15252.html
对于基于 Linux 的操作系统,有:
echo -e "\007" >/dev/tty10
如果你不想在 Windows 中使用Beep(),你可以这样做:
echo "^G"
【讨论】:
^ 和G 时,这不起作用。它仅在按下Ctrl+G 时有效。尽管输入时字符串看起来相同,但它们是不同的,并且打印方式也不同。
ASCII 响铃字符可能就是您要找的。 this 表中的第 7 位。
【讨论】:
有一些特定于操作系统的例程用于发出哔哔声。
在类 Unix 操作系统上,尝试the (n)curses beep() function。这可能比其他人建议的写 '\a' 更便携,尽管对于大多数终端仿真器来说这可能会起作用。
在某些 *BSD 中有一个 PC speaker device。阅读驱动程序源代码,SPKRTONE ioctl 似乎对应于原始硬件接口,但似乎还有一种围绕驱动程序的write()-ing 字符串构建的高级语言,如手册页中所述。
看起来 Linux 也有类似的驱动程序(例如,请参阅 this article;如果向下滚动一点,this page 上还有一些示例代码。)。
在 Windows 中有一个名为 Beep() 的函数。
【讨论】:
cout << "\a";
在 Xcode 中,编译后,你必须手动运行可执行文件才能听到哔声。
【讨论】:
在包含 stdio.h 之后也可以在 c 或 c++ 中使用
char d=(char)(7);
printf("%c\n",d);
(char)7 称为铃符。
【讨论】:
#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
【讨论】:
我在这里尝试了大多数东西,但在我的 Ubuntu 虚拟机上都没有。
这是一个快速的 hack(学分去here):
#include <iostream>
int main() {
system("(speaker-test -t sine -f 1000)& pid=$!; sleep 1.0s; kill -9 $pid");
}
它基本上会使用系统的speaker-test 来产生声音。不过这不会很快终止,因此该命令在后台运行它(& 部分),然后捕获它的进程 ID(pid=$1 部分),休眠一定量,您可以更改(sleep 1.0s 部分) 然后它会终止该进程(kill -9 $pid 部分)。
sine 是产生的声音。您可以将其更改为 pink 或 wav 文件。
【讨论】: