Ich möchte gerne Seriel die Raumnamen und Solltemperaturwerte festlegen... hab schon mit Serial Read umgetestet bekomms aber nicht zum laufen. Meine Vorstellung war bei der Serieleneingabe:
Falls Du Dein Projekt mal produktiv einsetzen willst (24/7), solltest Du die String-Klasse nicht benützen. Die Art und Weise, wie sie implementiert wurde, ist Gift für einen längeren Betrieb auf einem Mikrokontroller. Versuche Deinen Aufbau mit char-Arrays zu machen.
Zur Frage1:
Lies die ganze GET-Zeile ein, bevor Du mit dem Suchen von Teilstrings beginnst. Alternativ könntest Du direkt parsen, dann müsstest Du aber eine kleine State Machine implementieren.
Am Einfachsten wäre also das Lesen des "GET "-Teils. Von da an schreibe den Pfad in einen Pufferbereich bis Du wieder auf ein Leerzeichen triffst. Dort ist der Pfad zu Ende und Du kannst wahrscheinlich aufhören, den Header weiter zu parsen. Du hast dann den ganzen GET-Pfad im Puffer und kannst Dich mittels strncmp() bzw. strstr() auf die Suche nach Deinen gewünschten Begriffen begeben.
Zu Frage 2:
Auch hier würde ich bis zum Trennzeichen (bei Dir wahrscheinlich eine Zeilenschaltung) in einen Puffer lesen (immer auf die Grössenbeschränkung achten) und dann mittels obigen Funktionen oder auch strtok() die Anweisungen auseinander nehmen. Ich würde mir allerdings gut überlegen, ob nicht ein kompakteres Protokoll erfolgversprechender ist.
was wäre denn bzgl. eines nicht blockierenden Auslesevorgangs sinnvoll, sprich ohne Verwendung des bösen delays?
a) Sobald ein Zeichen reinkommt 100ms warten, dann den Buffer einmal am Stück auslesen und dessen Inhalt mit dem vorgegebenen String vergleichen.
b) Sobald ein Zeichen reinkommt innerhalb der nächsten 100ms den Buffer permanent auslesen und dessen Inhalt somit permanent mit dem vorgegebenen String vergleichen.
Man markiert einfach das Ende des Strings mit einem Endzeichen. Meistens LF oder CR. Man kann auch beides nehmen (da das oft zusammen gesendet wird) und nur auf eines abfragen. Den Code dazu habe ich hier schon zigfach gepostet.
@Lan-Police
C Strings kannst du nicht wie String Objekte behandeln. Die kannst du nicht mit == vergleichen oder mit = zuweisen. Statt dessen gibt es dazu Funktionen wie strcmp() (string compare) oder strcpy() (string copy)