pySerial записывает в Arduino Uno буферизацию - PullRequest
0 голосов
/ 03 января 2011

У меня есть скрипт Python, который записывает короткие сообщения в последовательный порт на моей плате Arduino Uno, используя pySerial.Существует цикл, и в зависимости от некоторых условий в цикле могут происходить множественные записи, что-то вроде этого:

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, так как он отлично работает, когда я тестирую его с помощью Serial Monitor, доступного в IDE.

Я пробовал добавлять спящие до 10 секунд перед каждой записью, но это не сработало.

1 Ответ

1 голос
/ 03 января 2011

Попробуйте вместо этого:

serial.write("INIT\r")

writelines, вероятно, занимает список (но я не могу проверить это сейчас).

...