从串行连接读取几行直到满足条件,然后允许串行写入操作

read several lines from serial connection until condition is met, then allow serial write action

这是我当前的代码,它似乎不能很好地处理写入。好像是口吃

import serial

ser = serial.Serial(port='/dev/tty1', baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)

while True:
    line = ser.readline() 
    print line,

    if line == "":
        var = raw_input()

        if var != "":
            ser.write(var)    

我正在尝试阅读几段文字,每段之间用一个空行分隔。当所有的段落都读完后,我的 pyserial 脚本会向串行通道写入命令,然后会读更多的段落,依此类推。

我该如何改进?

---编辑--------

我现在使用 select 而不是 raw_input()。现在可以写入串行通道了。 但是对于阅读,它只是拒绝 read/print 最后一段。

有人可以帮忙吗?

import serial
import select
import sys

ser = serial.Serial(port='/dev/tty1', baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)

while True:

    line = ser.readline()
    print line,

    while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        lineIn = sys.stdin.readline()
        if lineIn:
            ser.write(lineIn)       
    else:
        continue

为什么不跟进 Joran Beasley 的建议?

import serial

ser = serial.Serial(
    port='/dev/tty1',
    baudrate=115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    timeout=1)

while True:
    line = ser.readline()
    if not line.strip():  # evaluates to true when an "empty" line is received
        var = raw_input()
        if var:
            ser.write(var)
    else:
        print line,

它比在 while 构造中绑定 sys.stdin 更具 Python 风格和可读性... O_o