Руководство программиста для Linux
4b61df3a

Программирование встроенного динамика


Встроенный динамик - это часть консоли Linux и, поэтому является символьным устройством. Как следствие, существуют запросы ioctl для манипуляций с ним. Для встроенного микрофона это такие два запроса:

1. KDMKTONE

Генерирует сигнал beep заданной длительности, используя таймер ядра. Например, ioctl(fd, KDMKTONE, (long) argument).

2. KIOCSOUND

Генерирует бесконечный beep или прерывает звучащий в настоящий момент. Например, ioctl(fd, KIOCSOUND, (int) tone).

Третий аргумент первого примера содержит значение тона в нижнем слове и сдвиг в верхнем. Тон - это не частота. Таймер 8254 материнской платы ПК заведен на 1.19 МГц и поэтому тон - это 1190000/частота. Сдвиг измеряется в шагах таймера. Оба вызова срабатывают немедленно, поэтому вы можете порождать звуковые сигналы, не блокируя программу.

KDMKTONE можно использовать для предупреждающих сигналов, поскольку вам не приходится заботиться о его прекращении.

При помощи KIOCSOUND можно проигрывать мелодии, как это демонстрируется в примере программы splay. Для остановки сигнала значение тона устанавливается в 0.



Содержание раздела