将USB serial#与端口名称与Qt和libusb匹配

时间:2014-06-16 18:15:54

标签: c++ qt usbserial

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

Qt通过portName辅助对象的QSerialPortInfo字段识别串行设备。此名称派生自/ dev / path(例如/dev/tty.foo42是端口名称"foo42"),并且此路径在重新引导或部署到其他计算机时不会与特定设备保持关联。但是,通过libusb我可以得到一个序列号,它在重新启动和不同的机器上都是稳定的。

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

搜索现有问题主要是为了配置Linux系统以始终为特定设备分配特定的dev路径。涉及配置操作系统的解决方案是可以接受的,但应用程序可以在没有这种情况下执行的操作更可取。 Mac特定的解决方案是可以接受的,但在Linux上也适用的东西更可取。

1 个答案:

答案 0 :(得分:1)

QSerialPortInfo::serialNumber()的文档(Qt 5.3中的新内容)听起来就像你之后的那样:

  

QString QSerialPortInfo :: serialNumber()const

     

返回串口的序列号字符串(如果有);   否则返回一个空字符串。

     

注意:序列号可能包含字母。