前提・実現したいこと
環境:win10
統合環境:QT C++
ドライバ:libusb-1.0
上記にて、USB通信にてデータの送受信
発生している問題・エラーメッセージ
http://milkandlait.blogspot.com/2017/09/digisparkgcc-usb-hid.html
を参考に
libusb_control_transfer()を使用したところ、戻り値としてエラーの内容は返ってこないが、bufの中身が変わらない(受信により変わる想定)
返り値は指定したサイズが返ってくる。
該当のソースコード
C++
1#define HID_GET_REPORT 0x01 2#define HID_GET_IDLE 0x02 3#define HID_GET_PROTOCOL 0x03 4#define HID_SET_REPORT 0x09 5#define HID_SET_IDLE 0x0A 6#define HID_SET_PROTOCOL 0x0B 7#define HID_REPORT_TYPE_INPUT 0x01 8#define HID_REPORT_TYPE_OUTPUT 0x02 9#define HID_REPORT_TYPE_FEATURE 0x03 10 11#define CTRL_IN LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE 12#define CTRL_OUT LIBUSB_ENDPOINT_OUT|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE 13 14 15int usb_communication:: usb_control_transfer(bool type, unsigned char* buf, unsigned char size) 16{ 17 int ret; 18 if(type == false) 19 { 20 ret =libusb_control_transfer(s_handle, CTRL_OUT, HID_SET_REPORT,(HID_REPORT_TYPE_FEATURE<<8) | 0x00, 0, buf, size, TIMEOUT); 21 } 22 else 23 { 24 ret = libusb_control_transfer(s_handle,CTRL_IN,HID_GET_REPORT,(HID_REPORT_TYPE_FEATURE<<8) | 0x00, 0, buf, size, TIMEOUT); 25 } 26 27 return ret; 28}
typeにより受信か送信かを切り分けています
試したこと
libusb_control_transferの引数
request_type
bRequest
wValue
wIndex
の使い方を調査していますが、理解に苦しんでいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。