Forum: PC-Programmierung RS232 Buffer


von Frage an Radio Eriwan (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frage an Radio Eriwan schrieb:
> Kann mir bitte jemand einen Lösungsansatz bieten?

Behalte Deine Schleife, aber wirf 99 von 100 Paketen weg. Das eine 
übriggebliebene Paket gibst Du aus.

von Uwe (Gast)


Lesenswert?

Oder alle summieren und durch 100 teilen

von masl (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.