Servus!
Das ist mein erster Forums Beitrag deswegen korrigiert mich gern falls ich etwas falsch mache. Nun zu meinem Problem:
Aufgabe ist es eine Steueranweisung zu schreiben in dem 3 verschieden Menüs in einem "Restaurant" durch den Seriellen Monitor ausgegeben werden sollen, je nach dem welches der 3 man vorher durch Eingabe ausgewählt hat. Das ganze am besten als switch umgesetzt. Mein Code dazu der eigentlich Funktioniert stelle ich unten bereit.
Allerdings schläft der Serielle Monitor total ein und ich bekomme vielleicht alle 10 Sekunden eine Ausgabe wenn ich etwas in die Zeile schreibe... vielleicht kann mir ja jemand helfen!
Wenn es also nicht "Menu1" ist, kehrt find() erst nach dem Timeout zurück - und natürlich bei den anderen beiden auch so.
Du hast also in jedem loop()-Durchlauf zwei, bei anderer oder keiner Eingabe drei Timeouts abzuwarten. Ich glaube, der Default-Timeout ist eine Sekunde.
Die gefühlten 10s sind dann vermutlich 3
Randbemerkung: Das Häkchen "Lösung" bei Beitrag #4 ist etwas voreilig - Du kennst jetzt die von mir vermutete Ursache für die Bremse. (Und man muss bei jedem weiteren Beitrag ein Fenster wegklicken)
Lösungsansatz:
Nehmen wir an, die Eingabe wird durch "Enter" abgeschlossen. Das erzeugt dann hinter dem Text ein Zeilenende-Zeichen '\n' (sofern das nicht im seriellen Monitor oder einem benutzten Terminalprogramm abgestellt wurde). Also alle Zeichen bis zum Zeilenende in einen Puffer lesen (*) und danach erst die empfangene Zeichenkette auf "MenuX" vergleichen.
Stichworte zum Weiterlesen: Array, Array of char, C-String, strcmp()
(*) Das macht im Prinzip die Methode readBytesUntil() von Serial/Stream auch.