0

我有一个 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 秒的睡眠,但这并没有奏效。

4

1 回答 1

1

试试这个:

serial.write("INIT\r")

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

于 2011-01-03T05:50:36.537 回答