2019-05-21 06:40:11 +08:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import time
|
|
|
|
import serial
|
|
|
|
|
|
|
|
if len(sys.argv) < 2:
|
|
|
|
print('Usage: %s <baudrate>' % sys.argv[0])
|
|
|
|
sys.exit(1)
|
|
|
|
baudrate = int(sys.argv[1])
|
|
|
|
ser = serial.Serial(
|
|
|
|
port='/dev/ttyUSB0',
|
|
|
|
baudrate=baudrate,
|
|
|
|
parity=serial.PARITY_NONE,
|
|
|
|
stopbits=serial.STOPBITS_ONE,
|
|
|
|
bytesize=serial.EIGHTBITS
|
|
|
|
)
|
|
|
|
|
|
|
|
ser.isOpen()
|
|
|
|
ser.write(b'AT')
|
|
|
|
out = b''
|
|
|
|
time.sleep(1)
|
|
|
|
while ser.inWaiting() > 0:
|
|
|
|
out += ser.read(1)
|
|
|
|
if out != b'OK':
|
|
|
|
ser.close()
|
|
|
|
print("HC-06 dongle not found. Abort.")
|
|
|
|
exit(1)
|
|
|
|
print('Enter your commands below.\r\nInsert "exit" to leave the application.')
|
|
|
|
|
|
|
|
while 1 :
|
|
|
|
# get keyboard input
|
|
|
|
inp = input(">> ")
|
|
|
|
inp = inp.encode('utf8')
|
|
|
|
if inp == 'exit':
|
|
|
|
ser.close()
|
|
|
|
exit()
|
|
|
|
else:
|
|
|
|
ser.write(inp)
|
|
|
|
out = b''
|
2019-05-23 06:05:45 +08:00
|
|
|
wait = 1
|
|
|
|
ti = time.perf_counter()
|
|
|
|
while True:
|
|
|
|
time.sleep(0.05)
|
|
|
|
if (ser.in_waiting > 0):
|
|
|
|
# When receiving data, reset timer and shorten timeout
|
|
|
|
ti = time.perf_counter()
|
|
|
|
wait = 0.05
|
|
|
|
out += ser.read(1)
|
|
|
|
continue
|
|
|
|
# We stop either after 1s if no data or 50ms after last data received
|
|
|
|
if time.perf_counter() - ti > wait:
|
|
|
|
break
|
2019-05-21 06:40:11 +08:00
|
|
|
if out != b'':
|
|
|
|
print("<< " + out.decode('utf8'))
|