RS232puffer löschen unter Windows in C

Gast #947610
Hi, ich hab ein kleines Programm, welches über die "normale" API auf die 
RS232 zugreift, nicht über extra lib's oder ähnliches.
Da ein Gerät 10mal pro Sekunde Daten Sendet, ich aber nur aller paar 
Minuten den aktuellen  Wert auslesen möchte klappt das nicht, da der 
Puffer mit alten Werten voll ist. Bei msdn habe ich nichts zu gefunden, 
vielleicht auch nach den falschen begriffen gesucht :(. Wie heißt die 
Funktion, mitr der ich den Puffer löschen kann? Ein herabsetzen der 
Puffergrösse

  SetupComm(AE,1,100);

hat auch nichts gebracht.

Danke
Persönliche Seite #947636
> CloseHandle(hFile); // wenn sowiso nichts empfangen werden soll
> PurgeComm(hFile,Flags); // löscht den Puffer (Flags beachten)

Bloß nicht in dieser Reihenfolge ...

> Da ein Gerät 10mal pro Sekunde Daten Sendet, ich aber nur aller paar
> Minuten den aktuellen  Wert auslesen möchte klappt das nicht, da der
> Puffer mit alten Werten voll ist.

Du empfängst trotzdem alle Daten und verwirfst die von Dir nicht 
benötigten. Vorteil: Du musst Dich nicht für jeden (nutz-)Lesevorgang 
neu auf die vom Gerät gesendeten Daten synchronisieren.
Gast #947706
Würde ich auch so machen mit "alles empfangen und selber verwerfen". 
Dies hat zudem den Vorteil, dass es bei verschiedenen Windows Versionen 
und PC's bestimmt auch kompatibler/zuverlässiger läuft.
Gast #947851
Mit PurgeComm klappt es 1a. So mache ich es nun. Das mit dem verwerfen 
hat irgendwie nicht geklappt, vielleicht war der Empfangsbuffer zu 
gross, und ich hab nicht lange genug gewartet, hab aber auch nicht 
zuviel versucht auf diese weise.



>> CloseHandle(hFile); // wenn sowiso nichts empfangen werden soll
>> PurgeComm(hFile,Flags); // löscht den Puffer (Flags beachten)

>Bloß nicht in dieser Reihenfolge ...

Schon klar :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.