【问题标题】:Porting windows USB HID code to libusb将 windows USB HID 代码移植到 libusb
【发布时间】:2012-10-18 20:32:48
【问题描述】:

我正在尝试使用 libusb 将一些使用 HidD_GetInputReport 的 Windows 代码移植到 linux。据我所知,我需要调用 usb_control_msg,但我无法确定要传入的参数。

我要的报告 id 是 0x01。这是我目前所拥有的。

#define HID_GET_REPORT  0x01
#define HID_REPORT_TYPE_INPUT  0x01
#define INTERFACE_NUMBER 0x00

int reportId = 0x01;
int bytesSent = usb_control_msg(
  devHandle,
  USB_ENDPOINT_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  HID_GET_REPORT,
  (HID_REPORT_TYPE_INPUT << 8) | reportId,
  INTERFACE_NUMBER,
  buf,
  sizeof(buf),
  10000);

我真的不确定 HID_GET_REPORT、HID_REPORT_TYPE_INPUT 和 INTERFACE_NUMBER。我在网上的一个例子中找到了它们。更改各种值确实会导致不同的返回代码,但这些代码似乎也没有记录在任何地方。

【问题讨论】:

  • 我想知道什么头文件包含和导出usb_control_msg。是 libusb-win32-src-1.2.6.0\src\lusb0_usb.h 吗?谢谢

标签: linux usb libusb


【解决方案1】:

看起来您需要在调用其他函数之前分离内核并声明接口。我拨打了以下电话,它解决了问题。

usb_detach_kernel_driver_np
usb_claim_interface

【讨论】:

    最近更新 更多