Here is a simple Python program using only PyUSB to talk to a Teensy running RAWHID
Code:
#!/usr/bin/python
import usb.core
import usb.util
dev = usb.core.find(idVendor=0x16C0, idProduct=0x0486)
try:
dev.reset()
except Exception as e:
print( 'reset', e)
if dev.is_kernel_driver_active(0):
print( 'detaching kernel driver')
dev.detach_kernel_driver(0)
endpoint_in = dev[0][(0,0)][0]
endpoint_out = dev[0][(0,0)][1]
# Send a command to the Teensy
endpoint_out.write( "version".encode() + bytes([0]) )
# Read the response, it is an array, of byte
buffer = dev.read(endpoint_in.bEndpointAddress, 64, 1000)
buffer = bytearray(buffer)
# Decode and print the zero terminated string response
n = buffer.index(0)
print( bytearray(buffer[:n]).decode() )