struct Daten { // static const byte READ_BUFFER_SIZE {20}; static const int READ_BUFFER_SIZE {15000}; // Datentyp und Arraygrösse geändert - Es sollen Dateien bis ca. 10 kB eingelesen werden. char rxBuffer [READ_BUFFER_SIZE + 1] {'\0'}; // Platz für 20 Zeichen + Null-Terminator //byte index {0}; int index {0}; // Datentyp aufgrund Puffergrösse geändert char c {'\0'}; }; Daten meinBuffer; int total = 0; void setup() { Serial.begin(19200); } void loop() { // liefert true wenn das LF eingelesen wurde if (readLine(Serial, meinBuffer)) { Serial.print("Eingelesen: "); Serial.println(meinBuffer.rxBuffer); Serial.println(total); } } bool readLine(Stream& stream, Daten &daten) { bool status {false}; while (stream.available()) { daten.c = stream.read(); if (daten.c == '\n') { // wenn LF eingelesen daten.rxBuffer[daten.index] = '\0'; // String terminieren daten.index = 0; status = true; // String fertig eingelesen } else if ( (daten.c >= 32) && (daten.index < daten.READ_BUFFER_SIZE)) { // keine Steuerzeichen und solange noch Platz im Buffer ist daten.rxBuffer[daten.index++] = daten.c; // Zeichen abspeichern und Index inkrementieren total = daten.index; } } return status; }