Hallo,
ich lese TCP-Pakete aus und erhalte hierbei einen String (siehe Code).
while (client.available()) // Read all the lines of the reply from server and print them to Serial
{
String line = client.readStringUntil('\r');
Serial.print(line);
}
Wie kann ich in line nach bestimmten Zeichenfolgen z.B. "01play" suchen?
Gruß Chris
agmue
October 24, 2017, 11:36am
2
Meinst Du sowas wie memcmp() ?
Ja, nur muss ich in einem String suchen, oder benötige eine Möglichkeit, mit der ich anstatt dem String ein char-Array beschreiben kann, bis das cr kommt.
Tommy56
October 24, 2017, 11:49am
4
Für C-Char-Arays gibt es readBytesUntil.
Wenn Du unbedingt mit der Klasse String arbeiten willst, dann kannst Du auch line.find("01play"); benutzen.
Gruß Tommy
Du könntest folgendes benutzen:
int start = line.indexOf("01play");
Whandall:
int start = line.indexOf("01play");
Sehr geil- hiermit kann ich nun (fast) das umsetzen, was ich wollte.
Wenn ich mir jetzt hier nur noch das \r bei der Suche einsparen könnte, wäre das super.
if (line.indexOf("01play\r")) Serial.print("geht!");
Ich müsste also irgendwie line um das \r beschneiden, wenn ich das richtig sehe.
Wenn ich nämlich folgendermaßen suche, bekomme ich keine serielle Ausgabe:
if (line.indexOf("01play")) Serial.print("geht!");
Gruß Chris
Einfach nur if testet nicht das auf das du testen willst.
indexOf gibt -1 zurück, wenn nichts gefunden wird (falsch positiv) und 0 wenn der Strig am Anfag steht (falsch negativ).
String line = "abcdefg 01play the tune";
void setup() {
int index = 0;
Serial.begin(115200);
if ((index = line.indexOf("01play\r")) >= 0) {
Serial.print("bei Index ");
Serial.print(index);
Serial.print(" gefunden, mit \\r geht!");
}
if ((index = line.indexOf("01play")) >= 0) {
Serial.print("bei Index ");
Serial.print(index);
Serial.print(" gefunden, ohne \\r geht!");
}
}
void loop() {
}
bei Index 8 gefunden, ohne \r geht!
Ja, jetzt. Is echt geil! Weiss ned, wo da bei mir der Wurm drin war.
Jetzt funzt's- vielen Dank!
Gruß Chris
Chris72622:
Weiss ned, wo da bei mir der Wurm drin war.
Deswegen finde ich vollständige, lauffähige Minibeispiele des 'Problems' wichtig.
Dann hätte man dir genauer sagen können wo der Wurm bohrt.