Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将USB串行#与端口名与Qt和libusb匹配_C++_Qt_Usbserial - Fatal编程技术网

C++ 将USB串行#与端口名与Qt和libusb匹配

C++ 将USB串行#与端口名与Qt和libusb匹配,c++,qt,usbserial,C++,Qt,Usbserial,我有一个通过USB连接的串行端口。我有一个通过QSerialPort与设备接口的类。很快我将拥有多个这样的设备,程序将需要可靠地区分它们,以便将配置的值分配给类的实例 Qt通过QSerialPortInfohelper对象的portName字段标识串行设备。此名称源自/dev/路径(例如,/dev/tty.foo42是端口名“foo42”),并且此路径在重新启动或部署到其他计算机时不会与特定设备保持关联。然而,通过libusb,我可以得到一个序列号,它在重启和不同的机器上都是稳定的 我仍然缺少一

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

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

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

搜索现有问题通常会找到一些方法,将Linux系统配置为始终为特定设备分配特定的开发路径。一个涉及配置操作系统的解决方案是可以接受的,但是应用程序不需要它就可以做的事情是更好的。特定于Mac的解决方案是可以接受的,但同样适用于Linux的解决方案更可取。

的文档(Qt 5.3中新增的)听起来像是您想要的:

QString QSerialPortInfo::serialNumber()常量

返回串行端口的序列号字符串(如果可用); 否则返回一个空字符串

注:序列号可能包括字母


你是否熟悉
/udev/rules
(我不确定这是否是你所需要的)?@Gluttton我在问这个问题之前的搜索过程中看到了这个路径名,但我不熟悉。你是否尝试过QSerialPortInfo::serialNumber()?@MrEricSir在Qt5.3中介绍的。我一直在5.2工作。我试过之后会再评论。@Ericssir先生是的,这正是我需要的。张贴作为答案,并收集您的赏金。