arduino串列埠中斷資料
阿新 • • 發佈:2018-12-20
之前用arduino些串列埠接收都是這樣子的
void loop() {
comdata = "";
while (Serial.available()) //時刻讀取硬體串列埠資料
{
comdata += char(Serial.read());
delay(2);
}
while (Serial.read() >= 0) {} //清除串列埠快取
if (comdata.length() > 0)
{
Serial.println(comdata);
// comdata = "";
}
}
然後發現頻繁接收會有資料丟失
發d有時會沒有返回 資料時不時丟失!!!!!!
然後用中斷寫吧
其實沒有什麼大的改變,就是用了個 void serialEvent() 這個串列埠中斷是個偽中斷。
String comdata = ""; void setup() { // 初始化串列埠程式 Serial.begin(9600); } void loop() { if (comdata.length() > 0) { Serial.println(comdata); comdata = ""; } } void serialEvent() { comdata = ""; while (Serial.available()) //時刻讀取硬體串列埠資料 { comdata += char(Serial.read()); delay(2); } while (Serial.read() >= 0) {} //清除串列埠快取 }
這樣就可以了
測試了一會沒有發現什麼問題。
有什麼錯誤多多指正!!!!