Arduino代码:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
String inComing;
pinMode(LED_BUILTIN, OUTPUT);
while(1)
{
if (Serial.available())
{
inComing = Serial.readString();
delay(500);
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
if (inComing == "GO")
{
Serial.println("GO");
break;
}
}
}
}
的Python:
import serial
import time
duino = serial.Serial('/dev/ttyACM0', 9600, timeout=None)
def sync():
mark = "GO"
duino.write(mark.encode('utf-8'))
time.sleep(1)
while (duino.inWaiting() == 0): # Code Getting Stuck here!!
## if (duino.inWaiting() > 0): Redundant
## break
pass
inComing = duino.readline().decode().strip('\r\n')
print(inComing) ## Debug
if (inComing == mark):
return 1
else:
print("Not Yet")
return 0
if __name__ == "__main__" :
chk = 0
while (not(chk)):
print("syncing") # Debug
chk = sync()
print("sync complete")
我希望arduino在进入loop()之前在设置()中等待来自Pi的命令。 Pi也应该收到Arduino的回复,然后开始记录收到的数据。出于某种原因,当我在Pi端调用inWaiting()时,我的程序挂起。当我运行调试器并逐步执行它时,一切都执行得很好。当我运行代码时,它会卡住。 arduino端也可以通过串行监视器完美地工作。 不知何故,pySerial错过了传入的数据。我也试过从arduino每100mS发送一个响应,但它似乎仍然无法通过。 什么可能导致inWaiting()错过缓冲区中的数据?