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.