2013-05-07 105 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的行,下面的十六进制代码将成为该特定报告的端点。