String analysieren und zerlegen
|
22.01.2020, 16:29
Beitrag #1
|
|||
|
|||
String analysieren und zerlegen
Hallo zusammen,
vorab möchte ich erwähnen, dass ich ich nicht vom Fach bin und dass ich bereits viel gewühlt habe. Komme aber mit meinem Problem nicht weiter. Nun zu meinem Problem: Ich möchte via UDP Daten empfangen, die in einem String zusammen gesendet werden. Den String baue ich selber zusammen, allerdings kann sich die Zusammensetzung ändern und der sendende Teilnehmer variiert. Der Inhalt kann sich quasi frei und ungeordnet zusammensetzen. Hier Beispiele, wie der String aussehen kann: "Höhe=123;Temperatur=12;Zustand=System Überhitzt;" oder "Temperatur=12;Farbe=blau;" --> Es gibt also keine fest definierte Reihenfolge oder feste Länge, so zumindest der Plan :-) Ich suche eine Funktion, wie ich den String zerlege und die textuell beschriebenen Variablen in Variableninhalte kopieren kann. quasi in der Form - Wenn im String das Wort Temperatur vorkommt, soll der entsprechende Wert in die Variable Temperatur geschrieben werden. - Natürlich kenne ich mögliche Variablen und deklariere sie auch. Den Aufbau stelle ich mir quasi so vor: if (String enthält das Wort "Temperatur") { Temperatur = Der Wert, der mit = hinter dem gefundenen Wort steht } Ich hoffe, ich habe das verständlich beschrieben und Ihr könnt mir weiterhelfen. Danke für Eure Hilfe. |
|||
22.01.2020, 16:37
Beitrag #2
|
|||
|
|||
RE: String analysieren und zerlegen
Es ist besser, wenn Du Dir auf den kleinen AVR die Klasse "String" (mit großem S) nicht erst angewöhnst, sondern mit C-strings (char-Arrays) arbeitest.
Hier gibt es einige Infos dazu. Wie Du die Zeichenkette mit strtok zerlegst, kannst Du z.B. hier sehen. Gibt es einen besonderen Grund warum Du die Werte als Zeichenkette überträgst? Mit UDP kannst Du in einem Struct doch beliebige Zahlen übertragen (Beispiel ab #32). Dann ist es dem behandelnden Programm überlassen, als was diese interpretiert werden. Das Programm ändert sich ja nicht, wenn Du anstelle von Temperatur plötzlich Farbe überträgst. Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
22.01.2020, 17:10
Beitrag #3
|
|||
|
|||
RE: String analysieren und zerlegen
Hallo Tommy,
danke für Deine Info. Die Übertragung als Zeichenkette erschien mir einfach. Ich kann im Quellprogramm die Zeichenkette sehr einfach beliebig zusammensetzen und füge immer nach einer Variable und deren Wert ein Trennzeichen ein. So habe ich es zumindest zusammengeschustert ;-) Der erwähnte Struct sagt mir leider nichts. Wenn ich Deinen Ansatz richtig verstehe, soll ich den String in ein Char-Array einlesen und dann in dem Array die Infos suchen und extrahieren? Gruß Ingo |
|||
22.01.2020, 17:28
Beitrag #4
|
|||
|
|||
RE: String analysieren und zerlegen
(22.01.2020 17:10)Igom schrieb: Wenn ich Deinen Ansatz richtig verstehe, soll ich den String in ein Char-Array einlesen und dann in dem Array die Infos suchen und extrahieren?Wenn Du den Umweg über eine Zeichenkette gehen willst, dann ja. An struct wirst Du über kurz oder lang sowieso nicht vorbei kommen. Das ist einfach die Zusammenfassung von Einzelwerten unter einem neuen Namen, also vereinfacht Dein eigener neuer Datentyp. Beispiel: Code: struct werte { Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste