Hid monitor driver что это
Подлинный файл является одним из компонентов программного обеспечения Alps Pointing-Device Driver, разработанного Alps Electric Co. .
HidMonitorSvc.exe - это исполняемый файл (программа) для Windows. Расширение имени файла .exe - это аббревиатура от англ. слова executable — исполнимый. Необходимо запускать исполняемые файлы от проверенных производителей программ, потому что исполняемые файлы могут потенциально изменить настройки компьютера или нанести вред вашему компьютеру. Бесплатный форум с информацией о файлах может помочь вам разобраться является ли HidMonitorSvc.exe вирусом, трояном, программой-шпионом, рекламой, которую вы можете удалить, или файл принадлежит системе Windows или приложению, которому можно доверять.
- Используйте программу Настройщик Windows, чтобы найти причину проблем, в том числе и медленной работы компьютера.
- Обновите программу HidMonitorSvc. Обновление можно найти на сайте производителя (ссылка приведена ниже).
- В следующих пунктах предоставлено описание работы HidMonitorSvc.exe.
Информация о файле HidMonitorSvc.exe
Описание: HidMonitorSvc.exe не является необходимым для Windows. HidMonitorSvc.exe находится в подпапках "C:\Program Files". Известны следующие размеры файла для Windows 10/8/7/XP 87,384 байт (55% всех случаев), 76,120 байт и еще 9 варианта .
Название сервиса - ApHidMonitorService.
Это файл, подписанный Microsoft. Приложение не видно пользователям. Это не системный файл Windows. У файла поставлена цифровая подпись. Это файл, подписанный Verisign. Поэтому технический рейтинг надежности 2% опасности.
Если есть проблемы с HidMonitorSvc.exe, то вы просто можете ее удалить (Пуск > Панель управления > Установка и удаление программ > Dell Touchpad или ALPS Touch Pad Driver).
Важно: Некоторые вредоносные программы маскируют себя как HidMonitorSvc.exe, особенно, если они расположены в каталоге c:\windows или c:\windows\system32. Таким образом, вы должны проверить файл HidMonitorSvc.exe на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Комментарий пользователя
Пока нет комментариев пользователей. Почему бы не быть первым, кто добавить небольшой комментарий и одновременно поможет другим пользователям?Лучшие практики для исправления проблем с HidMonitorSvc
Аккуратный и опрятный компьютер - это главное требование для избежания проблем с HidMonitorSvc. Для этого требуется регулярная проверка компьютера на вирусы, очистка жесткого диска, используя cleanmgr и sfc /scannow, удаление программ, которые больше не нужны, проверка программ, которые запускаются при старте Windows (используя msconfig) и активация Автоматическое обновление Windows. Всегда помните о создании периодических бэкапов, или в крайнем случае о создании точек восстановления.
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.
Следующие программы могут вам помочь для анализа процесса HidMonitorSvc.exe на вашем компьютере: Security Task Manager отображает все запущенные задания Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записей автозагрузки. Уникальная оценка рисков безопасности указывает на вероятность процесса быть потенциально опасным - шпионской программой, вирусом или трояном. Malwarebytes Anti-Malware определяет и удаляет бездействующие программы-шпионы, рекламное ПО, трояны, кейлоггеры, вредоносные программы и трекеры с вашего жесткого диска.
HidMonitorSvc сканер
Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
Reimage бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
Если вы посмотрите на скриншот ниже, вы увидите тонны HID листинга. То, что выглядит как несколько устройств, является копиями оригинальных устройств и называется Ghost Devices. Это ранее установленные устройства, которые больше не включены, но драйверы все еще присутствуют в компьютере.
Отсутствует HID-совместимый драйвер сенсорного экрана
Выполните следующие действия, чтобы включить сенсорный экран, и переустановите драйвер сенсорного экрана, если он перестал работать.
Запустите средство устранения неполадок оборудования
Windows 10 поставляется с выделенным разделом устранения неполадок, который может решить большинство распространенных проблем. Когда вы запускаете средство устранения неполадок оборудования, оно проверяет фактически подключенное оборудование и удаляет остальные из них. Непосредственно перед тем, как начать, если это внешнее сенсорное устройство, обязательно подключите его.
- Перейдите в Настройки> Обновление и безопасность> Устранение неполадок.
- Нажмите «Оборудование и устройства» и запустите средство устранения неполадок.
- Это откроет новое окно, и просто следуйте инструкциям впредь.
- Это удалит все устройства Ghost.
- Теперь щелкните правой кнопкой мыши на списке устройств HID слева и включите его.
Как переустановить HID-совместимый драйвер сенсорного экрана
Возможно, что драйверы никогда не были установлены для устройства, потому что оно было отключено, и теперь его нельзя включить, если вы не установите правильные драйверы.
Лучше всего обновлять драйверы через Центр обновления Windows . Большинство OEM-производителей теперь поставляют обновление через канал доставки Windows Update, и они проверены на совместимость. Итак, зайдите в Настройки> Обновление и безопасность и запустите программу обновления, чтобы увидеть, есть ли обновление. Возможно, что Windows предложит это как дополнительное обновление, но установите его, особенно если это для вашего HID.
Если драйвер недоступен, вы всегда можете загрузить его с сайта OEM . Как только он у вас будет, вы сможете запустить его напрямую, чтобы снова установить на свое устройство.
Удалить ненужные драйверы из Windows 10
- Откройте командную строку с правами администратора.
- Введите set devmgr_show_nonpresent_devices = 1 и нажмите Enter. Для этого не будет выходных данных, поскольку вы просто включаете настройку, чтобы скрытые устройства отображались в диспетчере устройств.
- Затем введите devmgmt.msc и нажмите Enter, чтобы запустить консоль диспетчера устройств Windows.
- В консоли диспетчера устройств в меню Вид выберите Показать скрытые устройства .
Это покажет вам список устройств, драйверов и служб, которые не были установлены или удалены должным образом. Вы можете найти устройство-нарушитель, щелкнуть правой кнопкой мыши и выбрать удалить , чтобы полностью удалить его из системы. Обратите внимание, что если устройства серого цвета, не удаляйте их. Удалите только те, которые, по вашему мнению, вызывают проблемы. Кроме того, обязательно удалите один и проверьте, а затем вернитесь, если он не работает.
HIDMonitor.exe это исполняемый файл, который является частью HID монитор Программа, разработанная Acer Incorporated, Программное обеспечение обычно о по размеру.
Расширение .exe имени файла отображает исполняемый файл. В некоторых случаях исполняемые файлы могут повредить ваш компьютер. Пожалуйста, прочитайте следующее, чтобы решить для себя, является ли HIDMonitor.exe Файл на вашем компьютере - это вирус или троянский конь, который вы должны удалить, или это действительный файл операционной системы Windows или надежное приложение.
HIDMonitor.exe безопасный, или это вирус или вредоносная программа?
Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, такой процесс, как HIDMonitor.exe, должен запускаться из C: \ Program Files \ Acer Incorporated \ HID Monitor \ HIDMonitor.exe и нигде в другом месте.
Для подтверждения откройте диспетчер задач, выберите «Просмотр» -> «Выбрать столбцы» и выберите «Имя пути к изображению», чтобы добавить столбец местоположения в диспетчер задач. Если вы обнаружите здесь подозрительный каталог, возможно, стоит дополнительно изучить этот процесс.
Еще один инструмент, который иногда может помочь вам обнаружить плохие процессы, - это Microsoft Process Explorer. Запустите программу (не требует установки) и активируйте «Проверить легенды» в разделе «Параметры». Теперь перейдите в View -> Select Columns и добавьте «Verified Signer» в качестве одного из столбцов.
Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.
Наиболее важные факты о HIDMonitor.exe:
Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, прежде чем удалять HIDMonitor.exe. Для этого найдите этот процесс в диспетчере задач.
Найдите его местоположение (оно должно быть в C: \ Program Files \ Acer Incorporated \ HID Monitor \) и сравните размер и т. Д. С приведенными выше фактами.
Кроме того, функциональность вируса может сама влиять на удаление HIDMonitor.exe. В этом случае вы должны включить Безопасный режим с поддержкой сети - безопасная среда, которая отключает большинство процессов и загружает только самые необходимые службы и драйверы. Когда вы можете запустить программу безопасности и полный анализ системы.
Могу ли я удалить или удалить HIDMonitor.exe?
Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.
Согласно различным источникам онлайн, 10% людей удаляют этот файл, поэтому он может быть безвредным, но рекомендуется проверить надежность этого исполняемого файла самостоятельно, чтобы определить, является ли он безопасным или вирусом. Лучшая диагностика для этих подозрительных файлов - полный системный анализ с Reimage, Если файл классифицирован как вредоносный, эти приложения также удалят HIDMonitor.exe и избавятся от связанных вредоносных программ.
Однако, если это не вирус и вам нужно удалить HIDMonitor.exe, вы можете удалить HID Monitor со своего компьютера, используя его деинсталлятор, который должен находиться по адресу: MsiExec.exe / X . Если вы не можете найти его деинсталлятор, то вам может потребоваться удалить HID Monitor, чтобы полностью удалить HIDMonitor.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.
- 1. в Меню Пуск (для Windows 8 щелкните правой кнопкой мыши в нижнем левом углу экрана), нажмите Панель управления, а затем под Программы:
o Windows Vista / 7 / 8.1 / 10: нажмите Удаление программы.
o Windows XP: нажмите Установка и удаление программ.
- 2. Когда вы найдете программу HID мониторщелкните по нему, а затем:
o Windows Vista / 7 / 8.1 / 10: нажмите Удалить.
o Windows XP: нажмите Удалить or Изменить / Удалить вкладка (справа от программы).
- 3. Следуйте инструкциям по удалению HID монитор.
Наиболее распространенные ошибки HIDMonitor.exe, которые могут возникнуть:
• "Ошибка приложения HIDMonitor.exe."
• «Ошибка HIDMonitor.exe».
• «Возникла ошибка в приложении HIDMonitor.exe. Приложение будет закрыто. Приносим извинения за неудобства».
• «HIDMonitor.exe не является допустимым приложением Win32».
• «HIDMonitor.exe не запущен».
• «HIDMonitor.exe не найден».
• «Не удается найти HIDMonitor.exe».
• «Ошибка запуска программы: HIDMonitor.exe».
• «Неверный путь к приложению: HIDMonitor.exe».
Аккуратный и опрятный компьютер - это один из лучших способов избежать проблем с HID Monitor. Это означает выполнение сканирования на наличие вредоносных программ, очистку жесткого диска cleanmgr и ПФС / SCANNOWудаление ненужных программ, мониторинг любых автозапускаемых программ (с помощью msconfig) и включение автоматических обновлений Windows. Не забывайте всегда делать регулярные резервные копии или хотя бы определять точки восстановления.
Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.
Чтобы помочь вам проанализировать процесс HIDMonitor.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.
Обновлено ноябрь 2021 г .:
Мы рекомендуем вам попробовать это новое программное обеспечение, которое исправляет компьютерные ошибки, защищает их от вредоносных программ и оптимизирует производительность вашего ПК. Этот новый инструмент исправляет широкий спектр компьютерных ошибок, защищает от таких вещей, как потеря файлов, вредоносное ПО и сбои оборудования.
(опциональное предложение для Reimage - Cайт | Лицензионное соглашение | Политика конфиденциальности | Удалить)
The architecture of the HID driver stack in Windows is built on the class driver named hidclass.sys. Clients and transport minidrivers access the class driver from user-mode or kernel-mode.
The HID Class Driver
The system-supplied HID class driver is the WDM function driver and bus driver for the HID device setup class (HIDClass). The executable component of the HID class driver is hidclass.sys. The HID Class driver is the glue between HID clients and various transports. This allows a HID Client to be written in an independent way from transports. This level of abstraction allows clients to continue to work (with little to no modifications) when a new standard, or a 3rd party transport is introduced.
The following is an architectural representation.
The preceding diagram includes the following:
- HID Clients – Identifies the Windows and 3rd party clients and their interfaces.
- HID Class driver - The hidclass.sys executable.
- HID Transport Minidriver - Identifies the Windows and 3rd party transports and their interfaces.
Here is the device stack diagram of a generic HID client and transport.
Here is another device stack diagram showing HID keyboard and mouse collections over USB.
HID Clients
The HID Clients are drivers, services or applications that communicate with HIDClass.sys and often represent a specific type of device (E.g. sensor, keyboard, mouse, etc). They identify the device via a hardware ID or a specific HID Collection and communicate with the HID Collection via the following guidance.
User-mode drivers and applications, and kernel-mode drivers, do the following to operate HID collections:
- User-mode drivers and applications use HIDClass support routines (HidD_Xxx) to obtain information about a HID collection.
- Kernel-mode drivers, user-mode drivers and applications use HID parsing support routines (HidP_Xxx), and kernel-mode drivers use HID class driver IOCTLs to handle HID reports.
The following table is a simplification of the information listed above.
Mode | Drivers | Applications |
---|---|---|
User Mode | HidD_Xxx | HidP_Xxx |
Kernel Mode | HidD_Xxx OR IOCTL_HID_xxx | N/A |
HID Clients Supported in Windows
Windows supports the following top-level collections:
Usage Page | Usage | Windows 7 | Windows 8 | Windows 10 | Notes | Access Mode |
---|---|---|---|---|---|---|
0x0001 | 0x0001 - 0x0002 | Yes | Yes | Yes | Mouse class driver and mapper driver | Exclusive |
0x0001 | 0x0004 - 0x0005 | Yes | Yes | Yes | Game Controllers | Shared |
0x0001 | 0x0006 - 0x0007 | Yes | Yes | Yes | Keyboard / Keypad class driver and mapper driver | Exclusive |
0x0001 | 0x000C | No | Yes | Yes | Flight Mode Switch | Shared |
0x0001 | 0x0080 | Yes | Yes | Yes | System Controls (Power) | Shared |
0x000C | 0x0001 | Yes | Yes | Yes (For both Windows 10 and Windows 10 Mobile) | Consumer Controls | Shared (For both Windows 10 and Windows 10 Mobile) |
0x000D | 0x0001 | Yes | Yes | Yes | External Pen Device | Exclusive |
0x000D | 0x0002 | Yes | Yes | Yes | Integrated Pen Device | Exclusive |
0x000D | 0x0004 | Yes | Yes | Yes | Touchscreen | Exclusive |
0x000D | 0x0005 | No | Yes | Yes | Precision Touchpad (PTP) | Exclusive |
0x0020 | *Multiple | No | Yes | Yes | Sensors | Shared |
0x0084 | 0x0004 | Yes | Yes | Yes | HID UPS Battery | Shared |
0x008C | 0x0002 | No | Yes (Windows 8.1 and later) | Yes | Barcode Scanner (hidscanner.dll) | Shared |
In the preceding table, the access mode for input HID clients is Exclusive to prevent other HID clients from intercepting or receiving global input state when they are not the target recipient of that input. Therefore, for security reasons RIM (Raw Input Manager) opens all such devices exclusively.
If device is opened in Exclusive mode by RIM (Raw Input Manager) user can still open HID device interface without requesting read and write permissions and obtain HID device information via HIDClass support routines (HidD_GetXxx).
Sharing mode allows multiple applications to access the device. For example, multiple applications can access a barcode scanner to inquire about device capabilities and retrieve statistics. However, retrieving decoded data from a barcode scanner is done in Exclusive mode. Usages are defined by the USB-IF Usage Tables.
*Multiple: Sensors usages from 0x00 – 0xFF are segmented for different purposes. For example 0x10 indicates a Biometric sensor; 0x40 indicates a Light sensor. Those allocations are not contiguous. For the list of sensor usages, see USB-IF Device Class Defnitions for HID. For information about sensors usages that are supported in Windows, HID Sensors Usages.
The HID Transport Driver
The HID class driver is designed to use HID minidrivers to access a hardware input device. A HID minidriver abstracts the device-specific operation of the input devices that it supports. The HID minidriver binds its operation to the HID class driver by registering with the HID class driver. The HID class driver communicates with a HID minidriver by calling the minidriver's support routines. The HID minidriver, in turn, sends communications down the driver stack to an underlying bus or port driver.
HID Transports Supported in Windows
See this page for a list of supported HID Transports.
USB Generic HID Test in the Windows Hardware Lab Kit (HLK) covers HidUsb and HidClass drivers. There is no HLK test for third-party HID mini drivers.
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?
Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.
Выбор профиля HID
USB-HID — довольно обширный класс устройств, поэтому прежде всего придется выбрать какое именно устройство мы будем создавать.
Мы можем создать эмуляцию клавиатуры, мыши, джойстика и других устройств ввода, а можем создать свое устройство, чтобы не зависеть от довольно жестких рамок стандарта и свободно обмениваться данными с ПК.
Я расскажу как cделать Custom HID device. Это дает максимальную свободу. Чтобы не затягивать статью, постараюсь рассказать максимально кратко — описаний стандарта в сети и без меня много, но лично мне они слабо помогли, когда понадобилось решить конкретную задачу.
Структура проекта
- Папка USB-FS с библиотекой «STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver» версии 4.0.0.
- В папках Inc и Src файлы:
platform_config.h — здесь собраны определения, касающиеся конкретной платы и семейства МК
stm32_it.h, stm32_it.c — здесь определены обработчики прерываний
usb_conf.h, usb_endp.c — здесь определяются конечные точки (Endpoint), размеры и адреса их буферов, функции-обработчики
usb_desc.h, usb_desc.c — здесь собрана информаци о самом устройстве — как оно будет определяться при подключении к ПК и определены размеры и формат пакетов данных
hw_config.c — здесь собрана вся работа с отправкой данных на ПК
hw_config.h, usb_istr.h, usb_prop.h, usb_pwr.h
usb_istr.c, usb_prop.c, usb_pwr.c — нужны для работы USB-FS библиотеки, но лезть в них необязательно
Инициализация USB
Для корректной работы USB модуля важна частота работы МК. Далеко не все частоты позволяют правильно задать тактирование USB. В нашем случае используется кварцевый генератор на 8МГц и МК работает на частоте 72МГц, а USB модуль на 48МГц.
В main.c достаточно включить всего несколько строк кода
В функции Set_System() производится настройка пина подтяжки линии D+ к питанию для программного подключения/отключения устройства от ПК (в нашей плате не используется), настраивается прерывание и инициализируются светодиоды и кнопки для демонстрационного проекта.
В USB_Interrupts_Config() настраиваются прерывания в зависимости от семейства МК (поддерживаются F10x, F37x, L1x).
Функция USB_Init() запускает работу USB модуля. Если временно нужно отключить для отладки работу с USB, просто закомментируйте эту строку.
Далее в бесконечном цикле проверяется, удалось ли сконфигурировать USB модуль при подключении к ПК. Если все сработало верно и устройство успешно подключилось, ПК включен и не находится в режиме энергосбережения, то состояние будет CONFIGURED.
Далее проверяется, была ли закончена предыдущая передача данных в ПК и если да, то готовится к отправке новый пакет в функции RHIDCheckState()
Размер пакета и частота передачи
USB-HID девайс не может сам инициировать передачу, т.к. координацией шины занимается host устройство — ПК. Поэтому при подготовке USB дескриптора нашего устройства, мы пишем, как часто нужно опрашивать наше устройство. По спецификации максимальная частота опроса — 1кГц и максимальный размер передаваемого за раз пакета — 64 байта. Если этого недостаточно — придется использовать другие режимы работы — вроде USB bulk, но там уже без драйверов не обойтись.
За настройку взаимодействия с ПК отвечают 3 дескриптора:
В комментариях все довольно прозрачно. Обратите внимание на DEVICE_VER_L, DEVICE_VER_H — это константы из usb_desc.h, которые вы можете изменить для идентификации версии своего устройства.
Дескриптор конфигурации (описывает возможности устройства)Здесь стоит обратить внимание на константу wMaxPacketSize — она определяет максимальный размер пакета, которым мы будем обмениваться с ПК. Проект так настроен, чтобы при ее изменении менялись и размеры буферов. Но не забывайте, что больше 0x40 по стандарту указывать не стоит. С этой константой будьте осторожны — если передаваемый пакет будет отличаться по размеру — будут проблемы!
Следующая за ним константа с комментарием bInterval — это период опроса устройства в миллисекундах. Для нашего устройства задано 32мс.
Это самый важный дескриптор — он описывает протокол обмена и функционал устройства. Его формирование — не самая простая задача. Если допустить ошибку при формировании дескриптора — устройство перестанет работать. Формат дескриптора очень жесткий. Есть даже специальная утилита HID Descriptor tool. А в корне проекта лежит файл «RHID.hid» с описанным выше дескриптором для редактирования в этой утилите. Но если вы не понимаете, что делаете, лучше не лезть.
Для простоты я сделал две константы:
RPT3_COUNT — размер OUTPUT буфера в байтах для передачи пакета в МК (в примере — 1 байт)
RPT4_COUNT — размер INPUT буфера в байтах для передачи пакета в ПК (в примере — 4 байта)
Размер любого из этих буферов не должен превышать wMaxPacketSize. Меньше — можно.
Кстати, превратить Custom HID в другой HID девайс, например, клавиатуру или джойстик можно фактически только переписав ReportDescriptor и изменив класс и подкласс устройства в дескрипторе конфигурации.
Что такое Report
- REPORT_ID = 1 и 2 — команда МК включить/выключить LED1/LED2. Содержит поле размером 1 бит с желаемым состоянием светодиода и поддерживает отправку как методом SET_REPORT так и методом SET_FEATURE (об этом чуть позже).
- REPORT_ID = 3 — передает один байт в МК. Просто, чтобы показать, как передать данные МК. Мы будем передавать положение ползунка.
- REPORT_ID = 4 — это репорт для передачи данных ПК. Возвращает информацию о текущем состоянии светодиодов, кнопок (если они есть) и возвращает переданный в репорте с байт, чтобы показать, что данные приняты.
Цикл обмена
Массив uint8_t Buffer[RPT4_COUNT+1] определен как размер полезных данных входящего (рассматривается всегда с точки зрения хоста) пакета + байт ID. Это важно — если размер буфера будет отличаться — будут проблемы. Поэтому для изменения размеров буфера редактируйте значение константы в usb_desc.h.
В функции мы собираем данные в пакет, устанавливаем флаг PrevXferComplete = 0, говорящий о том, что данные отправляются и вызываем функциии библиотеки USB_SIL_Write и SetEPTxValid для отправки данных хосту.
Все, на этом передача данных хосту закончена.
С приемом данных немного сложнее — есть два способа послать данные девайсу — один из них заключается в использовании описанных в дескрипторе репорта возможностей устройства (Features), с соответствующими параметрами посредством функции SET_FEAUTRE. Это некоторая абстракция, для красивого управления устройством с кучей функций, чтобы можно было вызывать осмысленные функции, а не просто слать поток байт.
Второй способ — это работа с устройством как с файлом — просто записываем в него пакет как в файл. Этот метод называется SET_REPORT. На деле работает чуть-чуть медленнее.
Наше устройство поддерживает оба метода, о чем мы и сказали хосту в дескрипторе репортов.
Обработка SET_FEATURE
Данные, отправленные методом SET_FEAUTRE обрабатываются в usb_prop.c
Здесь мы проверяем первый байт в репорте и в соответствии с ним обрабатываем остаток пакета — управляем светодиодами или просто берем байт, отправленный нам хостом и кладем в пакет для последующей отправки обратно в функции RHIDCheckState.
Под Report_Buf зарезервировано wMaxPacketSize байт, чтобы влез любой пакет, который нам отправит хост.
Данные, отправленные методом SET_REPORT обрабатываются в usb_endp.c
Здесь почти то же самое, только нужно самостоятельно забрать данные вызовом USB_SIL_Read(EP1_OUT, Receive_Buffer) и в конце сообщить, что мы закончили вызовом SetEPRxStatus(ENDP1, EP_RX_VALID);
Настраивать устройство, передавать и принимать данные в пакетах нужного размера с нужной нам периодичностью мы научились.
Собираем проект и прошиваем в устройство.
Работать, это будет примерно так:
Также я написал маленькую демо-софтинку, которая автоматически определяет подключение к компу и отключение нашего девайса по его VID и PID, отображает статус — подключено/отключено индикатором рядом с чекбоксом Auto Connect
Радиокнока Send using позволяет выбрать метод отправки данных девайсу.
Report: отображает полученный от девайса пакет побайтно, начиная с ReportID.
Щелкая по светодиодам ниже — управляем светодиодами девайса. Их состояние отображает текущее состояние девайса. Считывается из репорта от девайса.
Перемещая ползунок, мы отправляем Report с и значением, соответствующим позиции ползунка. Девайс вернет это значение в 4 байте репорта.
В выпадающем комбобоксе отображаются HID девайсы, найденные в системе и если найден наш девайс, то отображается его название.
Если остались вопросы — пишите в комментариях. Постараюсь ответить. Я постарался не утопить суть в куче мелочей, чтобы сложилось общее понимание. Остальное уже можно понять, изучая проект. Но если вам нужно быстро сделать свое устройство, а лезть в дебри некогда — все, что вам нужно, я описал.
Читайте также: