是否有bash命令,程序或libusb函数(虽然我没有找到),它指示usb设备的OUT或IN端点是什么?
例如,libusb_interface_descriptor(来自libusb1.0库)的bNumEndpoints向我显示我的USB驱动器有3个端点,但我怎么知道它们的数字是多少?
答案 0 :(得分:9)
声明设备后,运行此命令(其中$代表终端入口点):
$ sudo lsusb -v -d 16c0:05df
其中16c0:05df是您的供应商和产品ID,用冒号分隔。 (如果您不知道这些,请键入lsusb并通过拔出并重新运行lsusb来确定哪个设备是您的设备)
如果您感到困惑,请使用lsusb手册页:
http://linux.die.net/man/8/lsusb
然后,一旦您的描述出现,找到标记为bEndpointAddress的行,后面的十六进制代码将是该特定报告的终点。
答案 1 :(得分:5)
我终于在lubusb-1.0中找到了答案。 In实际上不是一个函数,而是一个struct字段:
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。