Freigeben über


Kommunikationsereignisse

Ein Prozess kann eine Reihe von Ereignissen überwachen, die in einer Kommunikationsressource auftreten. Beispielsweise kann eine Anwendung die Ereignisüberwachung verwenden, um zu bestimmen, wann sich der CTS-Zustand (Clear-to-Send) und dsR (Data-set-ready) ändern.

Ein Prozess kann Ereignisse einer bestimmten Kommunikationsressource überwachen, indem die SetCommMask--Funktion zum Erstellen eines Ereignisformats verwendet wird. Um das aktuelle Ereignisformat für eine Kommunikationsressource zu ermitteln, kann ein Prozess die GetCommMask--Funktion verwenden. Die folgenden Werte geben Ereignisse an, die überwacht werden können.

Wert Bedeutung
EV_BREAK Bei eingaben wurde ein Umbruch erkannt.
EV_CTS Der CtS -Signalzustand (Clear-to-Send) wurde geändert.
EV_DSR Der DsR-Signalzustand (Data-set-ready) wurde geändert.
EV_ERR Es ist ein Zeilenstatusfehler aufgetreten. Zeilenstatusfehler sind CE_FRAME, CE_OVERRUNund CE_RXPARITY.
EV_RING Es wurde ein Ringindikator erkannt.
EV_RLSD Der RLSD-Signalzustand (Empfangsleitungssignalerkennung) wurde geändert.
EV_RXCHAR Ein Zeichen wurde empfangen und im Eingabepuffer platziert.
EV_RXFLAG Das Ereigniszeichen wurde empfangen und im Eingabepuffer platziert. Das Ereigniszeichen wird in der DCB- Struktur des Geräts angegeben, die mithilfe der SetCommState--Funktion auf einen seriellen Port angewendet wird.
EV_TXEMPTY Das letzte Zeichen im Ausgabepuffer wurde gesendet.

 

Nachdem eine Reihe von Ereignissen angegeben wurde, verwendet ein Prozess die WaitCommEvent--Funktion, um auf einen der Ereignisse zu warten. WaitCommEvent- kann synchron oder als überlappender Vorgang verwendet werden. Weitere Informationen zum Ausführen einer Funktion als überlappenden Vorgang finden Sie unter Synchronisierung.

Wenn eines der im Ereignisformat angegebenen Ereignisse auftritt, schließt der Prozess den Wartevorgang ab und legt eine Ereignisformatvariable fest, um den Typ des erkannten Ereignisses anzugeben. Wenn die SetCommMask- für eine Kommunikationsressource aufgerufen wird, während eine Wartezeit für diese Ressource aussteht, gibt WaitCommEvent einen Fehler zurück.

Die WaitCommEvent-Funktion erkennt Ereignisse, die seit dem letzten Aufruf von SetCommMask oder WaitCommEventaufgetreten sind. Wenn Sie z. B. das EV_RXCHAR Ereignis als zufriedenstellendes Ereignis angeben, wird ein Aufruf von WaitCommEvent erfüllt, wenn zeichen im Eingabepuffer des Treibers vorhanden sind, die seit dem letzten Aufruf von WaitCommEvent oder SetCommMaskeingegangen sind. Daher erfüllen alle zwischen T1 und T2 empfangenen Zeichen den nächsten Aufruf von WaitCommEvent.

while (!bFinished) 
{ 
    WaitCommEvent(args)
 
T1: // Read bytes 
    // Process bytes 

T2: 
}

Wenn ein Ereignis überwacht wird, das auftritt, wenn sich ein Signal (CTS, DSR usw.) ändert, meldet WaitCommEvent die Änderung, aber nicht den aktuellen Zustand. Um den aktuellen Status des CTS (clear-to-send), DSR (Data-set-ready), RLSD (Receive-line-signal-detect) und Ringanzeigesignalen abzufragen, kann ein Prozess die GetCommModemStatus--Funktion verwenden.