Как я могу получить HID отчеты, используя libusb-1.0? - PullRequest
4 голосов
/ 30 января 2011

У меня есть USB HID весы, которые мне нужны для получения отчетов о взвешивании.Я могу сделать это в Linux, читая 7 байтов за раз из /dev/hidraw#, но я хотел бы получить ту же информацию, используя libusb-1.0.

Даже когда я получаю некоторые ненулевые байты, Я получаю ошибку -9: LIBUSB_ERROR_PIPE

Я пытаюсь использовать передачу управления следующим образом:

#define WEIGH_REPORT_SIZE 7

    /*
     * Open a handle to the found scale
     */
    libusb_open(dev, &handle);
#ifdef __linux__
    libusb_detach_kernel_driver(handle, 0);
#endif
    libusb_claim_interface(handle, 0);

    /*
     * Try to transfer data about status
     *
     */
    unsigned char data[WEIGH_REPORT_SIZE];
    unsigned int len = libusb_control_transfer(
        handle,
        LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_CLASS |
            LIBUSB_RECIPIENT_INTERFACE,
        HID_REPORT_GET,
        //wValue => hid report, no report ID
        0x0100,
        0x00,   //windex => interface 0
        data,
        WEIGH_REPORT_SIZE,    //wLength
        10000 //timeout => 10 sec
        );
    int i;
    printf("Got %d bytes from control transfer:\n", len);
    for(i = 0; i < WEIGH_REPORT_SIZE; i++) {
        printf("%x\n", data[i]);
    }

Ответы [ 3 ]

3 голосов
/ 05 февраля 2011

Пример чтения с устройства чтения карт USB HID с помощью libusb-win -

http://rowsandcolumns.blogspot.com/2011/02/read-from-magtek-card-swipe-reader-in.html

2 голосов
/ 04 февраля 2011

HID использует прерывание передачи AFAIK.Вы должны переписать свой код, чтобы использовать их.И взгляните на эти дескрипторы - они сообщают вам, какой интерфейс использовать.

Тем не менее я считаю, что гораздо проще использовать / dev / hdiraw ​​#, чем libusb в в этом случае.*

1 голос
/ 10 февраля 2012

Попробуйте использовать другое значение для wValue (например, 0x0300).

Также проверьте параметры bmRequestType и bRequest: bmRequestType должно быть равно 0xA1, bRequest & mdash; 0x01.

...