2009-04-25 3 views
2

Ich habe ein Datei-Handle zu einem seriellen (COM) Port. Ich muss sofort lesen, welche Daten sofort verfügbar sind und nicht darauf warten, dass zusätzliche Daten gesendet werden.Wie lese ich nur verfügbare Daten von einem Windows-COM-Port?

Wie kann ich feststellen, wie viele Daten verfügbar sind? Ich kann SetCommMask(myHandle, EV_RXCHAR) anrufen und dann auf ein Ereignis warten, um mir zu sagen, dass einige Daten verfügbar sind, aber das wird mir nicht sagen, wie viel ich jetzt lesen kann, ohne zu blockieren.

Im Moment verwende ich CreateFile() und überlappende I/O, um meine Lesevorgänge durchzuführen, so dass sie asynchron sind, aber sie warten immer noch, bis der Puffer gefüllt ist, um die E/A als abgeschlossen zu melden.

Antwort

4

Die ClearCommError() Funktion ist das, was Sie suchen - es gibt in der COMSTAT Struktur, wie viele Zeichen in den Eingangs- und Ausgangswarteschlangen sind.

Verwandte Themen