soc/tools/flterm: get rid of serial.tools.miniterm import and fix echo on linux
This commit is contained in:
parent
002508a69a
commit
b856b54720
|
@ -7,7 +7,33 @@ import serial
|
||||||
import threading
|
import threading
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from serial.tools.miniterm import console, character, LF
|
|
||||||
|
if sys.platform == "win32":
|
||||||
|
def getkey():
|
||||||
|
import msvcrt
|
||||||
|
return msvcrt.getch()
|
||||||
|
|
||||||
|
else:
|
||||||
|
def getkey():
|
||||||
|
import termios
|
||||||
|
fd = sys.stdin.fileno()
|
||||||
|
old = termios.tcgetattr(fd)
|
||||||
|
new = termios.tcgetattr(fd)
|
||||||
|
new[3] = new[3] & ~termios.ICANON & ~termios.ECHO
|
||||||
|
new[6][termios.VMIN] = 1
|
||||||
|
new[6][termios.VTIME] = 0
|
||||||
|
termios.tcsetattr(fd, termios.TCSANOW, new)
|
||||||
|
c = None
|
||||||
|
try:
|
||||||
|
c = os.read(fd, 1)
|
||||||
|
finally:
|
||||||
|
termios.tcsetattr(fd, termios.TCSAFLUSH, old)
|
||||||
|
return c
|
||||||
|
|
||||||
|
|
||||||
|
def character(b):
|
||||||
|
return b.decode('latin1')
|
||||||
|
|
||||||
|
|
||||||
sfl_magic_len = 14
|
sfl_magic_len = 14
|
||||||
sfl_magic_req = "sL5DdSMmkekro\n"
|
sfl_magic_req = "sL5DdSMmkekro\n"
|
||||||
|
@ -242,14 +268,14 @@ class Flterm:
|
||||||
try:
|
try:
|
||||||
while self.writer_alive:
|
while self.writer_alive:
|
||||||
try:
|
try:
|
||||||
b = console.getkey()
|
b = getkey()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
b = serial.to_bytes([3])
|
b = serial.to_bytes([3])
|
||||||
c = character(b)
|
c = character(b)
|
||||||
if c == chr(0x03):
|
if c == chr(0x03):
|
||||||
self.stop()
|
self.stop()
|
||||||
elif c == '\n':
|
elif c == '\n':
|
||||||
self.serial.write(LF)
|
self.serial.write(serial.to_bytes([10]))
|
||||||
else:
|
else:
|
||||||
self.serial.write(b)
|
self.serial.write(b)
|
||||||
except:
|
except:
|
||||||
|
|
Loading…
Reference in New Issue