2017-08-03 2 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; 
} 

ない:私は、私はWindowsとLinuxの両方のためのプロジェクトを構築しhttps://github.com/tytouf/libusb-cdc-example/blob/master/cdc_example.c

からコードを取ります。 linuxでは、プログラムは期待どおりに動作しました。デバイスが正常に開かれました。しかし、Windowsでは、libusbはデバイスを開くことができません。エラー「UNKNOWN_ERROR」を返します(エラーコードは0xFFFFFFFbです)

何が原因の可能性がありますか?

+0

Windowsに[何らかの種類のドライバ](http://www.libusb.org/wiki/windows_backend#DriverInstallation)をインストールしましたか? – BNT

+0

お返事ありがとうございます。はい、私はドライバをインストールしますが、問題はまだ存在します。さらに、私は任意の端末プログラムからCDCデバイスにアクセスできます。 Windowsが正常にデバイスを登録します。 – yrgat

+0

あなたはどのWindowsバージョンを使用していますか?使用しているコンパイラとプログラムの正確な出力は?あなたは管理者としてそれを実行しようとすることができますか? – BNT

答えて

0

今日は同じ問題が発生しました(ウィンドウのみ)。

libusbはwinUSB-Driversでのみ動作することが判明しました。 デバイスに明示的にインストールする必要があります。私にとって最も簡単なのは、zadigインストーラー(上記のリンクのリンクを参照)を使用してusbserドライバーを削除し、winusbドライバーをこのデバイスと交換することでした。 デバイスはCOMデバイスとして列挙されませんが、libusb32-Device/libusbKDeviceまたはUSB-Deviceとして登録されます。

しかし、私はそれを私のホストアプリケーションで開くことができます。

関連する問題