如何在Linux中使用PC扬声器?

如何在Linux中使用PC扬声器进行c / c ++编程? 我能控制哔哔声和频率吗?

Solutions Collecting From Web of "如何在Linux中使用PC扬声器?"

采取从这里 :

 #include <sys/ioctl.h> #include <unistd.h> #include <linux/kd.h> int main(void) { int freq[] = { /* CDEFGABC */ 523, 587, 659, 698, 784, 880, 988, 1046 }; int i; for (i=0; i<8; i++) { ioctl(STDOUT_FILENO, KIOCSOUND, 1193180/freq[i]); usleep(500000); } ioctl(STDOUT_FILENO, KIOCSOUND, 0); /*Stop silly sound*/ return 0; } 

是的,打开控制台设备(如/ dev / console或/ dev / tty0),然后发出KIOCSOUND ioctl,如console_ioctl(4)手册页中所述。

这是很难和Linux特定的,但我认为它回答你的问题。


编辑:无可置疑,内核中有一个PC扬声器驱动程序,可以让您在PC扬声器中播放数字声音。 它的声音质量会很差,它会使用很多的CPU虽然:)

如果您确实想要这样做,请查看beep命令的源代码: http : //www.johnath.com/beep/beep.c

据推测,如果芯片组中的8253芯片组仍然与接近扬声器的芯片组相同,则可以根据数据表寄存器或古老的PC指南(我放心,承认我不再拥有这些信息)一个内核模块或以root身份调用ioperm()之后。

曾经有一段时间PC扬声器的内核PWM“模拟”音频驱动程序。 我相信这是我第一次编译内核。 这是在内核模块之前的日子,或者至少在它们成为流行发行版之前。