首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libusb-1.0接收HID报告?

如何使用libusb-1.0接收HID报告?
EN

Stack Overflow用户
提问于 2011-01-31 02:33:26
回答 3查看 11.2K关注 1票数 4

我有一个USB HID天平,我需要从那里获取称重报告。在Linux上,我可以通过一次从/dev/hidraw#读取7个字节来做到这一点,但是我希望使用libusb-1.0获得相同的信息。

即使我得到了一些非空字节,我也会得到错误-9:LIBUSB_ERROR_PIPE

我正在尝试使用如下的控制转移:

代码语言:javascript
复制
#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]);
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-06 01:13:45

使用libusb-win -从USB HID卡读卡器读取数据的示例

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

票数 3
EN

Stack Overflow用户

发布于 2011-02-04 23:58:39

HID使用中断传输AFAIK。你需要重写你的代码来使用它们。看看塔式描述符--它们告诉你要使用哪个接口。

也就是说,我认为在这种情况下使用/dev/hdiraw#要比使用libusb容易得多。

票数 3
EN

Stack Overflow用户

发布于 2012-02-10 13:44:11

尝试为wValue使用另一个值(例如,0x0300)。

还要检查bmRequestTypebRequest参数:bmRequestType必须等于0xA1bRequest - 0x01

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4844692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档