Бібліотеки для управління пристроями usb hid, pc, programming

Всі приклади програм, перераховані в таблиці, Ви можете завантажити за посиланням [1].

Бібліотеки для управління пристроями usb hid, pc, programming

Статтю, що описує приклад, див. В [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 \.

Бібліотеки для управління пристроями usb hid, pc, programming

Бібліотека досить добре документована, має простий інтерфейс API для використання. Є приклади GUI-програм, написаних на C ++ і Java, а також приклад консольної програми.

Бібліотеки для управління пристроями usb hid, pc, programming

Бібліотеки для управління пристроями usb hid, pc, programming

Бібліотеки для управління пристроями usb hid, pc, programming

Кроссплатформенная бібліотека з відкритим вихідним кодом, добре документована. Найкращий приклад використання (ПО хоста і firmware USB HID для мікроконтролера AT90USB162), який мені вдалося знайти, це проект lightpack см. [5].

Бібліотеки для управління пристроями usb hid, pc, programming

Бібліотеки для управління пристроями usb hid, pc, programming

Широко відома кроссплатформенная бібліотека, використовується в багатьох комерційних продуктах. Добре документована, вихідний код відкритий, приклади коду ПО хоста на ній знайти досить легко. На мій погляд, найкращі приклади є в складі бібліотеки 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, pc, programming

[USB HID Component for Windows C #]

Бібліотеки для управління пристроями usb hid, pc, programming

Див. Також опис HID USB Driver / Library for .Net / C # (DLL) [12] для використання в проектах Visual Studio. DLL написана на C #, легко інтегрується в проекти Visual Studio, і має простий і зрозумілий програмний інтерфейс.

[JEDI Visual Component Library (JVCL)]

Бібліотека візуальних і невізуальних компонентів для популярної середовища розробки Delphi. Користуватися бібліотекою досить просто, хороший приклад використання - конфігуратор пристрою USB HID для управління частотою обертання вентиляторів системного блоку в залежності від температури [15].

Бібліотеки для управління пристроями usb hid, pc, programming

Тут наведено лише короткий огляд класів і компонентів 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. Скомпільовані програми і окремі програми не вимагають ніякого додаткового програмного забезпечення.

Бібліотеки для управління пристроями usb hid, pc, programming

Бібліотеки для управління пристроями usb hid, pc, programming

Програма 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]).

Схожі статті