2017-08-03 178 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設備。

但我可以在我的主機應用程序中打開它。

相關問題