/dev/ttyS lesen [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

/dev/ttyS lesen [gelöst]

Beitrag von rksteve » 22.10.2005 17:38:42

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?
Zuletzt geändert von rksteve am 23.10.2005 17:55:23, insgesamt 1-mal geändert.

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 22.10.2005 18:08:23

Ohne das angeschaut zu haben, und nur mal geraten: Buffer, den man flushen sollte, wenn man die Zeichen rausholen möchte?

cu

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 23.10.2005 17:20:08

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

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 23.10.2005 17:41:10

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.
Beware of programmers who carry screwdrivers.

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 23.10.2005 17:55:08

Genau das wars.
Dankeschön!

Gruss
Steve

Antworten