pySerial writes to Arduino Uno get buffered

Posted by Bhaktavatsalam Nallanthighal on Stack Overflow See other posts from Stack Overflow or by Bhaktavatsalam Nallanthighal
Published on 2011-01-03T05:43:24Z Indexed on 2011/01/03 5:53 UTC
Read the original article Hit count: 278

Filed under:
|
|
|

I have a Python script that writes short messages to the serial port on my Arduino Uno board using pySerial. There is a loop and depending on some conditions, multiple writes can happen within a loop, something like this:

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")
    ...

But, when my Arduino board receives this it receives the first message as INIT, but the second one is being read as INITSTOP or INITCHECK and third one gets concatenated to the previous messages. My arduino program checks for specific message in this way:

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

Can anyone guide me on this? BTW, I don't think the problem is with the Arduino as it works perfectly when I test it with the Serial Monitor available with the IDE.

I've tried adding sleeps of upto 10 seconds before every write, but that did not work out.

© Stack Overflow or respective owner

Related posts about communication

Related posts about serial