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 秒のスリープを追加しようとしましたが、うまくいきませんでした。