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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.