pySerial写入Arduino Uno得到缓冲

时间:2011-01-03 05:43:25

标签: serial-port arduino pyserial

我有一个Python脚本,使用pySerial将短消息写入我的Arduino Uno板上的串口。有一个循环,根据某些条件,循环内可能会发生多次写入,如下所示:

while True:
    #Conditions block 1
    if <CONDITION1>:
        serial.writelines("INIT")
    elif <CONDITION2>:
        serial.writelines("NEW")
    ...

    #Conditions block 2
    if <CONDITION1>:
        # Fetch something from the Internet
        serial.writelines("CHECK")
    elif <CONDITION2>:
        # Fetch something from the Internet
        serial.writelines("STOP")
    ...

但是,当我的Arduino板接收到它时,它收到第一条消息为INIT,但第二条消息被读为INITSTOP或INITCHECK,第三条消息被连接到之前的消息。我的arduino程序以这种方式检查特定消息:

if(msg.equals("CHECK")) {
    // Do something
}
else if(msg.equals("INIT")) {
    // Do Something else
}

任何人都可以指导我吗?顺便说一下,我认为问题不在于Arduino,因为当我使用IDE提供的串行监视器进行测试时,它的工作正常。

我尝试在每次写入之前添加最多10秒的睡眠,但这没有用。

1 个答案:

答案 0 :(得分:1)

请尝试这样做:

serial.write("INIT\r")

writelines可能需要一个列表(但我现在无法检查)。