usbデバイスのOUTまたはINエンドポイントを教えてくれるbashコマンド、プログラムまたはlibusb関数がありますか(私は見つけませんでしたが)?usbデバイスのエンドポイントを知っている
たとえば、libusb_interface_descriptor(libusb1.0ライブラリ)のbNumEndpointsは私のUSBドライブに3つのエンドポイントがあることを示していますが、どのようにIDNumberがわかるでしょうか?
usbデバイスのOUTまたはINエンドポイントを教えてくれるbashコマンド、プログラムまたはlibusb関数がありますか(私は見つけませんでしたが)?usbデバイスのエンドポイントを知っている
たとえば、libusb_interface_descriptor(libusb1.0ライブラリ)のbNumEndpointsは私のUSBドライブに3つのエンドポイントがあることを示していますが、どのようにIDNumberがわかるでしょうか?
私は最終的に答えをlubusb-1.0で見つけました。
uint8_t libusb_endpoint_descriptor :: bEndpointAddress
この記述子によって記述されるエンドポイントのアドレス:では機能が、構造体のフィールドは、実際にはありませんでした。
ビット0:3はエンドポイント番号です。ビット4:6は予約されています。ビット7 は方向を示します。libusb_endpoint_directionを参照してください。 USBドライブのための各インタフェースに対して
、私は可能なエンドポイントを表示するには、これらの行を書かなければならなかった:
cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<endl;
for(int k=0; k<(int)interdesc->bNumEndpoints; k++) {
epdesc = &interdesc->endpoint[k];
cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<endl;
cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<endl;
}
epdescがlibusb_endpoint_descriptorで、interdescがlibusb_interface_descriptorです。 ($は端末エントリ・ポイントを表して)あなたは、デバイスを主張した後
、これを実行します。
16c0$ sudo lsusb -v -d 16c0:05df
:05dfは、コロンで区切られたベンダーと製品IDです。 (あなたがこれらのタイプのlsusbがを知っているし、lsusbがを抜いて再実行することにより、あなた次第ですどのデバイス把握していない場合)
あなたが混乱し、使用を取得する場合lsusbがのmanページ:
http://linux.die.net/man/8/lsusb
はその後説明が表示されたら、bEndpointAddressというラベルの付いた行を探し、続く16進コードがその特定のレポートのエンドポイントになります。