3

我在 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
4

0 回答 0