Doc_Arduino:
Also die Geschichte mit der Seriellen haste sicherlich in der Form nicht aus diesem Forum. Entweder woanders her oder falsch zusammenkopiert.
Naja, ich mir was an Hand der Referenz zusammen gereimt. Vermutlich nicht ganz richtig. Teile sind auch von irgendwelchen Beispielen. Ich werde das nochmal überarbeiten.
char inChar = (char)Serial.read()
die Serielle kann nur Byteweise senden und empfangen. Ein Cast auf char vor Übergabe ist nicht notwendig.
Ui, das wollte ich so gar nicht. Habe wohl was geändert und vergessen was raus zu löschen. Interessanterweise nimmt der Kompiler das. das (char) sollte da nicht sein. Durch copy and paste ist das gleich mehrfach drinnen.
Serial.flush()
dient zum warten bis der Inhalt des serielle Sendebuffers komplett gesendet wurde. Bedeutet, macht beim einlesen keinen Sinn.
Ok, dann schmeiß ich das raus. Ich dachte, dass dadurch der Buffer geleert wird, damit beim nächsten Durchlauf von loop nichts mehr davon ausgelesen wird, was derzeit drinnen ist. Habe jetzt nochmal in die Referenz geschaut. Keine Ahnung, was ich da gelesen habe, oder mir dabei gedacht habe. Ist natürlich völliger Unsinn, was ich da gemacht habe.
Desweiteren wunderst du dich wegen Kommunikationsproblemen. Dir fehlen klar abgerenzte Sende und Empfangsroutinen. Du möchtest mehrere Zeichen hintereinander einlesen. Wohin? Du hast keinen Puffer?
Deshalb lese ich ja immer nur 1 Zeichen ein. Ich gebe zu, ich wollte mir damit das umständliche Handling von Zeichenketten sparen. Hatte zuerst String, aber dann bemerkt, dass das ziemlich ungünstig ist, was Ressourcen und Memorymanagement anbelangt.
Gewöhne dir an mehr Funktionen zuschreiben und diese in der loop aufzurufen. Man erhält und behält den Überblick. Die loop mit allen Code wird schwierig zulesen und es erschwert die Fehlersuche. Du bekommst damit auch lokale Variablen die plötzlich das machen was sie sollen. Du wirst staunen. Ich denke dabei gerade an deine fromserial = false
Ja, das werde ich gleich mal machen. Was ist aber mit fromserial = false; falsch? Verstehe ich jetzt nicht. Die ist doch global und das wollte ich eigentlich auch so.
Und der Compiler wirft einen Haufen Warnungen aus.
Komisch. Bei mir nicht.
Klar ist es schwierig jetzt den Code zu fixen. Deshalb sollte man nicht gleich alles zusammenwürfeln was man so denkt. Stück für Stück programmieren und testen testen testen. Erst wenn das bisherige sicher läuft wird die nächste Funktion eingebaut. Hinterher wird man sonst nicht mehr froh.
Ich kriege das schon hin mit dem Fixen des Codes.
Werde mich gleich an die Arbeit machen.
Wenn ich darf, stelle ich das Ergebnis dann zur weiteren Begutachtung hier rein.
Vielen dank erstmal für die Hilfe.