HIDAPI hid_open_path() как определить, какой путь использовать

  • HIDAPI+Qt5.4+ubuntu14.04LTS + пистолет для сканирования штрих-кодов
  • Я использую HIDAPI отсюда https://github.com/signal11/hidapi

  • Это HIDAPI API http://www.signal11.us/oss/hidapi/hidapi/doxygen/html/group__API.html

  • Вопрос 1: Я могу использовать метод hid_open() с VID и PID моего пистолета для сканирования штрих-кодов, но в этом случае мое приложение не может использовать другой пистолет для сканирования штрих-кодов. Также я нашел метод hid_open_path(), но не могу определить, какой путь использовать /dev/hidraw0? Или /dev/hidraw1? или поменяется на другой пк?

  • Вопрос 2: есть ли разрешение на чтение. Когда я подключаю сканер штрих-кода к ПК, он не может читать и писать, мое решение - использовать udev, чтобы определить мои собственные правила для использования VID & PID, это действительно работает! Но это не работает для пистолета сканирования штрих-кода.

1 ответ

Решение
  1. Вы должны использовать hid_enumerate(<vid>, <pid>), который вернет связанный список hid_device_infoструктур. hid_device_info имеет переменную-член под названием path, который путь к устройству вы ищете. Путь может меняться в зависимости от компьютера или даже от того же компьютера, если у вас подключены другие устройства. Чтобы различать разные устройства, вы можете проверить их серийный номер, используя hid_get_serial_number_string функция.

  2. Проверьте разрешения на соответствующем устройстве. Я видел, как люди рекомендуют добавлять правила udev, чтобы изменить их на 666 на разных форумах (Ubuntu, Arch). Тем не менее, я думаю, что это неправильно. Вместо этого проверьте, к какой группе принадлежит устройство, и добавьте себя в эту группу. Возможно usb или же plugdev или что-то другое.

Другие вопросы по тегам