improvements to the hid console

This commit is contained in:
Daniel Pavel 2012-10-07 20:20:36 +03:00
parent 8ee2940106
commit 058d81a767
1 changed files with 42 additions and 12 deletions

View File

@ -2,6 +2,7 @@
# Python 2 only for now.
import time
from binascii import hexlify, unhexlify
@ -21,26 +22,54 @@ def read_next(handle, timeout=1000, ignore_nodata=False):
def console_cycle(handle):
last_data = None
while True:
if read_next(handle, timeout=100, ignore_nodata=True):
continue
line = raw_input('!! Enter packet to send (hex bytes) or ^C to abort: ')
line = raw_input('!! Command: ')
line = line.strip().replace(' ', '').replace('-', '')
if not line:
continue
if len(line) % 2 == 1:
line += '0'
try:
data = unhexlify(line)
except:
print "!! Invalid input."
continue
hexs = hexlify(data)
print "<< [%s %s %s %s] %s" % (hexs[0:2], hexs[2:4], hexs[4:8], hexs[8:], repr(data))
hidapi.write(handle, data)
read_next(handle)
data = None
if line == 'h':
print 'Commands:'
print ' <hex bytes> - send a packet to the device'
print ' r - re-send last packet'
print ' w<float> - listen for events for <float> seconds'
print ' h - this help screen'
print ' ^C - exit'
elif line == 'r':
data = last_data
elif line[0] == 'w':
line = line[1:].strip()
try:
seconds = float(line)
except:
print "!! Bad number <" + line + ">"
else:
count = 0
start_time = time.time()
while time.time() - start_time < seconds:
if read_next(handle, timeout=100, ignore_nodata=True):
count += 1
print "!! Got %d events" % count
else:
try:
data = unhexlify(line)
except:
print "!! Invalid input."
continue
if data:
hexs = hexlify(data)
print "<< [%s %s %s %s] %s" % (hexs[0:2], hexs[2:4], hexs[4:8], hexs[8:], repr(data))
last_data = data
hidapi.write(handle, data)
read_next(handle)
if __name__ == '__main__':
@ -59,6 +88,7 @@ if __name__ == '__main__':
repr(hidapi.get_manufacturer(handle)),
repr(hidapi.get_product(handle)),
repr(hidapi.get_serial(handle)))
print "!! Type 'h' for help."
try:
console_cycle(handle)
except: