libusb无法在Windows上打开CDC设备,但它可以在Linux上打开

时间:2017-08-03 07:04:22

标签: c linux windows libusb

我正在尝试使用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)

可能是什么错误?

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题(只有Windows)。

事实证明,libusb仅适用于winUSB-Drivers。 您必须明确地将它们安装到您的设备上。对我来说最简单的方法是使用zadig安装程序(参见上面评论中的链接中的链接)来删除usbser驱动程序并通过winusb交换它(对于这一个设备)。 现在设备没有被枚举为COM-Device,但是注册为libusb32-Device / libusbKDevice或者只是USB-Device。

但我可以在我的主机应用程序中打开它。