Seriellen String zerlegen

Hallo Zusammen,

ich lese gerade die RS232 Schnittstelle Daten meiner Heizung in den Arduino ein.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);  //232_TX,232_RX

void setup() {
// Serielle übertragung, Open serial communications and wait for port to open:
  Serial.begin(19200);
  while (!Serial) {
    ;  // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Goodnight moon!");
  // set the data rate for the SoftwareSerial port
  mySerial.begin(19200);
  mySerial.println("Hello, world?");
}

void loop()  // run over and over
{
//Serielle übertragung
  if (mySerial.available())
    Serial.write(mySerial.read());
}

Das Ergebnis im Serial Monitor sieht so aus:

tm 2024-01-06 22:48:07
pm 93 1 7.1 67 190 4.6 5.0 57.5 200.0 60.0 0.0 58 55 35 80 0.0 0.0 0.2 0 140.0 140.0 0.0 0.0 140 140 140 140.0 140.0 0.0 0.0 140 140 17 140 100 100 100 100 100 100 64 38 14 0.0 0.0 0.0 7.4 0.00 0.00 0.0 0.00 48 0 0 111 48 48 93 109 1 0 0 0 0 0 0 0 0 0 0 0 4 305 1021 0 df1 0 fffa 4 0

Alles in einer Zeile, mit Lehrzeichen getrennt.

Nun müsste ich die einzelnen Werte jeweils in eine Variable Speichern. Später möchte ich nur bestimmte Variablen dann wieder weiterverarbeiten oder weitersenden. Leider bin ich hier zu viel Anfänger und finde nichts passendes mit dem ich das umsetzen kann.
Vielleicht hat jemand von euch ein Beispiel wie ich das umsetzen kann.

Vielen Dank!
Florian

Arbeite mal das

durch.

Wenn du die Daten in einem Char-Array hast, trennst du dann die Teile mit strtok auf.

Kennst Du den Aufbau der Datenfolge?
Da sieht einiges nach dezimal etwas nach float und ein paar nach HEX aus.

Dann könntest Du während des einlesens schon parsen, oder Du liest das komplett als Zeichenkette ein und parst später z.B. mit strtok().

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.