Problem mit client.read() Funktion

Hallo,

ich habe folgendes Problem:
Ich habe den Sketch WebClientRepeating aus dem Arduino Beispiel verwendet.
Es kommen auch Daten von einem Client an (siehe Anhang).
Sobald ich aber den Empfangspuffer in eine Stringvariable umwandle u. Auswerten möchte,
kommt kein Ergebnis.
Am Screenshot ist zu sehen, dass Daten in der Variable response vorhanden sind.
Hier ist der entsprechende Codeabschnitt.
Ich verzweifle noch.

if (client.available()) {
char buffer[2];
buffer[0] = client.read();
String response;
response = String(buffer[0]);
result = response.substring(20, 'Garage'); // Wo ist das Wort?
Serial.print(response);
}

Du solltest Dir anschauen, was substr macht.

Gruß Tommy

O.K.
in einem Testsketch habe ich das Durchsuchen der Zeichenkette mit
pos = Empfangstext_TCP.indexOf ("Garagentor"); hinbekommen.
Sobald ich die Funktion auf die umgewandelte Stringvariable Empfangstext_TCP = String(c);
anwende, funktioniert es wieder nicht.
Es hat irgendwie mit der char Variable zu tun.

char c = client.read();
Serial.write(c);
Empfangstext_TCP = String(c);
pos = Empfangstext_TCP.indexOf ("Garagentor");
if (pos != -1) {
Serial.println();
Serial.print("pos ist: ");
Serial.print(pos);
}

Lies dir bitte die Doku der Methoden durch

read() liest in einzelnes Zeichen. Keinen ganzen String. char ist ebenso nur ein Zeichen. Natürlich kannst du darin nicht nach einem Sub-String suchen

Wie denkst du denn, das „Garagentor“ in die variable Empfangstext_TCP hinein kommt?

O.K. Danke.
Ich hoffe es verstanden zu haben.
Ich muss mir also den gewünschten String byte für byte zusammenbauen.

Oder eine blockierende Methode wie readString() oder readStringUntil() verwenden. Das kann ok sein wenn man die Timeout Zeit mit setTimeout() nach unten setzt (1 Sekunde ist etwas zu lang)

Das ist alles in der Stream Klasse: