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])))
 |