Программирование устройств C Linux — читаем прямо из /Dev

Я экспериментировал с созданием звуков, используя математические волновые функции в C. Следующим шагом в моем проекте является получение пользовательского ввода с контроллера MIDI-клавиатуры для модуляции волн на разные высоты тона.

Моей первой мыслью было, что это будет относительно просто и что Linux, будучи Linux, позволит мне читать необработанный поток данных с моего устройства, как и любой другой файл.

Тем не менее, исследования в подавляющем большинстве советуют мне написать драйвер устройства для MIDI-контроллера. Общая идея состоит в том, что даже если файл устройства может присутствовать, ядро ​​​​не будет знать, какие системные вызовы выполнять, когда мое приложение вызывает такие функции, как read() и write().

Несмотря на эти предупреждения, я провел эксперимент. Я подключил MIDI-контроллер и открыл файл устройства «/dev/midi1». Появился постоянный поток нулевых символов, и когда я нажал клавишу на MIDI-контроллере, появилось несколько байтов, соответствующих ожидаемым фрагментам сообщений, которые должно выводить MIDI-устройство.Информация о MIDI-протоколе

Итак, мои вопросы:

Почему поток с катами ведет себя таким образом?

Означает ли это, что в моей системе уже установлен драйвер устройства plug and play?

Должен ли я продолжать и писать драйвер устройства, или мне может сойти с рук чтение его как файла?

Заранее благодарю вас за то, что вы поделились своей мудростью в этих областях.

5
задан Kokopelli 1 June 2012 в 19:48
поделиться