我有一個相當簡單的USB HID設備,我一直在試圖弄清楚如何讀取和寫入使用Python。我已經能夠使用PyWinUSB從它讀取,但是當我嘗試寫入它時,問題就出現了。試圖寫入它會使事情爆炸。簡單的讀寫Python中的USB HID設備?
例如:
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對象寫入設備?試圖通過報告值設置到任何東西可以這樣做:
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庫。我只是想完成這項工作,似乎並不像那麼艱難,但它一直如此。
有人能告訴我我在這裏做錯了什麼嗎?
謝謝。
此外,我試圖跟蹤錯誤調用,並且在程序剛剛關閉之前就已經做出了很多令人沮喪的事情。