Главная arrow Программирование arrow PC arrow Библиотеки для управления устройствами USB HID Tuesday, March 28 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Библиотеки для управления устройствами USB HID Версия для печати
Написал microsin   
17.10.2011

Здесь рассмотрено ПО хоста для взаимодействия с устройствами USB HID через одну из программных библиотек. Протокол USB очень сложен, и поэтому обычной практикой работы с ним является использование готовых библиотек подпрограмм (в виде DLL или исходного кода).

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

[Краткий обзор библиотек]

Для наглядности библиотеки сведены в таблицу, далее более подробно рассмотрена каждая из библиотек.

Библиотека
Поддерживаемые OS
Автор
Доступность исходного кода
Предпочтительный язык программирования для использования в ПО хоста
Удобство использования по 5-бальной шкале
Ссылка на источник информации
HID.dll
Windows
Microsoft
нет
C++
2
MSDN
AtUsbHid.dll
Windows
Atmel
нет
C++, Java
5 doc7645.pdf
HID API
Windows, Linux, Mac OS X
signaleleven, Alan Ott
да
GCC, C++
4
hidapi
LibUSB Windows, Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X
libusb.org
да GCC, C++
4
libusb
USB HID Component for Windows C#
Windows
??
да C#
4
USB HID C#

Все примеры программ, перечисленные в таблице, Вы можете скачать по ссылке [1].

HID.dll

Пример ПО хоста (см. скриншот), которое общается с USB HID через библиткеку HID.dll, имеется в Windows DDK (см., например c:\WINDDK2003\3790.1830\src\wdm\hid\hclient\ для Windows DDK 2003). Сама HID.dll находится в папке %windir%\system32\, и всегда доступна для доступа использующих её программ.

hclient.PNG

