首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libusb-win32 -无法从键盘读取

libusb-win32 -无法从键盘读取
EN

Stack Overflow用户
提问于 2012-01-04 06:34:22
回答 1查看 2.7K关注 0票数 2

我正在尝试为Windows7下的键盘(HID,如果重要的话)编写一个自定义“驱动程序”。最终目标是将两个键盘连接到计算机上,但将其中一个键盘的所有键都映射到特殊(自定义)功能。

我的想法是使用libusb-win32作为第二个键盘的驱动程序,并编写一个小程序来读取键盘上的数据并对其执行操作。我已经成功地安装了驱动程序,并且可以从我的程序中识别该设备,但是所有传输超时,即使我正在按键。

下面是我的代码:

代码语言:javascript
复制
     struct usb_bus *busses;
     struct usb_device *dev;
     char buf[1024];

     usb_init();
     usb_find_busses();
     usb_find_devices();

     busses = usb_get_busses();
     dev = busses->devices;

     cout << dev->descriptor.idVendor << '\n' << dev->descriptor.idProduct << '\n';

     usb_dev_handle *h = usb_open(dev);
     cout << usb_set_configuration(h, 1) << '\n';
     cout << usb_claim_interface(h, 0) << '\n';
     cout << usb_interrupt_read(h, 129, buf, 1024, 5000) << '\n';
     cout << usb_strerror();
     cout << usb_release_interface(h, 0) << '\n';
     cout << usb_close(h) << '\n';

然后返回:

代码语言:javascript
复制
  1133
  49941
  0
  0
  -116
  libusb0-dll:err [_usb_reap_async] timeout error
  0
  0

(我在这5秒内按了很多键)

只有一个总线、一个设备、一个配置、一个接口和一个端点。端点有bmAttributes = 3,这意味着我应该使用中断传输(对吗?)

那为什么我什么也得不到呢?我是不是滥用了libusb?你知道在没有libusb的情况下做这件事的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-12 01:14:49

实际上,这非常简单-当从USB设备读取数据时,您必须准确读取正确的字节数。你可以通过阅读wMaxPacketSize来知道这个数字是多少。

显然,任何其他大小的读请求都会导致超时。

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

https://stackoverflow.com/questions/8719603

复制
相关文章

相似问题

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