共用方式為


通訊事件

進程可以監視通訊資源中發生的一組事件。 例如,應用程式可以使用事件監視來判斷 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 結構中指定,該結構會使用 SetCommState 函式套用至序列埠。
EV_TXEMPTY 輸出緩衝區的最後一個字元已傳送。

 

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

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

WaitCommEvent 函式會偵測自上次 呼叫 SetCommMaskWaitCommEvent之後發生的事件。 例如,如果您將 EV_RXCHAR 事件指定為滿足等候的事件,則會滿足對 waitCommEvent 呼叫,如果驅動程式輸入緩衝區中有字元已抵達,WaitCommEventSetCommMask。 因此,假設下列虛擬程式碼,在 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函式