RS232 Buffer

Gast #2927742
Lesenswert?

Hallo


Ich versuche Daten von einem Sensor mithilfe eines kleinen C-Programmes 
auf der Konsole meines PC (linux) darzustellen. Die Kommunikation erfolt 
über RS232. Der C-Code ist soweit fertig und funktioniert bis auf ein 
kleines Problem.
Der Sensor sendet ca. 100 Datenpackete pro Sekunde. Wenn ich nun in 
meinem Programm in einer Endlosschleife mit dem Befehl read(...) die 
Daten aus dem Buffer lese und ausgebe (printf() ) so funktioniert alles 
wie gewollt. Nun möchte ich jedoch nicht 100 Datenwerte pro Sekunde 
angezeigt haben sondern nur den akutellen Wert jede Sekunde.
Also baue ich ein Delay ein um die Ausgabe zu verlangsamen, nun erhalte 
ich jedoch nicht den aktuellen Wert von read(...), sondern <dies ist 
eine Hypothese von mir> den ältesten im Empfangsbuffer abgelegten Wert.
Also was ich schlussendlich möchte: Ich möchte einen Buffer, ca. 16 
Bytes in dem immer nur das aktuelle Datenpacket zu finden ist. Falls ich 
einen Wert noch nicht gelesen habe, so soll der neue Wert den aktuellen 
überschreiben.
Kann mir bitte jemand einen Lösungsansatz bieten?

Ich danke schon im Voraus für eure möglichen Bemühungen.
Gast #2927912
Lesenswert?

Ich hab letztens ein kleines Modul, eine Art Wrapper um den tty-Zugriff, 
geschrieben.
Beim öffnen eines Ports wird automatisch ein Puffer der gewünschten 
Größe angelegt und ein pThread gestartet, der Daten von der 
Schnittstelle liest und ablegt.
Im Prinzip kann ich damit die tty so benutzen wie vom uC gewohnt.
Und wenn ich mal auf Windows migrieren will dann muss nur dieser Wrapper 
geändert werden.

Weiß nicht, ist es sowas was du suchst?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren