0

最近、Windows 10 での HID デバイスとの通信について学び始めました。

しかし、いくつか質問があります。

Window のドキュメントによると、パラメータHidD_SetOutputReportの最初のバイトをレポート ID または.ReportBuffer0x00

私のデバイスの HID Report Descriptor はいくつかのレポート ID を宣言しているため、 ?HidD_setoutputreportの代わりに使用するときにレポート ID を設定する必要があります。0x00

レポート ID 0x80 を として使用した場合buf[0]、例: 0x80 0x02 0x00 ....... 0x00 (私のCapabilities.OutputReportByteLength場合は 64)

そして私のコードはret = HidD_SetOutputReport(handle->device_handle, buf2, 65)

しかし、私は常に次のようにデータを送信します ( Bus Houndで):

64 OUT 80 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 4.1.0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 4.1.16

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 4.1.32

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 4.1.48

buf[1] to buf[64]の代わりに送るべきだと思い、buf[0] to buf[63]を試してみret = HidD_SetOutputReport(handle->device_handle, buf2, 64)ましたが、結果は同じでした。

INPUT と OUTPUT の HID レポート記述子は次のとおりです。

使い方ページ(汎用デスクトップ) 05 01

論理最小値 (0) 15 00

使い方(ジョイスティック) 09 04

コレクション(アプリケーション) A1 01

レポート ID (48) 85 30

使い方ページ(汎用デスクトップ) 05 01

使い方ページ(ボタン) 05 09

最小使用量 (ボタン 1) 19 01

使用最大 (ボタン 10) 29 0A

論理最小値 (0) 15 00

論理最大値 (1) 25 01

レポートサイズ (1) 75 01

レポート数 (10) 95 0A

単位指数 (0) 55 00

単位 (なし) 65 00

入力 (データ、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 02

使い方ページ(ボタン) 05 09

最小使用量 (ボタン 11) 19 0B

使用最大 (ボタン 14) 29 0E

論理最小値 (0) 15 00

論理最大値 (1) 25 01

レポートサイズ (1) 75 01

レポート数 (4) 95 04

入力 (データ、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 02

レポートサイズ (1) 75 01

レポート数 (2) 95 02

入力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 03

使用法 (汎用デスクトップ:ポインター) 0B 01 00 01 00

コレクション (物理) A1 00

   Usage (Generic Desktop:X)    0B 30 00 01 00

   Usage (Generic Desktop:Y)    0B 31 00 01 00

   Usage (Generic Desktop:Z)    0B 32 00 01 00

   Usage (Generic Desktop:Rz)    0B 35 00 01 00

   Logical Minimum (0)    15 00

   Logical Maximum (65535)    27 FF FF 00 00

   Report Size (16)    75 10

   Report Count (4)    95 04

   Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)    81 02

コレクション終了 C0

使用法 (汎用デスクトップ:ハット スイッチ) 0B 39 00 01 00

論理最小値 (0) 15 00

論理最大値 (7) 25 07

物理的最小値 (0) 35 00

物理最大 (315) 46 3B 01

単位 (Eng Rot: 度) 65 14

レポートサイズ (4) 75 04

レポート数 (1) 95 01

入力 (データ、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 02

使い方ページ(ボタン) 05 09

最小使用量 (ボタン 15) 19 0F

使用最大数 (ボタン 18) 29 12

論理最小値 (0) 15 00

論理最大値 (1) 25 01

レポートサイズ (1) 75 01

レポート数 (4) 95 04

入力 (データ、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 02

レポートサイズ (8) 75 08

レポート数 (52) 95 34

入力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 03

使用ページ (ベンダー定義 1) 06 00 FF

レポート ID (33) 85 21

使用法 (ベンダー定義 1) 09 01

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

入力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 03

レポート ID (129) 85 81

使用法 (ベンダー定義 2) 09 02

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

入力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Bit) 81 03

レポート ID (1) 85 01

使用法 (ベンダー定義 3) 09 03

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

出力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Vol、Bit) 91 83

レポート ID (16) 85 10

使用法 (ベンダー定義 4) 09 04

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

出力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Vol、Bit) 91 83

レポート ID (128) 85 80

使用法 (ベンダー定義 5) 09 05

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

出力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Vol、Bit) 91 83

レポート ID (130) 85 82

使用法 (ベンダー定義 6) 09 06

レポートサイズ (8) 75 08

レポート数 (63) 95 3F

出力 (Cnst、Var、Abs、NWrp、Lin、Pref、NNul、Vol、Bit) 91 83

コレクション終了 C0

4

1 に答える 1