herbert-f:
Bei Strings:
client.print("%Beginn%");
funktioniert dies auch wunderbar.
Wenn ich jetzt:
String test="%Beginn%" zuweise und dann die Variable test senden möchte:
client.print(test);
kommt am Server ein zerhackter String an (Zeilenwechsel...)
Eigentlich ist doch kein Unterschied ob ich "%Beginn%" sende oder die Variable die "%Beginn%" enthält?
Arduino kennt zwei Arten von "Strings", und zwar:
- char-Arrays
- String-Objekte
Und beides ist etwas gaaaanz verschiedenes.
Auf char-Arrays kannst Du die Standard-Stringfunktionen anwenden, siehe:
http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html
Und mit String-Objekten kannst Du die Funktionen der String-Klasse verwenden.
Funktionen, die nicht speziell für den Umgang mit String-Objekten ausgelegt sind, erwarten grundsätzlich einen Pointer auf ein char-Array als Funktionsparameter! Und dasselbe ist offenbar bei Deiner client.print() Funktion der Fall!
Zur Deklaration eines char-Arrays musst Du Dir überlegen, wie lang das char-Array maximal sein muss, Du benötigst Platz für die maximale Länge plus ein Nullzeichen am Ende.
char str1[]="Sample string"; // <- lang genug für genau diesen String
char str2[40]; // <- 40 Zeichen, lang genug für einen 39-Zeichen-String plus Null-Char am Ende
strcpy (str2,"Test"); // <- kopiert was in den String hinein
Und der Funktionsaufruf würde dann lauten:
client.print(str2);
Wenn Du keine Funktionen hast, an die Du String-Objekte übergeben kannst, dann vermeide String-Objekte in Deinem Programm!
Nutze nur char-Arrays!
Bei C und C++ Programmierung sind char-Arrays die standardmäßige Art von Strings und NICHT String-Objekte!
Als Anfänger arbeitest Du Dich in dem Umgang mit char-Arrays und den dafür zur Verfügung stehenden Funktionen zur Stringmanipulation am besten gründlich ein, das braucht man bei C-Programmen ständig! Jedes C/C++-Tutorial hilft Dir diesbezüglich weiter.
Ich selbst verzichte in Arduino-Programmen vollständig auf String-Objekte und verwende nur char-Arrays.