我在 Windows 7 64-bit 上的 Python 3.3 下使用 pyserial。我想建立一个很小的终端,例如putty,pietty。
我遇到了 3 个主要问题,**(1)当我通过 serial.write() 发送命令时,它会自己回复我(再次 ECHO)(2)当我想从 serial.read() 打印一些东西时,它变成非常慢 。(我知道 stdout.flush 每次都是根本原因,但我不想在缓冲区中缓存任何东西)
(3) 我使用 cygwin 下的 miniterm.py ,并使用 windows 版本的 Python 3.3 (我使用符号链接来实现它。)** 例如:别名 p3='/cygdrive/c/Python33/python.exe' 。和“p3 miniterm.py -p COM4 -u 38400”来运行 miniterm ,但它似乎无法接受我的输入。但是,在 windows 本机命令终端下,它工作正常,但无法正确显示 ANSI 颜色(无论如何都可以处理它)
这是我的现场演示视频 http://www.youtube.com/watch?v=n6eZQnFgh2I&feature=youtu.be
和我的代码
def main():
try:
global read_thr,write_thr
beep()
port_num='COM5'
baudrate=38400
init_serial_port(port_num,baudrate)
read_thr =Thread(target=read_comport)
read_thr.start()
write_thr =Thread(target=write_comport)
write_thr.start()
flush_thr =Thread(target=read_comport)
def get_key_from_user():
c = os.read(sys.stdin.fileno(),1)
return c
def write_comport():
global ser, cmd, log_file, isRead
print("enter Q to quit")
while True:
cmd = input(">>:")
if cmd=='Q':
exit_prog()
else:
ser.write(cmd)
ser.flush()
pass
def read_comport():
global ser, cmd, log_file
cnt =0
while True:
element=''
data=character(ser.read(1))
sys.stderr.write(data)
sys.stderr.flush()
continue
pass