我有一个C++代码中的LibUSB示例,我尝试连接STMicroelectronics Virtual COM Port
,但无法连接,即使我有正确的Vendor ID
和Product ID
但是如果我使用LibUSB示例连接STMicroelectronics STLINK-V2
,那么我可以连接。
问题:
那么为什么LibUSB不能用LibUSB连接到STMicroelectronics Virtual COM Port
,但我可以在STMicroelectronics STLINK-V2
连接。
当我运行这个代码片段时,device_handle
返回NULL
,因为当vendorID = 1155, productID = 22336
时libusb
无法连接。这些数字是针对STMicroelectronics Virtual COM Port
的。
device_handle = libusb_open_device_with_vid_pid(ctx, vendorID, productID);
更新日期:
我的目标是将PC与USB设备连接,以便从该USB设备传输和接收数据。
我的操作系统是Windows 11,我的USB设备没有问题。我可以用QT C++连接它,并向它传输数据。但似乎不能用libusb。
更新2:
我的USB设备是CDC -通信设备类。
1条答案
按热度按时间elcex8rz1#
在Windows上,libusb不能连接到任何USB设备或接口;它只能连接到具有特定驱动程序的USB接口,该驱动程序支持libusb所需的原始USB访问。
您的虚拟串行端口设备很可能使用不同的驱动程序,如usbser.sys。因此,您无法使用libusb连接到该设备。但是,您可以使用Windows API中的标准串行端口函数连接到该设备,具体如下:创建文件、写入文件、读取文件、关闭文件、设置通信超时、设置通信状态。