2013-05-07 3 views
6

Есть ли команда bash, программа или функция libusb (хотя я ее не нашел), которая указывает мне, какие конечные точки OUT или IN устройства USB?знать конечную точку устройства USB

Например, bNumEndpoints библиотеки libusb_interface_descriptor (из библиотеки 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 ваши поставщиков и продуктов Идентификаторы, разделенные двоеточием. (Если вы не знаете, эти, типа lsusb и выяснить, какое устройство ваши отсоединив и повторный запуск lsusb)

Если вы запутались использовать страницу lsusb человек:

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

Тогда как только ваше описание появится, найдите строку с надписью bEndpointAddress, а шестнадцатеричный код будет конечной точкой для этого конкретного отчета.

Смежные вопросы