Um Daten aus dem Zwischenspeicher gezielt zu finden kann man Serial.find() benutzen. Wenn das Ziel gefunden wurde gibt die Funktion ein true zurück. Falls nicht oder das Zeitlimit für die Suche überschritten wird, dann gibt sie ein false zurück. 

Anmerkung:

Die Funktion find() erlaubt als Parameter nur den Typ char. Um jetzt z.B. nach einem String zu suchen müsste man ein char Array benutzen (siehe Beispiel).


Syntax:

Serial.find(ziel);

Parameter:

  • ziel: Die Daten, nach denen gesucht werden sollen z.B. ein Wort. Erlaubt ist aber nur der Datentyp char.

Beispiel:

char ziel[] = "hallo";  //Für den Suchbegriff wird ein char Array benutzt
                        //Im Grunde ist dies wie ein String zu betrachten

void setup() 
{
  Serial.begin(9600);   //Initialisierung der seriellen Schnittstelle
}

void loop()
{
  //Nur wenn es ungelesene Daten gibt
  if (Serial.available() > 0)
  {
    if(Serial.find(ziel))
    {
      Serial.println("Gefunden");
    }
  }
}

Serieller Monitor:

serial.find.gif

Abbildung 2: Ausgabe 1
Quelle: BBS2 Wolfsburg


Alternative mit der Funktion readString():

String hallo;
String ziel = "hallo";

void setup() 
{
  Serial.begin(9600);   //Initialisierung der seriellen Schnittstelle
}

void loop()
{
  //Nur wenn es ungelesene Daten gibt
  if (Serial.available() > 0)
  {
    eingabe = Serial.readString();
    Serial.println(eingabe);

    //Da an einem readString() immer ein \n anhängt
    //sollte man lieber gucken, ob die Daten aus dem readString() den Suchbegriff enthalten
    
    if(eingabe.indexOf(ziel) >= 0)
    {
      Serial.println("Gefunden");
    }
  }
}

Anmerkung:

Wenn man mit readString() die Eingabe untersuchen möchte sollte man beachten, dass am Ende immer ein neue Zeile mit angehängt wird. Somit sollte man entweder an seinen Suchbegriff ein \n anhängen oder man benutzt Funktionen wie indexOf().


Serieller Monitor:

serial.readString.gif

Abbildung 4: Ausgabe 2
Quelle: BBS2 Wolfsburg

Zuletzt geändert: Donnerstag, 18. Februar 2021, 10:50