Часть III. Практическое применение Arduino
Отдельно хочется выделить специальные HID-устройства для компьютерных игр:
игровые мыши — отличаются от обычных компьютерных мышей высокой чув-
ствительностью, настраиваемым весом, большим количеством программируе-
мых кнопок;
кейпады — специальные игровые клавиатуры-приставки, в которых кнопки
скомбинированы для максимального удобства игрока (в современные модели
встраивается мини-джойстик);
руль и педали — манипуляторы для игр жанра "автогонки" (рэйсинг);
джойстики — используются для игр жанра "авиасимуляторы";
геймпады — специальные игровые манипуляторы, используемые в аркадных
жанрах (перешли с игровых консолей);
танцевальные платформы — специальные платформы с датчиками давления.
Управление производится с помощью ног. Используются для игр жанра "танце-
вальные аркады";
музыкальные инструменты (гитары, барабаны) — специальные манипуляторы
в форме музыкальных инструментов с кнопками и датчиками давления. Исполь-
зуются для игр жанра "музыкальные аркады".
Операционные системы, как правило, имеют встроенные драйверы HID-класса, так
что у разработчиков отпадает необходимость в трудоемкой собственной разработке
драйвера для нового устройства. Чтобы определить устройство как HID, необходи-
мо поддержать ряд структур, описывающих HID-интерфейс, а также написать ал-
горитм обмена по interrupt-каналу (каналу прерываний) передачи данных. Во мно-
гих отношениях устройства HID не имеют никаких особенных отличий от других
USB-устройств. Однако кроме требований, которые относятся ко всем USB-уст-
ройствам, устройства HID выдвигают ряд дополнительных требований:
HID-устройство должно иметь
Interrupt In
— конечную точку для выдачи дан-
ных в хост.
Interrupt Out
— конечная точка для получения периодических дан-
ных от хоста, является опциональной и может не использоваться;
HID-устройство должно содержать дескриптор класса
—
Device Class
Descriptor
и один или более дескрипторов репорта
HID Report Descriptor
;
HID-устройство должно поддерживать специфический для класса управляющий
запрос
Get_Report
, а также опционально поддерживать дополнительный запрос
Set_Report
;
для передачи
Interrupt In
(данные из устройства в хост) устройство должно по-
ложить данные репорта в FIFO соответствующей конечной точки и разрешить
передачу;
для передачи
Interrupt Out
(данные из хоста в устройство) устройство должно
разрешить соответствующую конечную точку
Out
, а затем, после прихода паке-
та, забрать данные из FIFO.
Do'stlaringiz bilan baham: |