这是我目前的代码,它似乎不能很好地处理写入。这似乎是口吃。
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脚本将向串行通道写入命令,然后将读取更多段落,依此类推。
我该如何改进?
--- EDIT ---------
而不是raw_input(),我现在使用select。现在可以写入串行通道了。 但对于阅读,不知何故它只是拒绝阅读/打印最后一段。
有人可以帮忙吗?
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
答案 0 :(得分:1)
为什么不跟进乔丹比斯利的建议?
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
更加pythonic和可读... O_o