我的问题就像Will提出的问题:“简单的读/写Python中的USB HID设备?”,但之后我没有得到任何结果。问题:我正在尝试处理俄勒冈州WMRS200 Meteo站,它实现了作为HID设备的USB连接。我开始调整/简化下面列出的'raw data.py'示例
from time import sleep
from msvcrt import kbhit
import pywinusb.hid as hid
def sample_handler(data):
print("Raw data: {0}".format(data))
def raw_test():
device = (hid.HidDeviceFilter (vendor_id =0x0fde , product_id = 0xca01). \
get_devices())[0]
device.open()
#set custom raw data handler
device.set_raw_data_handler(sample_handler)
print("\nWaiting for data...\nPress any (system keyboard) key to stop...")
while not kbhit() and device.is_plugged():
#just keep the device opened to receive events
sleep(0.5)
device.close()
return
if __name__ == '__main__':
raw_test()数据的传输没有开始。我在网上发现系统必须初始化一次(在复位或PW失败后)发送一个缓冲区
0x20 0x00 0x08 0x01 0x00 0x00 0x00 0x00
问题是我不知道如何发送它。像发送报告那样做一些事情(如上面引用的例子)不会得到任何结果。
如果复位后我开始并停止,一旦原始的俄勒冈州的一切都开始工作,即通道以某种方式初始化。在通信通道上安装嗅探器我想我会看到字节串到设备上,但是,我仍然可以发送它?
这是带有原始sw的嗅探器的输出。我猜想在URB 9-10中可以看到字节模式进入设备。
[229 ms] >>> URB 1 going down >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
TransferBufferLength = 00000012
DescriptorType = 00000001 (USB_DEVICE_DESCRIPTOR_TYPE)
[234 ms] <<< URB 1 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
TransferFlags = 0000000b (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER