0

pySerial を使用して Arduino Uno ボードのシリアル ポートに短いメッセージを書き込む Python スクリプトがあります。ループがあり、いくつかの条件によっては、次のようにループ内で複数の書き込みが発生する可能性があります。

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 として受信しますが、2 番目のメッセージは INITSTOP または INITCHECK として読み取られ、3 番目のメッセージは前のメッセージに連結されます。私のarduinoプログラムは、この方法で特定のメッセージをチェックします:

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

誰でもこれについて私を案内できますか? ところで、IDE で利用可能なシリアル モニタでテストすると、Arduino は完全に動作するので、問題は Arduino にあるとは思いません。

すべての書き込みの前に最大 10 秒のスリープを追加しようとしましたが、うまくいきませんでした。

4

1 に答える 1

1

代わりにこれを試してください:

serial.write("INIT\r")

おそらくリストを取得します(ただし、今writelinesは確認できません)。

于 2011-01-03T05:50:36.537 に答える