Sending USB commands with Python

Adam W. AWasilenko at gmail.com
Wed Aug 29 23:53:48 EDT 2012


On Wednesday, August 29, 2012 10:07:54 PM UTC-4, Dennis Lee Bieber wrote:
> On Wed, 29 Aug 2012 16:45:10 -0700 (PDT), "Adam W."
>
> 	I'm a tad curious if using the notation
> 
> 
> 
> 		b'\x1bA'
> 
> 
> 
> without the .encode() would work.
> 
> 
> 
> 	My concern is that you may encounter some "string" of data for
> 
> printing which the .encode() ends up /changing/ (don't UTF-8 strings use
> 
> a high-bit to signal a multi-byte encoding of what had been a single
> 
> character?). A pure byte string shouldn't have that problem.
> 

Your notation does work, and I was just coming around to reevaluating the use of the encode because I am getting really odd results when trying to print lines.

For example I set the byte length to 10 and sent this 500 times or so expecting to get a solid black bar:
ep.write('\x16FFFFFFFFFF'.encode('utf-8'))

But what I got was a weird stripped pattern...  I feel like a lot of my commands are working by chance, I can't explain to myself why the A in \x1bA isn't being treated as part of the hex.  This stuff always confuses me.


> 
> > >>> ep = usb.util.find_descriptor(
> 
> >     intf,
> 
> >     custom_match = \
> 
> >     lambda e: \
> 
> >         usb.util.endpoint_direction(e.bEndpointAddress) == \
> 
> >         usb.util.ENDPOINT_IN
> 
> > )
> 
> 
> 
> 	Seems tedious to keep swapping -- does USB support bidirectional
> 
> connections?
> 

I assigned the input to ep2 to resolve the switching issue.



More information about the Python-list mailing list