www.mikrocontroller.net

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


Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: comix (Gast)
Datum:

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

MFG

Autor: SiO2 (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.