Какая библиотека usb лучше всего подходит для связи с USB HID-устройствами в Windows?
Библиотека должна;
-Быть простым в использовании, и несколько строк клиентского кода должны многое сделать
-Будьте как можно более независимыми от платформы. (В случае будущих портов на другие платформы)
-Имеют привязки C++.
- будь зрелым и стабильным
Я также хотел бы получать уведомления о большинстве событий HID через обратные вызовы.
Я рассмотрел следующие варианты:
* libhid - (К сожалению?) это GPL и не может быть использовано в моем приложении.
* WDK - кажется, немного низкого уровня для моего использования. Мне не нужен такой контроль
*atusbhid - имеет соответствующий уровень абстракции, но он прочно связан с циклом обмена сообщениями Windows.
У кого-нибудь из вас есть другие альтернативы?
6 ответов
Взгляните на hidapi: это C, который отвечает на вопрос о связываниях C++ (эффективно:)), является кроссплатформенным и имеет очень разрешительную лицензию. Похоже, что нет обратных вызовов, но...
Если libhid работает для вас, то, возможно, вам нужно написать приложение (которое вы бы использовали GPL), которое использует libhid для связи с устройствами, а затем предоставляет все, что вам нужно, через TCP-соединение. Ваше реальное приложение будет подключаться через TCP, чтобы делать то, что ему нужно. Это, очевидно, станет огромным ударом по производительности.
Это приложение фактически будет "прокладкой" между libhid и вашим приложением. В этом случае прокладка будет существовать по юридическим, а не техническим причинам.
Я не говорю, что это хорошая идея, просто это идея.
Подумайте о том, чтобы кататься самостоятельно Вы будете иметь полный контроль над интерфейсом, уровнем независимости платформы и тому подобным. Несмотря на то, что проект является лицензией GPL, вы можете использовать его как собственный рецепт и как тестовую площадку для поиска собственных проблем.
Пакет программного обеспечения HIDmaker от Trace Systems является опцией.
Плюсы: - Простота в использовании (отлично подходит для обучения программированию для USB HID) - Генерирует исходный код рабочих приложений в различных форматах проекта (Visual Studio, Borland) - Генерирует стабильный пример кода как для хоста, так и для устройства (стабильный в моем опыте) - Высокая производительность (если можно сказать, что HID вообще имеет высокую производительность)
Минусы: - Работает только в Microsoft Windows - Используется собственная библиотека USB, я думаю (ActiveX)
Существует несколько драйверов USB HID Host для Windows. Простая в использовании библиотека динамических ссылок от http://embedded24.net/. Также есть несколько примеров приложений для Visual Studio 2010 (C++, C# и VB).
Посмотрите на этот код:
http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c
Это дает вам несколько простых классов для общения с устройством HID. Это сводится к тому, чтобы получить псевдоним для устройства (что-то вроде \?\HID#Vid_nnnn&Pid_nnn#.......) и использовать CreateFile, чтобы открыть его. Вы можете получить псевдоним устройства в разделе HKML\SYSTEM\CCS\Control\DeviceClasses{4d1e55...}\
Vid и Pid - это идентификатор поставщика и идентификатор продукта устройства (проверьте диспетчер устройств).