Есть ли библиотека USB кросс-платформенной платформы С++?

Я (собираюсь) написать приложение в Qt, которое будет работать на 3 основных операционных системах (Windows, Linux и Mac). Одной из особенностей этого приложения является то, что ему нужно USB, чтобы поговорить с частью пользовательского внешнего оборудования. Доступна ли кросс-платформенная библиотека USB?

Ответ 1

Попробуйте libusb.

Поддерживаемые операционные системы: Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X (и Windows, через проект libusb-win32).

Но вы должны заметить, что он использует драйвер tt > kernel mode в Windows, который не сертифицирован WHQL, и это может быть проблемой в 64-разрядных Windows 7 и Windows Server 2008 R2. К сожалению, версия 1.2.0.0 libusb0.sys имеет цифровую подпись.

Ответ 2

Я бы просто хотел обновить этот пост для всех, кто возвращается к нему в настоящее время...

Libusb (версия 0.1) с тех пор устарел. Современный стандарт - использовать libusb-1.0 или libusbx.

Лично я считаю, что есть много причин использовать libusbx. Это было написано разочарованными разработчиками libusb-0.1, которые хотели более частый цикл обновления и лучшую систему обслуживания ошибок.

Мои причины для предложения libusbx заключаются в следующем:

  • не требует доступа к sudo
  • работал намного лучше для меня из коробки с чтением входящих сообщений
  • улучшенная поддержка и более частые ответы на ошибки/проблемы.
  • асинхронная и синхронная поддержка отправки/получения сообщений

Предоставлено, libusb-1.0 поддерживает отчеты async/sync... но философия libusbx гораздо привлекательнее, а документация лучше.

Итак, это полностью зависит от вас, если вы или кто бы еще хотел узнать больше о библиотеках, историю очень легко найти в Интернете. Вы также можете увидеть этот вопрос стека для получения дополнительной информации о ближайшем предмете.