我正在尝试使用libusb与CDC设备进行通信。我测试的代码如下所示;
/* Initialize libusb
*/
rc = libusb_init(NULL);
if (rc < 0) {
fprintf(stderr, "Error initializing libusb: %s\n", libusb_error_name(rc));
exit(1);
}
/* Set debugging output to max level.
*/
libusb_set_debug(NULL, 3);
/* Look for a specific device and open it.
*/
devh = libusb_open_device_with_vid_pid(NULL, VENDOR_ID, PRODUCT_ID);
if (!devh) {
fprintf(stderr, "Error finding USB device\n");
goto out;
}
不是:我从https://github.com/tytouf/libusb-cdc-example/blob/master/cdc_example.c
获取代码我为windows和linux构建了项目。在linux中,程序按预期工作。设备已成功打开。但是在windows中,libusb无法打开设备。始终返回错误“UNKNOWN_ERROR”(错误代码为0xFFFFFFFb)
可能是什么错误?
答案 0 :(得分:0)
我今天遇到了同样的问题(只有Windows)。
事实证明,libusb仅适用于winUSB-Drivers。 您必须明确地将它们安装到您的设备上。对我来说最简单的方法是使用zadig安装程序(参见上面评论中的链接中的链接)来删除usbser驱动程序并通过winusb交换它(对于这一个设备)。 现在设备没有被枚举为COM-Device,但是注册为libusb32-Device / libusbKDevice或者只是USB-Device。
但我可以在我的主机应用程序中打开它。