我正在使用python中的这个串行模块。我有点问题。我希望我的脚本从控制台获取一个字符,将其发送到AVR板,并回读响应。 每次我从USB端口读取并打印出来时,我都会看到之前的结果。为什么? 例如:
我写了5 我什么都没读 我写了6 我读了5import serial
import sys, time
port=serial.Serial(
port='/dev/ttyUSB0',\
baudrate=9600,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
i=0
tmp = 0
while True:
tmp=raw_input('send: ')
port.write(tmp)
port.flushOutput()
print port.read(1)
port.flushInput()
答案 0 :(得分:0)
来自documentation:“默认情况下写入是阻塞的,除非设置了writeTimeout。对于可能的值,请参阅上面的超时列表。”尝试在构造函数中设置writeTimeout=0
。
答案 1 :(得分:0)
您可能在启动时收到一个意外字节 - 微控制器正在发送它,或者连接插头可能会产生噪音。由于您只为每个传输的字符串读取一个字节,因此您将始终关闭一个字节。
而不是port.read(1)
,请尝试:
while True:
tmp=raw_input('send: ')
port.write(tmp)
port.flushOutput()
print port.read(port.inWaiting())
port.flushInput()
如果您在输入提示符下键入多个字符,也会发生这种情况。