我有一个设备可以作为通过 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/