| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # Copyright (c) 2021 HPMicro
- # SPDX-License-Identifier: BSD-3-Clause
- import pywinusb.hid as hid
- import os
- import time
- import sys
- import operator
- # VID and PID customization changes here...
- VID = 0xFFFF
- PID = 0xFFFF
- # Send buffer
- buffer = [0xff]*64
- # Const
- TIMEOUT = -1
- PASS = 0
- FAIL = 1
- # Result
- result = TIMEOUT
- def search_dev():
- filter = hid.HidDeviceFilter(vendor_id = VID, product_id = PID)
- hid_device = filter.get_devices()
- return hid_device
- def recv_data(data):
- print("<=================== USB HID Read ========================>")
- for i in range(0, len(data)):
- print("0x{0:02x}" .format(data[i]), end=" ")
- print("\n")
- global result
- result = (PASS if (operator.eq(data[1:-1], buffer[1:-1]) == True) else FAIL)
- return None
- def send_data(report):
- print("<=================== USB HID Write ========================>")
- buffer[0] = report[0].report_id
- print("0x{0:02x}" .format(buffer[0]), end=" ")
- for i in range(1,64):
- buffer[i] = i % 256
- print("0x{0:02x}" .format(buffer[i]), end=" ")
- print("\n")
- report[0].set_raw_data(buffer)
- report[0].send()
- return None
- if __name__ == '__main__':
- device = search_dev()[0]
- device.open()
- device.set_raw_data_handler(recv_data)
- send_data(device.find_output_reports())
- time.sleep(1)
- if result == PASS:
- print("USB hid echo passed!")
- elif result == FAIL:
- print("USB HID echo failed!")
- else:
- print("USB HID echo timed out!")
|