Forum: PC-Programmierung [C++] Linux ncurses=Windows conio?


von Thomas P. (tommy2002)


Lesenswert?

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
von moep (Gast)


Lesenswert?


von Andre R. (physicist)


Lesenswert?


von Markus F. (mfro)


Lesenswert?

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
Noch kein Account? Hier anmelden.