2
這裏的大圖片:計時問題使用PySerial與Arduino的烏諾
我試圖通過記錄設定的位置,然後回放它們來控制步進電機。要控制步進器,我正在使用AccelStepper。
由於移動數據很大,我需要將它存儲在我的Mac上,並使用串行連接將其發送到Arduino。
另外,由於AccelStepper的工作方式,我無法承受延遲。
這裏的問題:
下面的代碼時,我插入約60毫秒以上的延時工作。但是,這將AccelStepper搞砸了。
我的理解是,第一個while循環「聽」到串口線。如果沒有可讀的內容,我會向Mac發送'A'以請求一些數據。當有數據可供讀取時,此循環會中斷。
第二個循環讀取串行線,直到遇到換行符。此代碼適用於延遲,並且沒有延遲。
這有道理嗎? 謝謝你。
================================
if (stepper.distanceToGo() == 0)
{
while (Serial.available() <= 0) { // Ask Mac for more data.
Serial.print("A");
delay(60); // Argh line!
stepper.runSpeedToPosition();
}
while(Serial.available() > 0) { // There's info on the serial line
character = Serial.read();
content.concat(character);
if (character == '\n') break; // Keep reading until newline
stepper.runSpeedToPosition();
}
感謝您考慮這一點。不幸的是,我仍然需要Serial.print(「A」)之後的延遲。因爲它一直工作。 – ixodid