Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 56

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — БВХ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interfeysusbpraktikaispolzovaniya2004.djvu
Предыдущая << 1 .. 50 51 52 53 54 55 < 56 > 57 58 59 60 61 62 .. 168 >> Следующая

3 - если нет. Клавиатуры могут использовать это поля для передачи языка
клавиш.
HID-дескриптор возвращается по запросу Get_Descriptor ($21).
8.4.4. Дескриптор репорта
Дескриптор репорта (тип report) не похож на остальные дескрипторы. Он
имеет сложную табличную структуру. Длина дескриптора зависит от числа и
типа данных, которые он передает.
Содержимое дескриптора репорта складывается из частей, передающих
информацию об устройстве. Первая часть каждого слагаемого содержит три
поля: тип, тег и размер. Такая структура позволяет, с одной стороны,
идентифицировать любую составляющую репорта, а с другой, пропустить
неизвестные части, сразу переместившись к следующей составляющей (см.
разд .8.5).
Дескриптор репорта имеет код $22 и, соответственно, возвращается по
запросу GetDescriptor ($22).
8.5. Структура дескриптора репорта
Дескриптор репорта (report descriptor) определяет структуру данных,
передаваемых от устройства к хосту и от хоста к устройству. Дескриптор
HID состоит из элементов (Items), каждый из которых несет определенную
информацию об устройстве.
Элемент может содержать байты данных. Размер данных и структура элемента
зависят от базового типа (fundamental type) элемента.
8.5.1. Структура элементов репорта
Существуют два основных базовых типа: короткие элементы (short item) и
длинные элементы (long item).
Гпава 8. HID-устройства
157
Элементы короткого типа
Элементы короткого типа имеют однобайтный префикс, содержащий тип, тег и
размер (рис. 8.2.):
? [7:4] - поле тега (ьтад, код функции элемента);
? [3:2] - тип (ьтуре, см. разд. 8.6):
• 00 - основной (main);
• 01 - глобальный (global);
• 10 - локальный (local);
? [0:1] - число байт данных в элементе (bsize):
• 00 - нет байт данных;
• 01 - 1 байт;
• 10 - 2 байта;
• 11-4 байта.
23 15 7 6 5 4 3 2 1 0
Данные Данные Тег ЬТад Тип ЬТуре Размер bS)2e
Рис. 8.2. Структура элемента дескриптора репорта
Элементы длинного типа
Элементы длинного типа имеют однобайтный префикс OxFE, поле bsize всегда
равно 2, а длина данных указывается в следующем после префикса байте
(рис. 8.3).
258..24 23 15 7 6 5 4 3 2 1 0
Данные Тип bLongltemTag Размер bDataSize 1111 11 10
Рис. 8.3. Структура длинного элемента дескриптора репорта
8.5.2. Типы элементов репорта
Спецификация определяет три типа элементов:
? основные элементы (main items) - определяют группу данных в
дескрипторе;
158
Часть III. Практика программирования
? глобальные элементы (global items) - определяют данные репорта;
? локальные элементы (local items) - определяют характеристики конкретных
данных.
Основные элементы
Основные элементы определяют или группируют элементы в дескрипторе
репорта. Существуют пять элементов основного типа:
? Input, Output и Feature - определяют поля соответствующих репортов;
? Collection и End Collection - не определяют поля, но объединяют группу
связанных полей внутри репорта.
Биты поля данных для элементов Input, Output и Feature показаны в табл.
8.2 и на рис. 8.4.
BitO ~i : Bit4 i ¦ BitB
F Data | F Linear j F Bit Field
Г Constant | С Non Linear S F Buffered
Bid Bit5
F Array ' j F Preferred State
! OK ij
Г Variable ! C No Preffered

Cancel j
- Bit2 . r BitS-
F Absolute F No Null Position
F Relative j С Null State
rBit3 • Bit? -
F NoWiap F Nonvolatile
С Wrap F Volatile
- -
Рис. 8.4. Биты данных элементов Input, Output и Feature
Таблица 8.2. Биты данных элементов Input, Output и Feature
Бит Если бит равен 0 Если бит равен 1
0 Data Constant
1 Array Variable
Гпава 8. НЮ-устройства
159
Таблица 8.2 (окончание)
Бит Если бит равен 0 Если бит равен 1
2 Absolute Relative
3 No wrap Wrap
4 Linear Non-linear
5 Preferred state No preferred state
6 No null position Null state
7 Non-volatile Volatile
8 Bit Field Buffered Bytes
9-31 Зарезервировано
Data/Constant
Data означает, что данные, относящиеся к этой группе, могут изменяться.
Constant означает, что данные изменяться не могут (только для чтения).
Array/Variable
Этот бит управляет представлением данных. Например, если клавиатура имеет
8 клавиш, то установка режима Variable будет означать, что клавиатура
содержит по одному биту на каждую клавишу. В дескрипторе репорта нужно
будет указать, что размер элемента данных (Report Size) равен 1, а число
элементов данных (Report Count) равно 8. Установка режима Array будет
означать, что каждая клавиша имеет индекс, который передается в репорте,
если клавиша нажата. Для восьми клавиш индекс будет кодироваться тремя
битами, поэтому поле Report Size должно быть равно 3, a Report Count
должно быть равно числу клавиш, которые разрешено нажимать одновременно.
Absolute/Relative
Absolute означает, что значения, переданные в репорте, берутся "как
есть". Relative означает, что данные передаются как относительное
смещение от предыдущего переданного пакета. Например, джойстик передает
абсолютные данные, а мышь - относительные.
No Wrap/Wrap
Wrap означает, что значение "перескочит" через границу, если оно будет
Предыдущая << 1 .. 50 51 52 53 54 55 < 56 > 57 58 59 60 61 62 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.