Pythonを使用して読み書きする方法を理解しようとしている、かなり単純なUSB HIDデバイスを持っています。PyWinUSB を使用して読み取ることができましたが、書き込もうとすると問題が発生します。それに書き込もうとすると、物事が爆発します。
例えば:
device = hid.HidDeviceFilter(vendor_id = 0x0003, product_id = 0x1001).get_devices()[0]
これはうまくいきます。次に、生データを読み取るために、これが今私が気にかけているすべてです (呪われたものに書き込む方法を理解できたら、それを処理します):
def readData(data):
print(data)
return None
これは問題なく動作します (実際、動作するのを見たときは非常に興奮しました)。したがって、次のようにデータ ハンドラーを割り当てます。
device.set_raw_data_handler(readData)
そして、ボタンを押すたびに、それは問題ありません。期待どおりにデータが送信されます。これは素晴らしいです!
デバイスに書き込みたいときに問題が発生します。サンプルの simple_send ファイルをテンプレートとして (これはおそらく最良の選択ではありませんでした)、次のようにします。
report = device.find_output_reports()[0]
これは、4 つのエントリを保持するディクショナリを含むレポート オブジェクトを返します。あれは正しいですか?output_reports オブジェクトを使用してデバイスに書き込みますか? レポート値をANYTHINGに設定してそうしようとしています:
report[<key>] = "pneumonoultramicroscopicvolcanoconiosis"
report.send()
これにより、解釈できない不快なエラーが返され続けます。
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
report.send()
File "C:\Python27\lib\site-packages\pywinusb-0.3.1-py2.7.egg\pywinusb\hid\core.py", line 1446, in send
self.__prepare_raw_data()
File "C:\Python27\lib\site-packages\pywinusb-0.3.1-py2.7.egg\pywinusb\hid\core.py", line 1401, in __prepare_raw_data
byref(self.__raw_data), self.__raw_report_size) )
File "C:\Python27\lib\site-packages\pywinusb-0.3.1-py2.7.egg\pywinusb\hid\winapi.py", line 382, in __init__
raise helpers.HIDError("hidP error: %s" % self.error_message_dict[error_code])
HIDError: hidP error: data index not found
私は Windows 7 を使用しています。HID DLL エクスポート関数の参照を (最終的に) 見つけることができました。PyWinUSB ライブラリを使用する必要はありません (または、実際に使用したい場合もあります)。私はこれを機能させたいだけで、それほど難しいとは思われませんでしたが、そうでした.
誰かが私がここで間違っていたことを教えてもらえますか?
ありがとう。
また、エラー コールを追跡してみましたが、プログラムが終了する前にこれを作成しました。