Forum: PC-Programmierung RS232puffer löschen unter Windows in C


von SiO2 (Gast)


Lesenswert?

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

von comix (Gast)


Lesenswert?

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

MFG

von SiO2 (Gast)


Lesenswert?

Danke, ich werde es testen.
War ja klar, daß ich nach dem falschen Begriff gesucht habe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Johnny (Gast)


Lesenswert?

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.

von SiO2 (Gast)


Lesenswert?

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 :)

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.