?? 37.htm
字號:
<p>檢測運程數據傳送的斷線</p>
<p></p>
<p>我使用MSCOMM1通過MODEM和遠程傳送數據,如何檢測已經建立好聯系呢?</p>
<p>如果意外或者遠程斷線,我又能如何檢測到?使用此控件應注意什么問題?</p>
<p>請您賜教:-) - zxx</p>
<p></p>
<p>答復1:</p>
<p>如果MSCOMM1的INPUT域是“CONNECT”表示MODEM已經連上了,</p>
<p>其他如:“NO CARRIER”“NO DIAL TONE”等表示某種連接失敗。</p>
<p>要定時檢測MODEM要引入定時器控件,定時在線上傳送一些填充信號,</p>
<p>如果過一定的時間未受到對方程序(也要相同處理)的應答信號,</p>
<p>就認為已斷線了。</p>
<p>- linhang</p>
<p>答復2:</p>
<p>本人也正在編寫一個用MODEM通訊的程序,同樣面臨相同的問題,現將</p>
<p>本人的解決辦法介紹如下,希望有所幫助。</p>
<p>在通過MODEM建立好聯系后,MODEM會返回“CONNECT 9600”消息,</p>
<p>其中9600表示所建立的波特率。如果沒有建立好通訊MODEM會返回“BUSY”。</p>
<p>我們可通訊取得MSCOMM1.INPUT中的內容可檢測是否已建立好聯系。</p>
<p>建立好聯系和中斷聯系MSCOMM1的ONCOMM事件會產生一個定義好的</p>
<p>MSCOMM_EV_CD消息,在對該消息的處理中也可檢測通訊的好與壞。 </p>
<p></p>
<p>在模塊定義中加入以下代碼: </p>
<p>Global Const MSCOMM_EV_SEND = 1</p>
<p>Global Const MSCOMM_EV_RECEIVE = 2</p>
<p>Global Const MSCOMM_EV_CTS = 3</p>
<p>Global Const MSCOMM_EV_DSR = 4</p>
<p>Global Const MSCOMM_EV_CD = 5</p>
<p>Global Const MSCOMM_EV_RING = 6</p>
<p>Global Const MSCOMM_EV_EOF = 7</p>
<p>Global Const MSCOMM_ER_BREAK = 1001</p>
<p>Global Const MSCOMM_ER_CTSTO = 1002</p>
<p>Global Const MSCOMM_ER_DSRTO = 1003</p>
<p>Global Const MSCOMM_ER_FRAME = 1004</p>
<p>Global Const MSCOMM_ER_OVERRUN = 1006</p>
<p>Global Const MSCOMM_ER_CDTO = 1007</p>
<p>Global Const MSCOMM_ER_RXOVER = 1008</p>
<p>Global Const MSCOMM_ER_RXPARITY = 1009</p>
<p>Global Const MSCOMM_ER_TXFULL = 1010 </p>
<p>在mscomm1_ONCOMM中加入</p>
<p>Select Case MSCOMM1.CommEvent 'i=1,2...</p>
<p>' 錯誤部分</p>
<p>Case MSCOMM_ER_BREAK '插入處理BREAK代碼</p>
<p>Case MSCOMM_ER_CDTO '插入處理CD(RLSD)超時代碼</p>
<p>Case MSCOMM_ER_CTSTO '插入處理CTS超時代碼</p>
<p>Case MSCOMM_ER_DSRTO '插入處理DSR超時代碼</p>
<p>Case MSCOMM_ER_FRAME '插入處理幀錯誤代碼</p>
<p>Case MSCOMM_ER_OVERRUN '插入處理數據丟失代碼</p>
<p>Case MSCOMM_ER_RXOVER '插入處理接收緩沖器溢出代碼</p>
<p>Case MSCOMM_ER_RXPARITY '插入處理校驗錯誤代碼</p>
<p>Case MSCOMM_ER_TXFULL '插入處理發送緩沖器滿代碼</p>
<p>'事件部分</p>
<p>Case MSCOMM_EV_SEND</p>
<p></p>
<p>Case MSCOMM_EV_CD '插入處理CD信號改變代碼</p>
<p>msgbox"CD_CHANGE" </p>
<p>Case MSCOMM_EV_CTS '插入處理CTS信號改變代碼</p>
<p>'MsgBox "EV_CTS"</p>
<p>Case MSCOMM_EV_DSR '插入處理DST信號改變代碼</p>
<p>' MsgBox "EV_DSR"</p>
<p>Case MSCOMM_EV_EOF '插入處理收到一個文本文件結束字(26)代碼</p>
<p>Case MSCOMM_EV_RING '插入處理檢測到一個振鈴信號代碼</p>
<p></p>
<p>Case MSCOMM_EV_RECEIVE '插入接收到設定的字符數時產生該事件代碼</p>
<p>'MsgBox "EV_RECEIVE"</p>
<p>Case MSCOMM_EV_SEND '插入處理發送緩沖器中的字符數低于設定的數值時產生該事件的代碼</p>
<p>End Select </p>
<p>所知有限,望共同探討。</p>
<p>- sida@public.xt.hn.cn</p>
<p></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -