共用方式為


通訊事件

進程可以監視通訊資源中發生的一組事件。 例如,應用程式可以使用事件監視來判斷 CTS(清除到傳送)和 DSR(數據集就緒)何時發出變更狀態。

進程可以使用 SetCommMask 函式來建立事件遮罩,來監視指定通訊資源上的事件。 若要判斷通訊資源的目前事件遮罩,進程可以使用 GetCommMask 函式。 下列值會指定可監視的事件。

意義
EV_BREAK 在輸入時偵測到中斷。
EV_CTS CTS(清除到傳送)訊號已變更狀態。
EV_DSR DSR (data-set-ready) 訊號已變更狀態。
EV_ERR 發生行狀態錯誤。 行狀態錯誤CE_FRAMECE_OVERRUNCE_RXPARITY
EV_RING 偵測到環形指示器。
EV_RLSD RLSD (receive-line-signal-detect) 訊號已變更狀態。
EV_RXCHAR 已接收字元並放置在輸入緩衝區中。
EV_RXFLAG 事件字元已接收並放置在輸入緩衝區中。 事件字元是在裝置的DCB結構中指定,該結構會使用STtCommState函式套用至序列埠。
EV_TXEMPTY 輸出緩衝區的最後一個字元已傳送。

 

指定一組事件之後,進程會使用 WaitCommEvent 函式等候其中一個事件發生。 WaitCommEvent 可以同步或做為重疊的作業使用。 如需執行函式做為重迭作業的其他資訊,請參閱 同步處理

當事件遮罩中指定的其中一個事件發生時,進程會完成等候作業,並設定事件遮罩變數來指出偵測到的事件類型。 如果在等候該資源的等候擱置時呼叫 SetCommMask,則 WaitCommEvent 會傳回錯誤。

WaitCommEvent 函式會偵測自上次呼叫 SetCommMaskWaitCommEvent 之後發生的事件。 例如,如果您將EV_RXCHAR事件指定為滿足等候的事件,如果驅動程式的輸入緩衝區中有自最後一次呼叫 WaitCommEvent 或 SetCommMask 之後抵達的字元,就會滿足 WaitCommEvent 的呼叫 因此,假設下列虛擬程序代碼,在 T1 與 T2 之間接收的任何字元都會滿足對 WaitCommEvent 的下一個呼叫

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

T2: 
}

監視訊號 (CTS、DSR 等) 變更狀態時所發生的事件時, WaitCommEvent 會報告變更,但不會報告目前狀態。 若要查詢 CTS (clear-to-send)、DSR (data-set-ready)、RLSD (receive-line-signal-detect) 和信號指標訊號的目前狀態,進程可以使用 GetCommModemStatus 函式。