Modem通訊意外處理
在通過MODEM建立好聯系后,MODEM會返回“CONNECT 9600”消息,其中9600表示所建立的波特率。如果沒有建立好通訊MODEM會返回“BUSY”。
我們可通訊取得MSCOMM1.INPUT中的內容可檢測是否已建立好聯系。建立好聯系和中斷聯系MSCOMM1的ONCOMM事件會產生一個定義好的MSCOMM_EV_CD消息,在對該消息的處理中也可檢測通訊的好與壞。
在模塊定義中加入以下代碼:
| Global Const MSCOMM_EV_SEND = 1 Global Const MSCOMM_EV_RECEIVE = 2 Global Const MSCOMM_EV_CTS = 3 Global Const MSCOMM_EV_DSR = 4 Global Const MSCOMM_EV_CD = 5 Global Const MSCOMM_EV_RING = 6 Global Const MSCOMM_EV_EOF = 7 Global Const MSCOMM_ER_BREAK = 1001 Global Const MSCOMM_ER_CTSTO = 1002 Global Const MSCOMM_ER_DSRTO = 1003 Global Const MSCOMM_ER_FRAME = 1004 Global Const MSCOMM_ER_OVERRUN = 1006 Global Const MSCOMM_ER_CDTO = 1007 Global Const MSCOMM_ER_RXOVER = 1008 Global Const MSCOMM_ER_RXPARITY = 1009 Global Const MSCOMM_ER_TXFULL = 1010 在mscomm1_ONCOMM中加入 Select Case MSCOMM1.CommEvent 'i=1,2... ' 錯誤部分 Case MSCOMM_ER_BREAK '插入處理BREAK代碼 Case MSCOMM_ER_CDTO '插入處理CD(RLSD)超時代碼 Case MSCOMM_ER_CTSTO '插入處理CTS超時代碼 Case MSCOMM_ER_DSRTO '插入處理DSR超時代碼 Case MSCOMM_ER_FRAME '插入處理幀錯誤代碼 Case MSCOMM_ER_OVERRUN '插入處理數據丟失代碼 Case MSCOMM_ER_RXOVER '插入處理接收緩沖器溢出代碼 Case MSCOMM_ER_RXPARITY '插入處理校驗錯誤代碼 Case MSCOMM_ER_TXFULL '插入處理發送緩沖器滿代碼 '事件部分 Case MSCOMM_EV_SEND Case MSCOMM_EV_CD '插入處理CD信號改變代碼 msgbox"CD_CHANGE" Case MSCOMM_EV_CTS '插入處理CTS信號改變代碼 'MsgBox "EV_CTS" Case MSCOMM_EV_DSR '插入處理DST信號改變代碼 ' MsgBox "EV_DSR" Case MSCOMM_EV_EOF '插入處理收到一個文本文件結束字(26)代碼 Case MSCOMM_EV_RING '插入處理檢測到一個振鈴信號代碼 Case MSCOMM_EV_RECEIVE '插入接收到設定的字符數時產生該事件代碼 'MsgBox "EV_RECEIVE" Case MSCOMM_EV_SEND '插入處理發送緩沖器中的字符數低于設定的數值時產生該事件的代碼 End Select |