1. 程式人生 > >arduino串列埠中斷資料

arduino串列埠中斷資料

之前用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) {} //清除串列埠快取
}




這樣就可以了
在這裡插入圖片描述
測試了一會沒有發現什麼問題。

有什麼錯誤多多指正!!!!