SerialEvent

A serialEvent() függvény használatát mutatja be.


Utolsó felülvizsgálat: 2022.02.04 16:50


Ez a példa a serialEvent() függvény használatát mutatja be. Ez a függvény automatikusan meghívódik a loop() végén, ha soros adatok állnak rendelkezésre a pufferben. Ebben az esetben minden talált karakter hozzáadódik egy karakterlánchoz, amíg meg nem talál egy új sort. Ezután a karakterlánc kinyomtatásra kerül, és nullára áll vissza.

Hardver szükséglet

  • Arduino kártya

Az áramkör

Nincs, de a kártyát csatlakoztatni kell a számítógéphez; az Arduino Software (IDE) soros monitora használható az egy vagy több karakter kommunikálására és a karakterlánc visszavételére.

A kód

/*
  Serial Event example

  Amikor új soros adat érkezik, ez a vázlat hozzáadja azokat egy karakterlánchoz.
 Amikor újsor érkezik, a ciklus kiírja a karakterláncot, és törli azt.

  Erre jó teszt, ha egy NMEA 0183-as mondatokat küldő GPS-vevővel próbáljuk ki.

  MEGJEGYZÉS: A serialEvent() funkció nem érhető el Leonardo, Micro vagy más
  ATmega32U4 alapú kártyákon.

  created 9 May 2011
  by Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/communication/SerialEvent
*/

String inputString = "";         // egy karakterlánc a bejövő adatok tárolására
bool stringComplete = false;  // hogy a karakterlánc teljes-e

void setup() {
  // soros port inicializálása:
  Serial.begin(9600);
  // lefoglal 200 bájtot az inputString számára:
  inputString.reserve(200);
}

void loop() {
  // nyomtasd ki a karakterláncot, amikor újsor érkezik:
  if (stringComplete) {
    Serial.println(inputString);
    // törölje a karakterláncot:
    inputString = "";
    stringComplete = false;
  }
}

/*
  A SerialEvent akkor fordul elő, amikor új adat érkezik a hardveres soros RX-be.
  Ez a rutin minden egyes time loop() futás között lefut, így a cikluson belüli
  késleltetés késleltetheti a választ. Több bájt adat állhat rendelkezésre.
*/
void serialEvent() {
  while (Serial.available()) {
    // kapja meg az új bájtot:
    char inChar = (char)Serial.read();
    // add hozzá az inputStringhez:
    inputString += inChar;
    // ha a bejövő karakter egy újsor, állítson be egy flag-et, hogy a főciklus tegyen valamit:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.