Hallo, ich habe noch ein kleines Problem. Dazu habe ich ein neues Thema eröffnet, da dies eventuell nützlicher für Andere im Bezug auf die Suche sein kann. Das war mein Ursprungsthread Beitrag "Konsolenfenster anpassen, Programme ausführen unter Linux" Programmiert wird weiterhin in C++ und auf dem Raspberry Pi 2 Nun zu meinem Problem: Ich habe eine Statemachine welche mir in dem Grundschritt immer alle Messwerte auf der Konsole ausgibt. Jetzt möchte ich aber ein Menü einführen, wo ich z.B. neue Werte über die Konsole eingeben kann. Das heißt, ich benötige nun eine Funktion die im Hintergrund läuft und einen "Tastendruck" erkennt. Diese Funktion darf mein Programm nicht anhalten auch bei einer Nichteingabe. Ich habe dieses Problem vor einiger Zeit mit der Programmierung unter Windows mit conio sauber lösen können. Jedes mal am Anfang der Schleife hat conio den "Tastendruck" in eine Variable gespeichert. Gab es keinen Tastedruck wurde stets eine "Dummyziffer" in die Variable geschrieben die vorher bekannt war. Das selbe wünsche ich mir jetzt für Linux. Ncurses hat mir nicht so den Erfolg gebracht. Ich wollte jetzt auch ungern meine gesamten Ergebnisse über den Haufen schmeißen und was komplett neues basteln. Ich benötige wie schon gesagt, nur diese Eine Hilfsfunktion. Hat da jemand Erfahrung wie man das umsetzen kann? Grüße Thomas
:
Bearbeitet durch User
http://stackoverflow.com/questions/448944/c-non-blocking-keyboard-input http://cc.byexamples.com/2007/04/08/non-blocking-user-input-in-loop-without-ncurses/
Andre R. schrieb: > http://stackoverflow.com/questions/448944/c-non-blocking-keyboard-input > > http://cc.byexamples.com/2007/04/08/non-blocking-user-input-in-loop-without-ncurses/ die zweite Lösung ist deutlich besser, das fehlende usleep() in der ersten verbrät einen CPU-Kern zu 100% in der while-Schleife.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.