next up previous contents
下一节: 7.2 声音编程 上一节: 7 声音编程 前一节: 7 声音编程

7.1 内部扬声器编程

信不信由你,你的 PC 扬声器是 Linux 控制台的一部分,因此是一个字符设备。因此,存在 ioctl() 请求来操作它。对于内部扬声器,存在以下 2 个请求

  1. KDMKTONE

    使用内核定时器在指定时间内生成哔声。

    示例ioctl (fd, KDMKTONE,(long) argument).

  2. KIOCSOUND

    生成无限的哔声或停止当前正在发出的哔声。

    示例ioctl(fd,KIOCSOUND,(int) tone).

这个argumenttone低字中的值和高字中的持续时间组成。这个tone值不是频率。PC 主板定时器 8254 的时钟频率为 1.19 MHz,因此它是 1190000/频率。持续时间以定时器滴答声为单位测量。两个 ioctl 调用都会立即返回,因此您可以通过这种方式生成哔声而不会阻塞程序。
KDMKTONE 应该用于警告信号,因为您不必担心停止声音。
KIOCSOUND 可以用于播放旋律,如示例程序 splay 所示(请向我发送更多 .sng 文件)。 要停止哔声,您必须使用tone值 0。



转换于
1996 年 3 月 29 日星期五 14:43:04 EST