2012-10-18 61 views
1

我试图将一些使用HidD_GetInputReport的Windows代码移植到使用libusb的linux中。从我可以告诉我需要打电话给usb_control_msg,但我有问题搞清楚要通过什么参数。移植Windows的USB HID代码libusb

我后来的报告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。我在网上找到了一个例子。更改各种值会导致不同的返回码,但这些码不会在任何地方记录。

+0

我想知道哪个头文件包含并导出usb_control_msg。它是libusb-win32-src-1.2.6.0 \ src \ lusb0_usb.h吗?谢谢 – Frank

回答

1

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

usb_detach_kernel_driver_np 
usb_claim_interface