Всі приклади програм, перераховані в таблиці, Ви можете завантажити за посиланням [1].
Статтю, що описує приклад, див. В [2]. Для того, щоб скомпілювати приклад, Вам потрібен Windows DDK будь-якої версії. Писати програму з використанням прикладу найзручніше в Visual Studio C ++, проте якщо Ви вмієте завантажувати в пам'ять бібліотеки DLL і викликати її функції, то мова і система програмування ніякого значення не мають. Приклад ПО хоста не прив'язаний до конкретного USB HID пристрою, просто надає інтерфейс для отримання інформації по підключеним пристроям USB HID. Гідність використання HID.dll в тому, що на платформі Windows це найбільш "прямий" метод отримання доступу до пристроїв USB HID, тоді як інші бібліотеки просто є обгортками над викликами HID.dll. Недолік бібліотеки - незручний інтерфейс API, відсутність вихідного коду, обмежене використання - тільки на операційних системах Windows. Вихідний код прикладу можна взяти в Windows DDK або завантажити за посиланням [1], див. Папку HID.dll \ hclient \.
Бібліотека досить добре документована, має простий інтерфейс API для використання. Є приклади GUI-програм, написаних на C ++ і Java, а також приклад консольної програми.
Кроссплатформенная бібліотека з відкритим вихідним кодом, добре документована. Найкращий приклад використання (ПО хоста і firmware USB HID для мікроконтролера AT90USB162), який мені вдалося знайти, це проект lightpack см. [5].
Широко відома кроссплатформенная бібліотека, використовується в багатьох комерційних продуктах. Добре документована, вихідний код відкритий, приклади коду ПО хоста на ній знайти досить легко. На мій погляд, найкращі приклади є в складі бібліотеки V-USB (див. [6]), причому приклади ПО хоста libusb пов'язані з firmware пристрою USB HID (на бібліотеці V-USB). Т. е. У Вас є готові приклади ПО хоста і готові приклади пристроїв USB HID, які обмінюються з цим ПО хоста даними. Пристрої USB HID в бібліотеці V-USB розраховані на звичайні чіпи AVR, які не мають на борту апаратного контролера USB (т. Е. Протокол USB обробляється всередині AVR чіпа програмно), проте можна написати програму, яка буде працювати з будь-яким пристроєм USB. Приклади ПО хоста розраховані на GCC (мова C) або Visual Studio (мова C ++), проте якщо Ви знаєте, як завантажувати в пам'ять DLL і викликати її функції, то немає проблем перенести приклади на будь-яку іншу середу програмування (див. [7]) . Недолік бібліотеки libusb в тому, що для ПО хоста, написаної на ній, під Windows потрібна установка самої бібліотеки, а також потрібна прив'язка до пристрою USB HID спеціального драйвера фільтра (filter driver). Цей драйвер фільтра встановлюється за допомогою спеціальної утиліти, що входить до складу пакету бібліотеки libusb.
[USB HID Component for Windows C #]
Див. Також опис HID USB Driver / Library for .Net / C # (DLL) [12] для використання в проектах Visual Studio. DLL написана на C #, легко інтегрується в проекти Visual Studio, і має простий і зрозумілий програмний інтерфейс.
[JEDI Visual Component Library (JVCL)]
Бібліотека візуальних і невізуальних компонентів для популярної середовища розробки Delphi. Користуватися бібліотекою досить просто, хороший приклад використання - конфігуратор пристрою USB HID для управління частотою обертання вентиляторів системного блоку в залежності від температури [15].
Тут наведено лише короткий огляд класів і компонентів JVCL, що відноситься до управління пристроями USB HID.
TJvHidDeviceController надає доступ списку USB контролерів, відстежує зміну стану контролерів, підключення / відключення пристроїв.
TJvHidDeviceController: OnDeviceChange - обробник підключення / відключення пристроїв.
TJvHidDeviceController: OnEnumerate - отримання списку пристроїв.
TJvHidDevice - надає доступ до кінцевого USB пристрою. У конфігураторі використовуються тільки два методи для отримання і відправки пакета даних.
TJvHidDevice: GetFeature - отримання пакету даних (прийом даних від пристрою).
TJvHidDevice: SetFeature - відправка пакету даних (передача даних в пристрій).
Приклад роботи з пристроєм HID (HIDSerialMonitor) призначений для плат Arduino і USnooBie. У репозиторії на GitHub [16] можна знайти як готові скомпільовані бінарники для Linux (32-біт, 64-біт) і для Windows, так і вихідний код на мові Processing. Код використовує виклики бібліотеки hidapi. Скомпільовані програми і окремі програми не вимагають ніякого додаткового програмного забезпечення.
Програма HIDSerialMonitor потрібна як альтернатива Serial Monitor в середовищі розробки Arduino, це дозволяє звільнити порт UART мікроконтролера.
Щоб скомпілювати код самостійно, Вам потрібно встановити Processing (див. Сайт processing.org), і скопіювати бібліотеки (G4P і hiddapi) в папку бібліотек Processing. Потім завантажте HIDSerialMonitor.pde в середовищі розробки Processing і натисніть "Run".
[Що потрібно, щоб спробувати]
При такому розмаїтті варіантів реалізації обміну з пристроєм USB HID спочатку треба визначитися з платформою розробки. Наприклад, якщо Ви пишете на Java, то найкраще підійде бібліотека Atmel. Якщо Ви програмуєте на C #, то краще вибрати компонент USB HID C #. Найбільше варіантів для вибору у розробників, які програмують на Visual C ++.
Потім потрібно визначитися з вибором пристрою USB HID (якщо ще його у Вас немає). Дешевий і зручний варіант, для яких є готові приклади firmware USB HID - це макетні плати AVR-USB162. AVR-USB162MU. AVR-USB-MEGA16 (див. [4]). Для заливки прошивки firmware в ці плати не потрібен програматор, firmware заливається в пам'ять чіпа через USB бутлоадер. Для макетних плат AVR-USB162 і AVR-USB162MU можна взяти готові приклади коду USB HID від Atmel і з бібліотеки LUFA (див. [10]), а для макетної плати AVR-USB-MEGA16 - з бібліотеки V-USB (див. [ 6]).