是否有一個bash命令,一個程序或一個libusb函數(雖然我沒有找到一個),它指示我什麼是一個USB設備的OUT或IN端點?知道一個USB設備的端點
例如,libusb_interface_descriptor的bNumEndpoints(來自libusb1.0庫)顯示我的usb驅動器有3個端點,但我怎麼知道他們的idnumber是什麼?
是否有一個bash命令,一個程序或一個libusb函數(雖然我沒有找到一個),它指示我什麼是一個USB設備的OUT或IN端點?知道一個USB設備的端點
例如,libusb_interface_descriptor的bNumEndpoints(來自libusb1.0庫)顯示我的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。
你都聲稱該設備後,運行這個(其中$表示終端入口點):
$ sudo lsusb -v -d 16c0:05df
其中16c0:05df是由冒號分隔您的供應商和產品ID。 (如果你不知道這些,類型和的lsusb找出哪些設備是你拔下並重新運行的lsusb)
如果你感到困惑的使用人的lsusb頁:
http://linux.die.net/man/8/lsusb
然後一旦你的描述出現了,找到標記爲bEndpointAddress的行,下面的十六進制代碼將成爲該特定報告的端點。