gpt4 book ai didi

qt - QSerialPortInfo : Finding the USB hardware location of a virtual serial Port

转载 作者:行者123 更新时间:2023-12-04 13:26:04 31 4
gpt4 key购买 nike

我有一个 USB 集线器芯片,在它的一个端口上连接了一个微 Controller 。

我能够使用 QSerialPortInfo/QSerialPort 枚举微 Controller 并与之通信。我的问题是,我必须判断通用 USB 设备是否连接到与我的微 Controller 相同的 USB 集线器。

这应该很容易,我可以知道一般USB设备的硬件位置,比如“Port_#0001.Hub_#0010”,所以如果Hub_#号与微 Controller 连接的位置相同,我可以知道这是它们所连接的同一个集线器。

问题是 QSerialPortInfo.systemLocation() 返回 "\.\COM31" 字符串,而不是像 "Port_#0002.Hub_#0010"这样的字符串。

如何获取QSerialPortInfo/QSerialPort属于哪个USB硬件路径?

附加信息:

Windows 7、Qt 5.3、C++11

QSerialPortInfo 返回信息:

QSerialPortInfo.portName() == "COM31"
QSerialPortInfo.description() == "LPC USB VCom Port"
QSerialPortInfo.serialNumber() == "" // (Empty string)

虽然 Windows 设备管理器正确显示了真正的 USB:(抱歉,还不能发布图像)

DeviceManager > Ports(COM & LPT) > LPC USB VCom Port (COM31)

属性 > 常规 > 位置:Port_#0002.Hub_#0010

我如何从我的 Qt 代码访问这些信息?

最佳答案

好吧,managed to get 正在运行,但它不是所需的解决方案:我使用 SetupDiGetClassDevs windows api 调用获取特定 GUID 的所有设备,然后使用 SetupDiGetDeviceRegistryProperty winApi 获取属性,直到找到 MCU 所在的特定端口,并使用该端口名称初始化 QSerialPort。然后属性 SPDRP_LOCATION_PATHSSPDRP_LOCATION_INFORMATION 提供可用于检测通用 USB 设备是否在同一集线器上的信息。

问题是,这是一个“丢弃 Qt 提供的高级 API 并开始摆弄 winApi”的解决方案。我宁愿避免这种情况。如果有更多类似 Qt 且不太直接依赖 winApi 的解决方案,我们将不胜感激。

关于qt - QSerialPortInfo : Finding the USB hardware location of a virtual serial Port,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659700/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com