c++ - 使用 Qt 和 libusb 将 USB 序列号与端口名称匹配

标签 c++ qt usbserial

我有一个设备可以作为通过 USB 连接的串行端口。我有一个通过 QSerialPort 与设备交互的类。很快我就会有多个这样的设备,程序将需要可靠地区分它们以将配置的值分配给类的实例。

Qt 通过 QSerialPortInfo 帮助对象的 portName 字段来识别串行设备。此名称源自/dev/路径(例如 /dev/tty.foo42 是端口名称 “foo42”)并且此路径不会与特定设备保持关联在重新启动或部署到不同的机器。但是,通过 libusb 我可以获得一个序列号,该序列号在重新启动和不同的机器上都是稳定的。

我仍然缺少的是一种将序列号(可以预先识别并记录在配置文件中)与端口名称相匹配的方法,该端口名称可用于打开 QSerialPort .目前正在部署到 MacOS,但将来我们可能希望部署到 Linux。

搜索现有问题大多会找到配置 Linux 系统以始终为特定设备分配特定开发路径的方法。涉及配置操作系统的解决方案是可以接受的,但应用程序可以在没有操作系统的情况下做的事情是更可取的。 Mac 特定的解决方案是可以接受的,但最好是也适用于 Linux 的解决方案。

最佳答案

QSerialPortInfo::serialNumber() 的文档(Qt 5.3 中的新功能)听起来像您所追求的:

QString QSerialPortInfo::serialNumber() const

Returns the serial number string of the serial port, if available; otherwise returns an empty string.

Note: The serial number may include letters.

关于c++ - 使用 Qt 和 libusb 将 USB 序列号与端口名称匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24249737/

相关文章:

c++ - 使用数据库自​​动集成测试 C++ 应用程序

c++ - 在调用 exec 之前更新 Qt Images 不起作用

java - 如何在Android上读取USB设备的数据?

android - 从医疗设备 : free style libre device reader by otg cable to android app 获取数据

c++ - Gnu Make 的递归性和 friend

c++ - 空间 vector 、颜色 vector

c++ - 删除 C++ 中的枚举可见性

qt - 为什么我没有 Qt Gui Application 选项?

c++ - Qt/C++ 中的反射

windows - 用于 Win10 驱动程序签名的 inf2cat