Ich habe da ein kleines Problem. Und zwar habe ich mir überlegt, das ich über ein Ethernet-Shield einen Datenstrom bekomme, welchen ich nach bestimmten Suchbegriffen durchsuchen möchte um dann eine Aktion durch zu führen, z.B. LED an/aus.
Gibt es da eine Funktion?
Bei Strings kann ich ja nicht die ganze Zeit neue Wörter rein laden und diese Durchsuchen, oder?
Aduadu:
Bei Strings kann ich ja nicht die ganze Zeit neue Wörter rein laden und diese Durchsuchen, oder?
Klar geht das solange du immer ganze Zeilen einliest.
Funktion um C Strings zu vergleichen sind strcmp() (für ganze Strings), strncmp() (für Teil-Strings am Anfang) und strstr() (für Teil-Strings irgendwo)
Nur zum Verständnis.
Wenn ich dauerhaft neue Daten rein bekomme, kann ich die mir strcmp() vergleichen?
Und der Interne-Speicher läuft nicht über o.ä.?
Kommt drauf an wie die Daten aussehen. Das werden ja irgendwie getrennte Datensätze sein.
Verschiedene Befehle oder ähnliches. z.B.:
LED1,an
LED5,aus
LED8,an
Die kann man nacheinander einlesen und getrennt behandeln. Wenn ein Befehl eingelesen, verarbeitet und ausgeführt wurde kann man den Puffer mit dem nächsten Datensatz überschreiben.
Bei dem oben genannten Beispiel kann man übrigens mit strncmp() nach "LED" abfragen. Dann mit etwas Zeigerarithmetik und atoi() die LED-Nummer Parsen, dann mit strtok() oder strchr() ein Zeichen nach dem Komma springen und dann auf "an" oder "aus" abfragen. Da gibt es zum Teil mehrere Optionen.
Einfacher wird es wenn man die Kommandos vereinfacht:
L1,1
L5,0
L8,1
Einzelne Zeichen kann man mit == vergleichen. Dann braucht man hier nur noch strtok() um die zwei Tokens am Komma zu trennen
Aduadu:
Nur zum Verständnis.
Wenn ich dauerhaft neue Daten rein bekomme, kann ich die mir strcmp() vergleichen?
Und der Interne-Speicher läuft nicht über o.ä.?
Für die Speicherverwendung bist du verantworlich Wenn du die "reinkommenden" Strings abspeichern willst,
wird es irgendwann eng. Wenn du den zu vergleichenden String nach dem Vergleich mit dem nächsten überschreibst,
was ich vermute, kann nichts passieren.