INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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 {
  fload wert1;
  int wert2;
  float wert3;
} myStruct;    // <-- eine Variable vom Typ werte

// Zugriff
myStruct.wert1 = 12.34; // <-- schreiben
myStruct.wert2 = 55;  
float f = myStruct.wert1; // <-- lesen

// senden
udp.write(myStruct,sizeof(myStruct); // was und wie lang

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Serielle Werte in String einlesen um damit zu rechnen 425t 2 240 26.08.2020 13:19
Letzter Beitrag: 425t
  Wert durchsuchen und in einen String packen Juljano 12 3.208 28.06.2020 13:50
Letzter Beitrag: Tommy56
  bekomme kein Variablenwert der im String sein soll Willmi64 4 449 06.06.2020 11:41
Letzter Beitrag: Willmi64
  Array Werte in einen String ChriscoGT 3 556 12.05.2020 15:41
Letzter Beitrag: Tommy56
  Mega & SIM800L - Rufnummer Empfänger von String zu Char kiximek 6 718 12.05.2020 07:02
Letzter Beitrag: kiximek
  String, char - und wie die Trennung eines Inputs vornehmen rev.antun 1 496 11.05.2020 20:01
Letzter Beitrag: Tommy56
Question Frage der Optimierung String - char[n] bytecook 9 1.299 08.03.2020 21:27
Letzter Beitrag: Tommy56
  String von SD Lesen und speichern zur Weiterverarbeitung volvodidi 1 734 11.02.2020 12:00
Letzter Beitrag: Tommy56
  string in char wandeln TT-Tom 3 1.168 04.11.2019 17:20
Letzter Beitrag: TT-Tom
  2D String Array DirkTH 5 1.083 08.10.2019 09:07
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste