从串行连接读取几行直到满足条件,然后允许串行写入操作
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
这是我当前的代码,它似乎不能很好地处理写入。好像是口吃
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