Python串口读取延迟

时间:2013-11-29 14:21:20

标签: python avr pyserial

我正在使用python中的这个串行模块。我有点问题。我希望我的脚本从控制台获取一个字符,将其发送到AVR板,并回读响应。 每次我从USB端口读取并打印出来时,我都会看到之前的结果。为什么? 例如:

我写了5 我什么都没读 我写了6 我读了5

import 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()

2 个答案:

答案 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()

如果您在输入提示符下键入多个字符,也会发生这种情况。