Danke für deine Antwort, ich hab das definieren versucht, kein Unterschied.
Dann hab ich ein delay von 10 nach content.concat() eingefügt. Es geht nun.
Hast du eine Erklärung warum?
Und ausserdem wird das zurückgegebene nach dem 70 Zeichen wieder zu dem unsinnigem Zeug.
Ist aber nicht weiter schlimm.
Die Daten laufen mit 9600 Baud rein, wahrscheinlich wird der Eingangsbuffer schneller ausgelesen als die Zeichen reinkommen, er ist als kurzzeitig leer und die Schleife wird verlassen. Das delay(10) verhindert das. Du solltest besser mit einem Stringdelimiter arbeiten und die Zeichen so lange einlesen, bis der Delimiter erkannt wird.
Ganz einfach. Die serielle Übertragung ist langsam. Bei 9600 Baud (und mehr solltest du bei SoftwareSerial nicht verwenden) dauert ein Zeichen etwa 1ms! Du versuchst also Zeichen einzulesen die noch unterwegs sind.
Besser liest man daher bis zu einem Terminator ein. z.B. ein Linefeed oder Carriage Return. Den SerialMonitor kann man so einstellen, dass das immer mitgeschickt wird. Hier ist eine bessere Auslese-Routine, die auch auf die schlechten und ineffizienten String Objekte verzichtet: http://forum.arduino.cc/index.php?topic=228697