Сопоставьте серийный номер USB с именем порта с помощью Qt и libusb

У меня есть устройство, которое действует как последовательный порт, подключенный через USB. У меня есть класс, который взаимодействует с устройством через QSerialPort, Вскоре у меня будет несколько таких устройств, и программа должна будет надежно различать их, чтобы назначать настроенные значения экземплярам класса.

Qt идентифицирует последовательные устройства по portName поле QSerialPortInfo вспомогательный объект. Это имя происходит от / dev / path (например, /dev/tty.foo42 это имя порта "foo42") и этот путь не остается связанным с конкретным устройством при перезагрузке или развертывании на другом компьютере. Тем не менее, через libusb я могу получить серийный номер, который стабилен при перезагрузке и на разных машинах.

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

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

1

Решение

Документация для QSerialPortInfo :: SERIALNUMBER () (новое в Qt 5.3) звучит так, как вы хотите:

QString QSerialPortInfo :: serialNumber () const

Возвращает строку серийного номера последовательного порта, если доступно;
в противном случае возвращает пустую строку.

Примечание. Серийный номер может содержать буквы.

1

Другие решения


По вопросам рекламы [email protected]