Hallo
Ich hätte gerne ein kleines Progamm geschrieben dass in einer Endlosschleife Zeichen von der RS232 abholt und erstmal nur am Bildschirm ausgiebt.
Code unter http://nopaste.debianforum.de/1405
wenn ich in Zeile 48 aus while(1) ein while(0) mache, dann funktioniert es und ich bekomme 5 Zeichen von der RS232 angezeigt.
Möchte ich es allerdings in einer Endlosschleife machen bleibt er hängen und es erscheit am Display überhaupt nichts.
Lässt man das Programm länger laufen sieht man dass es wohl kurzzeitig mal funktionieren muss da am Display empfangene Zeichen angezeit werden. (aber eben nur alle 5-10 Minuten).
Warum kann es sein dass sich diese Programm anders verhält wenn man es in der Endlosschleife laufen lässt?
/dev/ttyS lesen [gelöst]
/dev/ttyS lesen [gelöst]
Zuletzt geändert von rksteve am 23.10.2005 17:55:23, insgesamt 1-mal geändert.
Es scheint für mich irgendwie doch so, dass die Einstellungen für die RS232 wohl nicht ganz korrekt sein können. Komisch ist nur dass es eben manchmal geht.
Als Datenübertragung habe ich 8N1 und keinerlei Handshake (ich möchte je nur empfangen). Hat jemand eine Idee was an meinen Einstellungen noch fehlt?
@niemand *g*, naja es ist schon wer gemeint...
Was meinst du mit flushen??
Gruss
Steve
Als Datenübertragung habe ich 8N1 und keinerlei Handshake (ich möchte je nur empfangen). Hat jemand eine Idee was an meinen Einstellungen noch fehlt?
@niemand *g*, naja es ist schon wer gemeint...
Was meinst du mit flushen??
Gruss
Steve
hi,
niemand möchte etwas flushen, aber ich - aeh, also - ich auch
aber nichts am ttyS0, sondern nur die Ausgabe:
Per default schreibt printf zeilenweise gepuffert, nach der do-Schleife
steht ein explizites Zeilenende, erst dann (oder wenn ein '\n' empfangen
wurde) erscheinen die Zeichen auf dem Bildschirm.
In der Zeile 47 ist noch Platz für ein "fflush (stdout);", probier' mal.
niemand möchte etwas flushen, aber ich - aeh, also - ich auch
aber nichts am ttyS0, sondern nur die Ausgabe:
Per default schreibt printf zeilenweise gepuffert, nach der do-Schleife
steht ein explizites Zeilenende, erst dann (oder wenn ein '\n' empfangen
wurde) erscheinen die Zeichen auf dem Bildschirm.
In der Zeile 47 ist noch Platz für ein "fflush (stdout);", probier' mal.
Beware of programmers who carry screwdrivers.