Kommunikációs események

A folyamatok figyelhetik a kommunikációs erőforrásokban előforduló eseményeket. Egy alkalmazás például eseményfigyeléssel állapíthatja meg, hogy a CTS (clear-to-send) és a DSR (data-set-ready) jelek mikor változnak.

Egy folyamat eseményeket figyelhet egy adott kommunikációs erőforráson a SetCommMask függvénnyel egy eseménymaszk létrehozásához. Egy kommunikációs erőforrás aktuális eseménymaszkjának meghatározásához egy folyamat használhatja a GetCommMask függvényt. Az alábbi értékek a monitorozásra használható eseményeket határozzák meg.

Érték Jelentés
EV_BREAK A rendszer törést észlelt a bemeneten.
EV_CTS A CTS (clear-to-send) jel megváltozott állapotban.
EV_DSR A DSR (data-set-ready) jel megváltozott.
EV_ERR Sorállapot-hiba történt. A sorállapot-hibák CE_FRAME, CE_OVERRUNés CE_RXPARITY.
EV_RING A rendszer egy gyűrűjelzőt észlelt.
EV_RLSD Az RLSD (receive-line-signal-detect) jel megváltozott állapota.
EV_RXCHAR A rendszer egy karaktert fogadott és helyezett el a bemeneti pufferben.
EV_RXFLAG Az esemény karaktere megérkezett, és a bemeneti pufferbe lett helyezve. Az eseménykarakter az eszköz DCB szerkezetében van megadva, amelyet a rendszer a SetCommState függvény használatával alkalmaz egy soros portra.
EV_TXEMPTY A kimeneti puffer utolsó karaktere el lett küldve.

 

Egy eseménykészlet megadása után egy folyamat a WaitCommEvent függvénnyel várja meg az egyik esemény bekövetkeztét. WaitCommEvent szinkron módon vagy átfedésben lévő műveletként is használható. További információ a függvények átfedésben lévő műveletként való végrehajtásáról: Szinkronizálási.

Amikor az eseménymaszkban megadott események egyike bekövetkezik, a folyamat befejezi a várakozási műveletet, és beállít egy eseménymaszk változót az észlelt esemény típusának jelzésére. Ha a SetCommMask kommunikációs erőforrásra van meghívva, amíg az adott erőforrásra várakozás van függőben, WaitCommEvent hibát ad vissza.

A WaitCommEvent függvény észleli a SetCommMask vagy WaitCommEventlegutóbbi hívása óta történt eseményeket. Ha például a EV_RXCHAR eseményt várakozásnak megfelelő eseményként adja meg, a WaitCommEvent hívása akkor lesz elégedett, ha az illesztőprogram bemeneti pufferében olyan karakterek találhatók, amelyek a WaitCommEvent vagy SetCommMasklegutóbbi hívása óta érkeztek. Így a következő pszeudokód alapján a T1 és a T2 között kapott karakterek megfelelnek a WaitCommEvent következő hívásának.

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

T2: 
}

Ha egy jel (CTS, DSR stb.) állapotának változásakor bekövetkező esemény monitorozása során WaitCommEvent jelenti a változást, de az aktuális állapotot nem. A CTS (clear-to-send), a DSR (data-set-ready), az RLSD (receive-line-signal-detect) és a gyűrűjelző jelek aktuális állapotának lekérdezéséhez egy folyamat használhatja a GetCommModemStatus függvényt.