stringtranslate.com

Устройство человеко-машинного интерфейса

Устройство человеко-машинного интерфейса ( HID ) — это тип компьютерного устройства, обычно используемого людьми, которое принимает входные данные от людей или предоставляет им выходные данные .

Термин «HID» чаще всего относится к спецификации USB HID . Термин был придуман Майком Ван Фландерном из Microsoft , когда он предложил комитету USB создать рабочую группу класса Human Input Device. [ когда? ] Рабочая группа была переименована в класс Human Interface Device по предложению Тома Шмидта из DEC , поскольку предложенный стандарт поддерживал двунаправленную связь. [ когда? ]

стандарт HID

Стандарт HID был принят в первую очередь для внедрения инноваций в устройства ввода ПК и упрощения процесса установки таких устройств. До внедрения концепции HID устройства обычно соответствовали строго определенным протоколам для мыши , клавиатуры и джойстика ; например, стандартный протокол мыши в то время поддерживал относительные данные осей X и Y и двоичный ввод для двух кнопок, без поддержки устаревших версий. Все аппаратные инновации требовали либо перегрузки использования данных в существующем протоколе, либо создания пользовательских драйверов устройств и евангелизации нового протокола для разработчиков. Напротив, все устройства, определенные HID, предоставляют самоописываемые пакеты, которые могут содержать любое количество типов и форматов данных. Один драйвер HID на компьютере анализирует данные и обеспечивает динамическую связь ввода-вывода данных с функциональностью приложения, что позволило быстро внедрять инновации и разработки, а также плодотворную диверсификацию новых устройств с интерфейсом человека.

Рабочий комитет с представителями нескольких известных компаний разработал стандарт HID. Список участников представлен в документе «Определение класса устройств для устройств с человеческим интерфейсом (HID)» [1] . Концепция самоописываемого расширяемого протокола изначально возникла у Майка Ван Фландерна и Манолито Адана во время работы над проектом под названием «Raptor» в Microsoft , и независимо от Стива Макгоуэна, который работал над проектом «SIM», определявшим протокол устройства для гарнитуры VFX1 VR и ее периферийных устройств на основе ACCESS.bus во время работы в Forte Technologies. SIM также был самоописываемым и расширяемым, однако он был больше ориентирован на устройства SIMulation, используемые для VR и захвата движения. После обмена мнениями на конференции разработчиков потребительских игр Стив и Майк договорились о сотрудничестве по новому стандарту для формирующейся универсальной последовательной шины (USB).

До появления HID (около 1995 г.) практически для каждого устройства, подключенного к ПК, требовалась установка фирменных драйверов. Это означало, что поставщикам устройств необходимо было отслеживать выпуски ОС и регулярно предлагать обновленные драйверы для своих устройств, а также разрабатывать драйверы для каждой ОС, которую они хотели поддерживать. Кроме того, в то время любые новые устройства, например, джойстики, разработанные для авиасимуляторов с дополнительными кнопками или D-pad , требовали программной поддержки не только драйвером, но и каждой игрой, которая их поддерживала, чтобы включить новые элементы управления. Это означало, что разработчики устройств несли дополнительную ответственность за включение каждой игры, которую они хотели поддерживать. Возможность для устройства HID описывать себя с помощью дескриптора отчета отделила разработчиков аппаратных устройств от разработчиков игр. Концепция дескриптора отчета также означала, что поставщики ОС могли написать драйвер HID (парсер), который мог бы работать практически с любым устройством HID, которое мог придумать поставщик, без необходимости для поставщика писать или поддерживать драйвер для каждой ОС, которую они хотели поддерживать.

Таким образом, класс HID отделил поставщиков устройств от поставщиков игр и ОС, что позволило поставщикам устройств быстрее внедрять инновации и снизить затраты на разработку (например, отсутствие поддержки со стороны разработчиков драйверов или игр). Документ HID Usage Table определяет тысячи элементов управления, которые могут быть представлены устройствами HID. Поставщики игр могут запрашивать анализатор HID ОС, чтобы определить набор элементов управления, представленных устройством, а затем сопоставлять эти элементы управления с функциями в своей игре. С момента своего первоначального выпуска в документ HID Usage Table (HUT) были добавлены сотни новых вариантов использования.

Протокол HID имеет свои ограничения, но все современные основные операционные системы распознают стандартные USB HID-устройства, такие как клавиатуры и мыши, без необходимости в специализированном драйвере. Однако его универсальность была продемонстрирована тем фактом, что он не обновлялся более 22 лет, и он по-прежнему поддерживается каждым ПК, планшетом и мобильным телефоном, выпускаемым сегодня. USB, а значит и HID-устройства, могут подключаться в горячем режиме, поэтому при установке на экране обычно появляется сообщение о том, что «Опознан „HID-совместимый“ прибор». Для сравнения, это сообщение обычно не появлялось для устройств, подключенных через 6-контактные разъемы DIN PS/2 , которые предшествовали USB. PS/2 обычно не поддерживал технологию plug-and-play , что означает, что подключение клавиатуры или мыши PS/2 к включенному компьютеру не всегда работает и может представлять опасность для материнской платы компьютера. Аналогично, стандарт PS/2 не поддерживал протокол HID. Класс устройств интерфейса USB human interface описывает USB HID.

Протокол HID (Report Descriptor and Report mechanism) реализован на многих шинах, отличных от USB, включая Bluetooth и I2C .

Существует также ряд расширений HID, определенных в «Документах по интегрированной таблице использования HID», включая источники бесперебойного питания , элементы управления видеомониторами , устройства для точек продаж , игровые автоматы и игровые устройства .

Отчет Дескриптор

Дескриптор отчета отображает сообщения, которые генерируются или принимаются устройством HID. Каждое сообщение называется «отчетом». Отчеты могут определять биты/элементы управления в устройстве, которые могут быть прочитаны или записаны, или периодически генерироваться для поддержания хоста в актуальном состоянии текущего состояния устройства. Например, мышь обычно генерирует отчет 200 раз в секунду, чтобы информировать хост о любых движениях или нажатиях кнопок. Дескрипторы отчетов «ориентированы на биты», что означает, что элементы управления могут представлять от 1 до 32 бит информации. Каждый элемент управления, определенный в дескрипторе отчета, имеет идентификатор и определяет его размер и положение в своем отчете. Дескриптор отчета может определять множество отчетов, каждый из которых сообщает другой набор или комбинацию информации.

Например, базовая мышь определяет 3-байтовый отчет, где наименее значимый (0) бит отчета — это левая кнопка, следующий (1) бит — средняя кнопка, а третий (2) бит — правая кнопка. Чтобы 8-битные координаты положения мыши X и Y удобно располагались на границах байтов, определяется 5-битный «pad». Затем координата X определяется как 8-битное относительное значение (т. е. количество «микки» с момента предыдущего отчета), которое находится в позициях битов с 8 по 15, а координата Y определяется как 8-битное относительное значение, которое находится в позициях битов с 16 по 24, что приводит к пакету данных, который представляется хосту.

Report Descriptor чрезвычайно универсален, позволяя устройству указывать разрешение, диапазон и многие другие характеристики каждого элемента управления, который оно представляет. Будучи разработанным в то время, когда контроллер мыши или клавиатуры был счастлив иметь 1 КБ ПЗУ для всего своего кода и данных, синтаксис Report Descriptor имеет много особенностей, которые позволяют минимизировать его размер, например, выбранные параметры управления могут сохраняться в нескольких определениях управления, и их нужно будет только повторно объявлять, если их значение изменится. Отчеты, генерируемые базовой мышью, можно описать в 50 байтах, а 104-клавиатурой — в 65 байтах.

Физический дескриптор

Малоизвестной или понятной функцией HID является Physical Descriptor. Physical Descriptor используется для определения частей человеческого тела, которые взаимодействуют с отдельными элементами управления, определенными в Report Descriptor. При управлении игрой указательный и большой пальцы обычно используются для вызова повторяющихся действий. Поскольку считается, что эти пальцы имеют самую быструю реакцию «дергания», они обычно используются для нажатия на курок пистолета или активации часто используемой игровой функции. Physical Descriptor позволяет поставщику устройств определять, какие пальцы лежат на каждом элементе управления, и расставлять приоритеты в наборе элементов управления, которые могут быть достигнуты отдельным пальцем. Эта функция позволяет поставщику игр разумно представлять наилучшее сопоставление кнопок по умолчанию, даже для устройства, которого не существовало, когда была разработана игра. Physical Descriptor также позволяет устройству HID представлять информацию о захвате движения всего тела, т. е. угол, ориентацию, относительное или абсолютное положение любого сустава в теле человека. А через Report Descriptor данные о захвате движения могут быть представлены в любом разрешении, которое может поддерживать устройство.

Компоненты протокола HID

