問題タブ [cardreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
85 参照

embedded - HID レポート リクエスト

組み込みコントローラーをホストとして使用して、USB カードリーダーと通信することに困惑しています。忍耐強く、制御トランザクションを送信して LED を操作し、カードが挿入されたときに IN パイプでステータスの更新を受信できるようになりました。私ができないことは、カード データを要求するために、コントロール パイプでレポート要求であると思われるものを送信することです。

私の質問は、HID カード リーダーがカード データ (レポート ID = 0x65、使用 ID = 0x61C) を送信するように、このレポート要求をどのように設定すればよいかということです。私の理解が正しければ、これはセットアップ パケット内のフラグの単純な操作に帰着するはずですが、私の人生では、どれが正しいのかわかりません。

次のコードは、LED を操作するために制御 EP で送信される set_config トランザクションをセットアップするために使用され、正常であることがわかっています。

この関数は、init メッセージには 0x302 で渡された値を使用し、LED 制御には 0x35f で渡された値を使用します。次に、目的のコマンドのインデックス 0 のレポート ID を含むバッファーを移動し、次にデータ (RGB 値) を移動する転送を開始します。

最後に、私が使用しているデバイスの記述子は次のとおりです。

Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x6352
idProduct 0x240a
bcdDevice 3.01
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0022
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 3
bmAttributes 0x80
(バスパワー)
MaxPower 500mA\

インターフェイス記述子:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 ヒューマン インターフェイス デバイス
bInterfaceSubClass 0
bInterfaceProtocol 0 iInterface
4\

HID デバイス記述子:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 サポートされていません
bNumDescriptors 1
bDescriptorType 34 レポート
wDescriptorLength 730\

エンドポイント記述子:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
転送タイプ 割り込み
同期タイプ なし
使用タイプ データ
wMaxPacketSize 0x0040 1x 64 バイト
bInterval 46

ガイダンスやヘルプをいただければ幸いです。 -
ジャスティン