C libusb正在抛出libusb\u错误\u在libusb\u bulk\u transfer()上找不到

C libusb正在抛出libusb\u错误\u在libusb\u bulk\u transfer()上找不到,c,libusb,C,Libusb,我的问题是libusb无法传输大量数据来读取键盘输入。代码如下: #include <stdio.h> #include <libusb-1.0/libusb.h> int main(void) { libusb_init(NULL); libusb_device **list; libusb_device *found = NULL; ssize_t cnt = libusb_get_device_list(NULL, &l

我的问题是libusb无法传输大量数据来读取键盘输入。代码如下:

#include <stdio.h>
#include <libusb-1.0/libusb.h>

int main(void)
{

    libusb_init(NULL);

    libusb_device **list;
    libusb_device *found = NULL;
    ssize_t cnt = libusb_get_device_list(NULL, &list);
    ssize_t i = 0;

    struct libusb_device_descriptor desc;
    libusb_device_handle *h;

    unsigned char strDesc[128];

    for (i = 0; i < cnt; i++) {
        libusb_device *device = list[i];
        libusb_get_device_descriptor(device, &desc);
        if (desc.idProduct == 0x203) {
            libusb_open(device, &h);
            libusb_get_string_descriptor_ascii(h, desc.iProduct, strDesc, 128);
            printf("=== %s found in host ===\n", strDesc);

            found = device;

            break;
        }
    }

    libusb_device_handle *handle;
    libusb_open(found, &handle);

    unsigned char data[16];
    int act_len;

    libusb_get_device_descriptor(found, &desc);

    int r = libusb_bulk_transfer(handle, LIBUSB_ENDPOINT_IN, data, sizeof(data), &act_len, 0);
    const char *err = libusb_error_name(r);
    printf("%s\n", err);

    libusb_free_device_list(list, 1);
    libusb_close(handle);

    return 0;
}
#包括
#包括
内部主(空)
{
libusb_init(空);
libusb_设备**列表;
libusb_device*found=NULL;
ssize\u t cnt=libusb\u get\u device\u list(NULL,&list);
ssize_t i=0;
结构libusb_设备描述符desc;
libusb_设备_手柄*h;
无符号字符strDesc[128];
对于(i=0;i
基本上,它通过所有列出的设备循环,直到找到我的键盘,pId 0x203。然后,它尝试启动
libusb\u bulk\u传输()
,但在执行时抛出
libusb\u错误\u找不到
。 有人能帮我吗?我已经搜索过了,但似乎没有人有解决办法。谢谢


我正在运行OS X 10.10.1。

键盘是隐藏设备,它们不支持像记忆棒这样的批量传输。改为使用libusb\u interrupt\u transfer()。你好非常感谢你的帮助。这是我第一次尝试使用USB硬件,我可能会得到更多的文档。不管怎样,您提供的代码似乎正在工作,但我现在得到了一个
LIBUSB\u ERROR\u ACCESS
。尝试使用权限运行它,但仍然出现错误。