String bis zu einem bestimmter Zeichen auslesen

Pass6:
Ich kann die Nachricht meinen Netzteilen auf dem Monitor lesen. Ich möchte mein String nicht zerlegen, sondern nur ein teil davon speichern.

Mit dem von mir sonst nicht genutzten String-Objekt möglicherweise so:

String chbuf_ISR = "00,0033;31,1192;0,00000;0,00600;66,00;00,00";

void setup() {
  Serial.begin(9600);
  Serial.println("Start");
  Serial.println(chbuf_ISR);
  byte pos1 = 0, pos2 = 0;
  pos1 = chbuf_ISR.indexOf(';');
  Serial.println(pos1);
  pos2 = chbuf_ISR.indexOf(';', pos1 + 1);
  Serial.println(pos2);
  pos1 = chbuf_ISR.indexOf(';', pos2 + 1);
  Serial.println(pos1);
  pos2 = chbuf_ISR.indexOf(';', pos1 + 1);
  Serial.println(pos2);
  String buf_ISR = chbuf_ISR.substring(0, pos2 + 1);
  Serial.println(buf_ISR);
}

void loop() {}

Tommy56:
Das mit dem CR/LF vermute ich auch, ...

Wäre die einfache Möglichkeit, geht aber auch ohne, da der Arduino "DVC?\r" sendet und dann auf Antwort wartet. Es handelt sich also nicht um einen kontinuierlichen Datenstrom, sondern um eine Frage-Antwort Kommunikation.

Ja, nur wenn er das im Dauerbetrieb (danach klingt es) in einen String einliest (immer 1 Zeichen addieren), hat er ganz schnell Speicherprobleme.
Er scheint aber in ein char-Array einzulesen.
Leider ist er nicht sehr mitteilsam.

Gruß Tommy

In #3 sehe ich buf_ISR.replace() und buf_ISR.substring(), das sind Methoden von String. Daher tippe ich auf String als Objekt.

Tommy56:
Leider ist er nicht sehr mitteilsam.

Ich habe gehört, Menschen müssen essen, trinken, schlafen ... ::slight_smile:

Ach?

Aber auch als er da war, musste man ihm jede Info aus der Nase ziehen.

Gruß Tommy