diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2018-01-07 18:38:01 +1100 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2018-01-07 18:38:01 +1100 |
commit | bf630b3add2ed197ec4c9f94f06d4dec4281d09d (patch) | |
tree | b26d041e87bdbd86bb4cca1744e8e9d6c3ebd6b9 /Demos/Device | |
parent | 021bad3105a1ae07fff8289f2f5bfe57b7e6c684 (diff) | |
download | lufa-bf630b3add2ed197ec4c9f94f06d4dec4281d09d.tar.gz lufa-bf630b3add2ed197ec4c9f94f06d4dec4281d09d.tar.bz2 lufa-bf630b3add2ed197ec4c9f94f06d4dec4281d09d.zip |
Update other PyWinUSB Python host scripts to use the hidapi library.
Diffstat (limited to 'Demos/Device')
3 files changed, 40 insertions, 51 deletions
diff --git a/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.py b/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.py index a540a2c67..8da8ad767 100755 --- a/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.py +++ b/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.py @@ -22,13 +22,9 @@ from time import sleep import usb.core import usb.util -# Generic HID device VID, PID and report payload length (length is increased -# by one to account for the Report ID byte that must be pre-pended) -device_vid = 0x03EB -device_pid = 0x204F def get_and_init_hid_device(): - device = usb.core.find(idVendor=device_vid, idProduct=device_pid) + device = usb.core.find(idVendor=0x03EB, idProduct=0x204F) if device is None: sys.exit("Could not find USB device.") @@ -46,6 +42,7 @@ def get_and_init_hid_device(): return device + def send_led_pattern(device, led1, led2, led3, led4): # Report data for the demo is LED on/off data report_data = [led1, led2, led3, led4] @@ -62,11 +59,13 @@ def send_led_pattern(device, led1, led2, led3, led4): print("Sent LED Pattern: {0}".format(report_data)) + def receive_led_pattern(hid_device): endpoint = hid_device[0][(0,0)][0] report_data = hid_device.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize) return list(report_data) + def main(): hid_device = get_and_init_hid_device() diff --git a/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_winusb.py b/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_winusb.py index efb4cbeaa..72f5f076d 100644 --- a/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_winusb.py +++ b/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_winusb.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + """ LUFA Library Copyright (C) Dean Camera, 2018. @@ -17,37 +19,34 @@ import sys from time import sleep -import pywinusb.hid as hid - -# Generic HID device VID, PID and report payload length (length is increased -# by one to account for the Report ID byte that must be pre-pended) -device_vid = 0x03EB -device_pid = 0x204F -report_length = 1 + 8 +import hid def get_hid_device_handle(): - hid_device_filter = hid.HidDeviceFilter(vendor_id=device_vid, - product_id=device_pid) + all_hid_devices = hid.enumerate() - valid_hid_devices = hid_device_filter.get_devices() + lufa_hid_devices = [d for d in all_hid_devices if d['vendor_id'] == 0x03EB and d['product_id'] == 0x204F] - if len(valid_hid_devices) is 0: + if len(lufa_hid_devices) is 0: return None - else: - return valid_hid_devices[0] + + device_handle = hid.device() + device_handle.open_path(lufa_hid_devices[0]['path']) + return device_handle def send_led_pattern(device, led1, led2, led3, led4): # Report data for the demo is the report ID (always zero) followed by the # LED on/off data - report_data = [0, led1, led2, led3, led4] - - # Zero-extend the array to the length the report should be - report_data.extend([0] * (report_length - len(report_data))) + report_data = bytearray(9) + report_data[0] = 0 + report_data[1] = led1 + report_data[2] = led2 + report_data[3] = led3 + report_data[4] = led4 # Send the generated report to the device - device.send_output_report(report_data) + device.write(report_data) print("Sent LED Pattern: {0}".format(report_data[1:5])) @@ -64,11 +63,7 @@ def main(): sys.exit(1) try: - hid_device.open() - - print("Connected to device 0x%04X/0x%04X - %s [%s]" % - (hid_device.vendor_id, hid_device.product_id, - hid_device.product_name, hid_device.vendor_name)) + print("Connected to device.", flush=True) # Set up the HID input report handler to receive reports hid_device.set_raw_data_handler(received_led_pattern) diff --git a/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py b/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py index efb4cbeaa..72f5f076d 100644 --- a/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py +++ b/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + """ LUFA Library Copyright (C) Dean Camera, 2018. @@ -17,37 +19,34 @@ import sys from time import sleep -import pywinusb.hid as hid - -# Generic HID device VID, PID and report payload length (length is increased -# by one to account for the Report ID byte that must be pre-pended) -device_vid = 0x03EB -device_pid = 0x204F -report_length = 1 + 8 +import hid def get_hid_device_handle(): - hid_device_filter = hid.HidDeviceFilter(vendor_id=device_vid, - product_id=device_pid) + all_hid_devices = hid.enumerate() - valid_hid_devices = hid_device_filter.get_devices() + lufa_hid_devices = [d for d in all_hid_devices if d['vendor_id'] == 0x03EB and d['product_id'] == 0x204F] - if len(valid_hid_devices) is 0: + if len(lufa_hid_devices) is 0: return None - else: - return valid_hid_devices[0] + + device_handle = hid.device() + device_handle.open_path(lufa_hid_devices[0]['path']) + return device_handle def send_led_pattern(device, led1, led2, led3, led4): # Report data for the demo is the report ID (always zero) followed by the # LED on/off data - report_data = [0, led1, led2, led3, led4] - - # Zero-extend the array to the length the report should be - report_data.extend([0] * (report_length - len(report_data))) + report_data = bytearray(9) + report_data[0] = 0 + report_data[1] = led1 + report_data[2] = led2 + report_data[3] = led3 + report_data[4] = led4 # Send the generated report to the device - device.send_output_report(report_data) + device.write(report_data) print("Sent LED Pattern: {0}".format(report_data[1:5])) @@ -64,11 +63,7 @@ def main(): sys.exit(1) try: - hid_device.open() - - print("Connected to device 0x%04X/0x%04X - %s [%s]" % - (hid_device.vendor_id, hid_device.product_id, - hid_device.product_name, hid_device.vendor_name)) + print("Connected to device.", flush=True) # Set up the HID input report handler to receive reports hid_device.set_raw_data_handler(received_led_pattern) |