Hallo ich habe folgendes Problem.
Ich arbeite mit C unter Linux und möchte folgendes Problem lösen:
Ich lese Zeichen von der seriellen Schnittstelle ein, kommt ein "q" dann wird das Programm beendet.
Jetzt möchte ich aber auch, das sich das Programm beendet, wenn z.B 1 Sekunde lang kein Zeichen mehr kommt.
Wenn jedoch innerhalb der Sekunde ein neues Zeichen kommt, soll der TImer gestoppt oder zurückgesetzt werden und wieder neu gestartet werden.
Deshalb habe ich nun geschaut mit was für Befehlen man dies unter Linux machen könnte und bin auf "setitimer" gestoßen.
Jetzt hab ich schon ewig rumprobiert, aber es klappt nicht wirklich.
Hat jemand schon so etwas mit "setitimer" realisiert oder hat jemand einen Tipp wie ich das realisieren kann?
Mein Code zum einlesen der Zeichen(ohne den Timer) sieht folgendermaßen aus:
/* Daten von der seriellen Schnittstelle lesen */
freopen("text.txt", "a+", stdout);
while((c=getch()) != 'q')
{
count++;
putc(c, stdout);
printf(" Inhalt von buffer: %X\n",c);
}
freopen("/dev/console", "w", stdout);
printf("Empfangene Zeichen = %d\n", count);
printf("Port wurde geschlossen\n");
return(0);
Gruß Huemler
Ich arbeite mit C unter Linux und möchte folgendes Problem lösen:
Ich lese Zeichen von der seriellen Schnittstelle ein, kommt ein "q" dann wird das Programm beendet.
Jetzt möchte ich aber auch, das sich das Programm beendet, wenn z.B 1 Sekunde lang kein Zeichen mehr kommt.
Wenn jedoch innerhalb der Sekunde ein neues Zeichen kommt, soll der TImer gestoppt oder zurückgesetzt werden und wieder neu gestartet werden.
Deshalb habe ich nun geschaut mit was für Befehlen man dies unter Linux machen könnte und bin auf "setitimer" gestoßen.
Jetzt hab ich schon ewig rumprobiert, aber es klappt nicht wirklich.
Hat jemand schon so etwas mit "setitimer" realisiert oder hat jemand einen Tipp wie ich das realisieren kann?
Mein Code zum einlesen der Zeichen(ohne den Timer) sieht folgendermaßen aus:
/* Daten von der seriellen Schnittstelle lesen */
freopen("text.txt", "a+", stdout);
while((c=getch()) != 'q')
{
count++;
putc(c, stdout);
printf(" Inhalt von buffer: %X\n",c);
}
freopen("/dev/console", "w", stdout);
printf("Empfangene Zeichen = %d\n", count);
printf("Port wurde geschlossen\n");
return(0);
Gruß Huemler