2013-05-07 106 views
6

是否有一個bash命令,一個程序或一個libusb函數(雖然我沒有找到一個),它指示我什麼是一個USB設備的OUT或IN端點?知道一個USB設備的端點

例如,libusb_interface_descriptor的bNumEndpoints(來自libusb1.0庫)顯示我的usb驅動器有3個端點,但我怎麼知道他們的idnumber是什麼?

回答

4

我終於在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。

8

你都聲稱該設備後,運行這個(其中$表示終端入口點):

$ sudo lsusb -v -d 16c0:05df 

其中16c0:05df是由冒號分隔您的供應商和產品ID。 (如果你不知道這些,類型和的lsusb找出哪些設備是你拔下並重新運行的lsusb)

如果你感到困惑的使用人的lsusb頁:

http://linux.die.net/man/8/lsusb

然後一旦你的描述出現了,找到標記爲bEndpointAddress的行,下面的十六進制代碼將成爲該特定報告的端點。