1

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 についてはよくわかりません。ウェブ上の例でそれらを見つけました。さまざまな値を変更すると、さまざまな戻りコードが返されますが、それらはどこにも文書化されていないようです。

4

1 に答える 1

1

他の関数を呼び出す前に、カーネルを切り離してインターフェイスを要求する必要があるようです。以下に電話をかけ、問題を修正しました。

usb_detach_kernel_driver_np
usb_claim_interface
于 2012-10-19T14:45:52.867 に答える