Olvasgattam könyveket, neten is keresgéltem de nem találtam megoldást az adott feladatra.
Mivel a soros portról érkező adatok (tudtommal) a stream osztályba tartoznak, ezért egy bejövő adatsorból csak egy feltétel alapján kereshetünk: Serial.find().
Viszont nekem van olyan adatsorom, hogy ha benne van az "up" vagy az "us=" rész, akkor egy változót 1-re kell állítani, majd az "us=" után következik 3-5 karakter hosszú szám, némi szöveg újra ("ds=") és megint egy 3-5 karakter hosszú szám.
Eddig a Serial.find("us=") után következő 2 számot a Serial.parseInt() parancs szedte ki 2 változóba, viszont muszáj volt úgy módosítanom a dolgokat, hogy a soros portról érkező adatokat soronként olvasom be egy string változóba, megvizsgálom a tartalmát, ha valami keresett rész benne van akkor végrehajtódik aminek kell, utána pedig várja a következő sort, ami majd ismét bekerül a string-be és ismét megvizsgáljuk, hogy van-e benne valami ami kell...
Ezzel 2 probléma lehet. Ha egyszerre kapok mondjuk 600 sor adatot, akkor szerintem az UNO nem fog tudni megbirkózni vele.
A másik pedig, a fenti probléma, hogy ha egy sorban a bejövő adat például "csatlakoztam, a sebességem felfele irányban= 567 lefele irányban= 32114"
akkor addig megvan, hogy beazonosítsam, hogy "csatlakoztam". Viszont még a 2 számot 2 integer változóba valahogy ki kellene szedni.
Kód: Egész kijelölése
String str = "";
if (Serial.available() > 0) {
str = Serial.readStringUntil('\r\n');
if (str.substring(10,12) == "up") Serial.println("ADSL connected UP");
}