Статью, описывающую пример, см. в [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\.

AtUsbHid.dll

Библиотека достаточно хорошо документирована, имеет простой интерфейс API для использования. Есть примеры GUI-программ, написанных на C++ и Java, а также пример консольной программы.

AVR_USB_HID_DEMO04.JPG UsbHidDemoCodeJava.PNG UsbHidDemoCodeSimple.PNG

Удобнее всего программировать в среде Visual Studio, однако если Вы умеете загружать в память библиотеки DLL и вызывать её функции, то язык и система программирования никакого значения не имеют. Демонстрационная программа ПО хоста рассчитана на подключение к USB HID, собранному на основе чипа AVR с аппаратным USB и прошитым соответствующим firmware (например, чип AT90USB162, который установлен на макетной плате AVR-USB162 или AVR-USB162MU). Обзор работы с примером можно найти в [3]. Firmware управляет светодиодами и читает состояние кнопок (светодиоды и кнопки подключены к ножкам чипа AT90USB162). С библиотекой AtUsbHid.dll необязательно использовать именно микроконтроллеры Atmel, можно управлять любыми устройствами USB HID. Достоинство AtUsbHid.dll - простота применения. Недостаток - вместе с программой нужно предоставлять библиотеку AtUsbHid.dll, а также ограниченное использование - только на операционных системах Windows. Исходный код примера ПО хоста (и скомпилированные рабочие бинарники) можно найти на сайте Atmel или скачать по ссылке [1], см. папку AtUsbHid.dll\. Код firmware USB HID (исходники и прошивки) можно найти в папке AtUsbHid.dll\firmware\AVR-USB162 и в папке AtUsbHid.dll\firmware\userial (firmware для макетных плат AVR-USB162 и userial соответственно) архива по ссылке [1]. Для указаний по компиляции и использования примеров firmware читайте соответствующие файлы readme.txt в папках AVR-USB162 и userial. Также см. на сайте Atmel апноут AVR328: USB Generic HID Implementation on megaAVR devices.

HID API

Кроссплатформенная библиотека с открытым исходным кодом, хорошо документирванная. Самый лучший пример использования (ПО хоста и firmware USB HID для микроконтроллера AT90USB162), который мне удалось найти, это проект lightpack см. [5].

lightpack-hardware.jpg lightpack-ambilight.jpg

Исходный код примера ПО хоста (и скомпилированные рабочие бинарники) можно скачать по ссылке [1], см. папку hidapi-0.5.2 и папку lightpack. Чтобы скомпилировать ПО хоста lightpack, Вам понадобится среда программирования QT, а чтобы скомпилировать firmware USB HID (для чипа AT90USB162, макетная плата AVR-USB162), понадобится пакет WinAVR. Для указаний по компиляции и использования примеров firmware читайте соответствующие файлы readme.txt.

LibUSB

Широко известная кроссплатформенная библиотека, используется во многих коммерческих продуктах. Хорошо документирована, исходный код открыт, примеры кода ПО хоста на ней найти довольно легко. На мой взгляд, самые лучшие примеры есть в составе библиотеки 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.

howto-use-libusb-CPP.PNG howto-use-libusb-cmdline.PNG

Исходный код примеров ПО хоста (и скомпилированные рабочие бинарники) можно ссылке [1], см. папки libusb\examples\hid-custom-rq\commandline, hid-custom-rq\set-led-gui, hid-data\commandline. Имеется также удобная тест-программа (папка examples\usbtool), показывающая параметры всех подключенных к компьютеру устройств USB (для которых также установлен драйвер фильтра). Код firmware USB HID (исходники и прошивки) можно найти в папках hid-custom-rq\firmware-mega, hid-custom-rq\firmware-tiny, hid-data\firmware, hid-mouse\firmware. Примеры firmware удобно запускать на макетных платах AVR-USB-MEGA16 (микроконтроллер ATmega32). Чтобы скомпилировать ПО хоста, Вам необходим компилятор GCC и набор утилит MinGW (см. [8]), или (для примера hid-custom-rq\set-led-gui) Visual Studio C++. Для указаний по компиляции и использования примеров firmware и ПО хоста читайте соответствующие файлы readme.txt, или см. информацию вики LibUSB [9].

USB HID Component for Windows C#

Библиотека с открытым исходным кодом, хорошо документированная (имеется специальный файл подсказки *.CHM), можно использовать только в среде Windows, и удобна только для программ, написанных на C#. Библиотека хороша тем, что к извлечению устройства USB и к моментам передачи данных можно привязать события программы. Библиотеку можно скачать по ссылке [1], см. папку UsbLibraryC#. Для компиляции нужен Visual Studio (хорошо подходит Visual Studio C# 2010 Express, который можно скачать и бесплатно использовать в некоммерческих целях).

UsbLibrary-C-sharp-help.PNG

[Что нужно, чтобы попробовать]

При таком разнообразии вариантов реализации обмена с устройством USB HID сначала надо определиться с платформой разработки. Например, если Вы пишете на Java, то лучше всего подойдет библиотека Atmel. Если Вы программируете на C#, то лучше выбрать компонент USB HID C#. Больше всего вариантов для выбора у разработчиков, которые программируют на Visual C++.

Затем нужно определиться с выбором устройства USB HID (если еще его у Вас нет). Дешевый и удобный вариант, для которых есть готовые примеры firmware USB HID - это макетные платы AVR-USB162, AVR-USB162MU, AVR-USB-MEGA16 (см. [3, 4]). Для заливки прошивки firmware в эти платы не нужен программатор, firmware заливается в память чипа через USB бутлоадер. Для макетных плат AVR-USB162 и AVR-USB162MU можно взять готовые примеры кода USB HID от Atmel и из библиотеки LUFA (см. [10]), а для макетной платы AVR-USB-MEGA16 - из библиотеки V-USB (см. [6]).

[Ссылки]

1. Примеры исходного кода, бинарники (.exe) и прошивки firmware, связанные с использованием описанных в статье библиотек.
2. Пример работы с USB HID из Windows DDK.
3. AVR-USB162: где найти рабочие примеры кода firmware и ПО хоста.
3. Макетные платы с чипом AT90USB162: AVR-USB162AVR-USB162MU.
4Макетная плата AVR-USB-MEGA16 (микроконтроллер ATmega32).
5. Lightpack: система AMBILIGHT на мониторе домашнего компьютера.
6. V-USB, википедия.
7. AVR-USB-MEGA16: управление устройством USB из GCC, Visual Studio CPP, VB6, Python, Delphi.
8. Разработка устройства USB - как начать работу с библиотеками AVR USB (V-USB) и libusb.
9. LibUSB wiki.
10. LUFA - бесплатная библиотека USB для микроконтроллеров Atmel AVR.

Последнее обновление ( 21.10.2011 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017