🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3897閲覧

libusb_control_transfer()を使用し,データ転送を行いたい

abc123abc

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/03/04 07:05

編集2021/03/16 06:10

前提・実現したいこと

環境: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
の使い方を調査していますが、理解に苦しんでいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

送信、受信を逆でおこなってしまっていた
下記URL参考にGETSTATUSコマンドを実施、bufの中身が変わることを確認
https://www.beyondlogic.org/usbnutshell/usb6.shtml

投稿2021/03/16 08:30

abc123abc

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問