2012-10-18 101 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