49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
#
 | 
						|
# Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: BSD-3-Clause
 | 
						|
#
 | 
						|
 | 
						|
# sudo pip3 install pyusb
 | 
						|
 | 
						|
import usb.core
 | 
						|
import usb.util
 | 
						|
 | 
						|
# find our device
 | 
						|
dev = usb.core.find(idVendor=0x0000, idProduct=0x0001)
 | 
						|
 | 
						|
# was it found?
 | 
						|
if dev is None:
 | 
						|
    raise ValueError('Device not found')
 | 
						|
 | 
						|
# get an endpoint instance
 | 
						|
cfg = dev.get_active_configuration()
 | 
						|
intf = cfg[(0, 0)]
 | 
						|
 | 
						|
outep = usb.util.find_descriptor(
 | 
						|
    intf,
 | 
						|
    # match the first OUT endpoint
 | 
						|
    custom_match= \
 | 
						|
        lambda e: \
 | 
						|
            usb.util.endpoint_direction(e.bEndpointAddress) == \
 | 
						|
            usb.util.ENDPOINT_OUT)
 | 
						|
 | 
						|
inep = usb.util.find_descriptor(
 | 
						|
    intf,
 | 
						|
    # match the first IN endpoint
 | 
						|
    custom_match= \
 | 
						|
        lambda e: \
 | 
						|
            usb.util.endpoint_direction(e.bEndpointAddress) == \
 | 
						|
            usb.util.ENDPOINT_IN)
 | 
						|
 | 
						|
assert inep is not None
 | 
						|
assert outep is not None
 | 
						|
 | 
						|
test_string = "Hello World!"
 | 
						|
outep.write(test_string)
 | 
						|
from_device = inep.read(len(test_string))
 | 
						|
 | 
						|
print("Device Says: {}".format(''.join([chr(x) for x in from_device])))
 |