Endlos Programm abbrechen
Endlos Programm abbrechen
Hallo, ich habe ein Programm das so lange laufen soll bis ich eine bestimmte Taste drücke.
Bisher habe ich nur Beispiele gefunden bei dem etwas abgefragt wird und das Programm so lange wartet bis eine Eingabe erfolgt.
Bisher habe ich nur Beispiele gefunden bei dem etwas abgefragt wird und das Programm so lange wartet bis eine Eingabe erfolgt.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Endlos Programm abbrechen
Üblicherweise warten Konsolenprogramme bis eine Eingabe erfolgt - also werden Ein- (und Ausgaben) in der Regel gepuffert.
Programme wie beispielsweise Texteditoren müssen die Eingabe einer einzelnen Taste jedoch mitbekommen. Ich bin mir sicher, dass man das durch das Abschalten des Eingabepuffers realisieren kann, aber das ganze wird dann schon ein bisschen tricky.
Ich weiß, dass das mit der Curses-Bibliothek (bzw. NCurses) realisiert ist. Da würde ich mal gucken.
Bei einem Programm mit Fenster ist das natürlich kein großes Problem.
Programme wie beispielsweise Texteditoren müssen die Eingabe einer einzelnen Taste jedoch mitbekommen. Ich bin mir sicher, dass man das durch das Abschalten des Eingabepuffers realisieren kann, aber das ganze wird dann schon ein bisschen tricky.
Ich weiß, dass das mit der Curses-Bibliothek (bzw. NCurses) realisiert ist. Da würde ich mal gucken.
Bei einem Programm mit Fenster ist das natürlich kein großes Problem.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Endlos Programm abbrechen
Hi, danke ich schau mir das an.
Wie macht das wohl top?
Das Programm wird gestartet und zeigt mir die Prozesse an.
Ich kann aber die Ausgabe verändern indem ich eine Taste drücke ohne dass das Program pausiert.
Da muss es doch etwas geben.
Die Frage ist wie muss ich meine Frage stellen damit ich eine Antwort finde.
Es könnte sein das ich eine Antwort gefunden habe. Ich muss es noch ausprobieren.
https://stackoverflow.com/questions/448 ... oard-input
Wie macht das wohl top?
Das Programm wird gestartet und zeigt mir die Prozesse an.
Ich kann aber die Ausgabe verändern indem ich eine Taste drücke ohne dass das Program pausiert.
Da muss es doch etwas geben.
Die Frage ist wie muss ich meine Frage stellen damit ich eine Antwort finde.
Es könnte sein das ich eine Antwort gefunden habe. Ich muss es noch ausprobieren.
https://stackoverflow.com/questions/448 ... oard-input
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Endlos Programm abbrechen
Ich vermute mit ncurses.
top heißt, wir reden tatsächlich von Linux. Dann würde ich mir ncurses auch tatsächlich ansehen.
Damit lässt sich eine komplette Fensterverwaltung in der Konsole einrichten.
Hier müsste ich zu Hause auch Beispielprogramme haben, weil ich mal angefangen habe, meinen Text-Editor auf die Linux-Konsole zu bringen - aber wegen Zeitmangels auch sehr früh das Projekt wieder sein gelassen habe.
Das Abfangen einer einzelnen Taste ist da aber drin.
Nerv mich mal dazu... dass der Punkt auf meiner Todo-Liste weiter oben bleibt.

PS: NCurses bei Wikibooks
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Endlos Programm abbrechen
Wäre auch eine Gelegenheit diesen Bereich zu vervollständigen
https://www.proggen.org/doku.php?id=gui:ncurses:start

https://www.proggen.org/doku.php?id=gui:ncurses:start
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Endlos Programm abbrechen
Da dachte ich auch mal dran... aber ich wollte mich da jetzt nicht aus dem Fenster lehnen. ^^nufan hat geschrieben: ↑Di Aug 24, 2021 11:47 amWäre auch eine Gelegenheit diesen Bereich zu vervollständigen![]()
https://www.proggen.org/doku.php?id=gui:ncurses:start

Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
- Beiträge: 5
- Registriert: So Sep 05, 2021 5:08 pm
- Wohnort: Oberpfalz
Re: Endlos Programm abbrechen
Hallo darkwin!
Hier habe ich einen code für die Linux-Konsole.
Vielleicht umzumodeln auf Windows. Weis ja nicht, was du für ein System hast:
Hier habe ich einen code für die Linux-Konsole.
Vielleicht umzumodeln auf Windows. Weis ja nicht, was du für ein System hast:
Code: Alles auswählen
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
//ungetc(ch, stdin);
return ch;
}
return 0;
}
void clpuf(void)
{
while (getc(stdin) != '\n')
;
}
int main(void)
{
int letter= 0;
printf("kbhittest 0.01\n");
while((letter = kbhit()) == 0)
{
//if (letter != 0) clpuf();
printf("Press a key: %d\n", letter);
}
printf("You pressed '%c'= %ddez = %xhex\n", letter,letter,letter);
return 0;
}
Re: Endlos Programm abbrechen
Hallo Josef, danke schau ich mir an.
Ich nutze Linux.
Mein Projekt das ich derzeit Programmiere soll später einmal auf einem ESP laufen.
Da ich aber gar nicht so richtig wusste wie ich den Algorithmus dafür entwickeln muss, mache ich das erst einmal mit meinem PC und lasse es wenn es läuft auf einem Raspberry 4 laufen.
Anschließend kommt dann die Portierung auf den ESP.
Dieses Flashen und testen auf einen ESP/Arduino braucht einfach zu viel Zeit.
Ich nutze Linux.
Mein Projekt das ich derzeit Programmiere soll später einmal auf einem ESP laufen.
Da ich aber gar nicht so richtig wusste wie ich den Algorithmus dafür entwickeln muss, mache ich das erst einmal mit meinem PC und lasse es wenn es läuft auf einem Raspberry 4 laufen.
Anschließend kommt dann die Portierung auf den ESP.
Dieses Flashen und testen auf einen ESP/Arduino braucht einfach zu viel Zeit.
Re: Endlos Programm abbrechen
Hallo, kurze Rückmeldung.
Ich habe es mit ncurses gemacht.
So konnte ich auch den Bildschirm etwas einteilen.
So konnte ich gleiche meine Virtuelle Tastatur, den Virtuellen Bildschirm und ein Logbereich realisieren.
Das Programm läuft im dauerloop und reagiert auf Tasten. So kann ich zur Laufzeit das Log aus und einschalten und die Virtuelle Tastatur bedienen.
@Joesef
Mit kbhit wird es wohl auch gehen. Habe da jetzt einiges Quer gelesen.
Ich habe es mit ncurses gemacht.
So konnte ich auch den Bildschirm etwas einteilen.
So konnte ich gleiche meine Virtuelle Tastatur, den Virtuellen Bildschirm und ein Logbereich realisieren.
Das Programm läuft im dauerloop und reagiert auf Tasten. So kann ich zur Laufzeit das Log aus und einschalten und die Virtuelle Tastatur bedienen.
@Joesef
Mit kbhit wird es wohl auch gehen. Habe da jetzt einiges Quer gelesen.