Ich würde das Einlesen der Daten und die Ausgabe des Ergebnisses trennen.
Aktuell passiert in Deinem Code folgendes:
if ((inchar[incount] ==13) || (inchar[incount] == 10)) // Ist Übertragung abgeschlossen?
{
if (incount = 13)
{
s_done = 1; // Bestätigung
anz_in = incount; // Weitergabe, Anzahl der Daten
Serial.print("IncharKomplett: ");
Serial.println(inchar);
Serial.print("Anzahl: ");
Serial.println(anz_in);
}
incount = 00; // reset Zähler
}
Das äußere if-Statement prüft ob die Zeichen mit dem ASCII-Wert 10 oder 13 übertragen wurden. Wenn ja, wird das als Zeilenende und damit als Ende der Übertragung erkannt.
Dann wird aber nicht geprüft ob das Zeichen ein newline (ASCII-Wert 13) ist, sondern ob incount den Wert 13 hat, also 13 Zeichen übertragen wurden. Abgesehen davon hast Du "incount = 13) gesetzt, das ist aber eine Zuweisung, kein Vergleich (incount == 13).
Das äußere if-Statement schlägt auch zu, wenn das Zeichen "10" übertragen wurde. Dabei wird dann incount einfach auf 0 gesetzt (incount = 00;) Kommt als nächstes Zeichen dann ein Newline (13) dann wird anz_in auf incount gesetzt und damit auf 0 und nicht auf die eigentlich gezählte Länge.
Den Code
else if (inchar[incount] == ' ') // löschen der Leerzeichen
{
Serial.flush();
}
else incount = incount+1; // Datenzähler erhöhen
}
verstehe ich auch nicht ganz. Vor Version 1.0 der IDE wurden mit Serial.flush() alle noch im Puffer vorhandenen seriellen Daten gelöscht. Damit würdest Du bei einem Leerzeichen in der Mitte Deiner Daten auch den ganzen schon übertragenen Rest löschen. Ab Version 1.0 der IDE sorgt Serial.flush() nur noch dafür das alle gepufferten Ausgabedaten übertragen weden. Das hat also auf das Lesen Deiner Daten keinen Einfluss. Außerdem ist ''' ein leerer String. Ein Leerzeichen wäre ' '. Wenn es nur darum geht, Leerzeichen zu ignorieren, dann würde ich folgendes machen:
if (inchar[incount] != ' ') // Leerzeichen ignorieren
{
incount++; // Datenzähler erhöhen
}
Also immer wenn es KEIN Leerzeichen war, den Zähler erhöhen. Wenn es ein Leerzeichen war, dann bleibt der Zähler wie er war und das nächste Zeichen überschreibt das Leerzeichen im Array.