2017-08-03 154 views
0

我试图使用libusb与CDC设备进行通信。我测试的代码如下所示;libusb无法在Windows上打开CDC设备,但它可以在Linux上

/* 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

您是否在Windows上安装了[某种驱动程序](http://www.libusb.org/wiki/windows_backend#DriverInstallation)? – BNT

+0

谢谢你的回复。是的,我安装了驱动程序,但问题仍然存在。除此之外,我可以从任何终端程序访问CDC设备。 Windows成功启动了该设备。 – yrgat

+0

你在什么窗口版本,你正在使用哪个编译器,你的程序的确切输出是什么?你可以尝试以管理员身份执行它吗? – BNT

回答

0

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

事实证明,libusb只适用于winUSB-Drivers。 你必须明确地将它们安装到你的设备上。对我来说最简单的方法是使用zadig安装程序(请参阅上面注释中的链接)来移除usbser驱动程序,并通过winusb one(针对此设备)交换它。 现在该设备没有被枚举为COM-Device,而是注册为libusb32-Device/libusbKDevice或者只是USB设备。

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

相关问题