В протоколе HID есть 2 сущности: «хост» и «устройство». Устройство — это сущность, которая напрямую взаимодействует с человеком, например, клавиатура или мышь. Хост взаимодействует с устройством и получает входные данные от устройства о действиях, выполняемых человеком. Выходные данные передаются от хоста к устройству, а затем к человеку. Наиболее распространенным примером хоста является ПК, но некоторые сотовые телефоны и КПК также могут быть хостами.

Протокол HID делает реализацию устройств очень простой. Устройства определяют свои пакеты данных, а затем представляют хосту «дескриптор HID». Дескриптор HID — это жестко закодированный массив байтов, который описывает пакеты данных устройства. Сюда входит: сколько пакетов поддерживает устройство, размер пакетов и назначение каждого байта и бита в пакете. Например, клавиатура с кнопкой программы калькулятора может сообщить хосту, что состояние нажатия/отпускания кнопки хранится как 2-й бит в 6-м байте в пакете данных номер 4 (примечание: эти расположения являются только иллюстративными и зависят от устройства). Устройство обычно хранит дескриптор HID в ПЗУ и не должно внутренне понимать или анализировать дескриптор HID. Некоторое оборудование для мышей и клавиатур на современном рынке реализовано с использованием только 8-битного ЦП .

Ожидается, что хост будет более сложной сущностью, чем устройство. Хост должен получить дескриптор HID от устройства и проанализировать его, прежде чем он сможет полностью взаимодействовать с устройством. Анализ дескриптора HID может быть сложным. Известно, что несколько операционных систем отправляли ошибки в драйверах устройств, отвечающих за анализ дескрипторов HID, спустя годы после того, как драйверы устройств были изначально выпущены для общественности. Однако эта сложность является причиной того, что быстрые инновации с устройствами HID возможны.

Вышеуказанный механизм описывает то, что известно как «протокол отчетов» HID. Поскольку было понятно, что не все хосты смогут анализировать дескрипторы HID, HID также определяет «протокол загрузки». В протоколе загрузки поддерживаются только определенные устройства с определенными функциями, поскольку используются фиксированные форматы пакетов данных. Дескриптор HID не используется в этом режиме, поэтому инновации ограничены. Однако преимущество заключается в том, что минимальная функциональность все еще возможна на хостах, которые в противном случае не смогли бы поддерживать HID. Единственными устройствами, поддерживаемыми в протоколе загрузки, являются

Одно из распространенных применений режима загрузки — первые моменты загрузки компьютера. Прямая настройка BIOS компьютера часто выполняется с использованием только режима загрузки. Иногда появляется сообщение, информирующее пользователя о том, что устройство установило правильный драйвер и теперь может использоваться.

Определение устройства

Согласно спецификации HID, устройство описывается в режиме отчета как набор элементов управления или группа элементов управления. Элементы управления сопоставляются с полем, содержащим данные, и другим, содержащим тег использования. Каждый тег использования описывается в спецификации как предложенное конструктором использование данных, описанных в режиме отчета.

HID Descriptor Tool (#Внешние ссылки) — это приложение Windows, которое можно использовать для генерации всех дескрипторов, связанных с устройством HID (см. ссылку ниже). Оно выполняет проверку синтаксиса и может генерировать файлы C, C Header и двоичные файлы для дескрипторов HID. Его текстовые файлы определения таблиц использования также можно легко расширить для определения собственных видов использования (типов элементов управления) или таблиц использования (набора видов использования, связанных с устройством или функцией).

Другие протоколы, использующие HID

С момента первоначального определения HID через USB, HID теперь также используется в других шинах компьютерной связи . Это позволяет использовать HID-устройства, которые традиционно можно было найти только на USB, также на альтернативных шинах. Это делается, поскольку существующая поддержка USB-устройств HID обычно может быть адаптирована гораздо быстрее, чем при необходимости изобретать совершенно новый протокол для поддержки мыши, сенсорной панели, клавиатуры и т. п. Известные шины, которые используют HID:

Смотрите также

Ссылки

  1. ^ Определение класса устройств для устройств интерфейса человека (HID): Спецификация прошивки — окончательная версия от 30.01.97. Форум разработчиков USB. 1997. Получено 28.04.2014 .
  2. ^ "HID через I2C". Microsoft . Получено 2016-01-19 .
  3. ^ "Введение в HID через SPI - драйверы Windows". docs.microsoft.com . Получено 2022-09-06 .

Внешние ссылки