将Windows USB HID代码移植到libusb

时间:2012-10-18 20:32:49

标签: linux usb libusb

我正在尝试使用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。我在网上的一个例子中找到了它们。更改各种值会导致返回代码不同,但这些代码似乎也没有记录在任何地方。

1 个答案:

答案 0 :(得分:1)

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

usb_detach_kernel_driver_np
usb_claim_interface