引用 | 編輯
jack9685
2005-05-04 15:24 |
樓主
▼ |
||
x1
閒話:因參加中小學科學展, 須要用到GSM模組, 可是在網路上有關GSM模組的資料實在是少呀= =~ 直到最近才完成了簡訊接收模組, 為了讓大家能夠更快的瞭解如何使用GSM模組的簡訊功能, 所以就在此發佈啦! (原想發到Planet Source Code,但是英文能力太差沒辦法...orz) 說明: 1. 首先, 當MSCOMM接收到一筆資料時, 會將這筆資料儲存在接收暫存區(InBuffer)內, 這時MSCOMM的InBufferCount就會有所變動, InBufferCount的數值為暫存區中的資料大小, 這個資料會一直存放到程式關閉或使用Input讀取後, 才會清空, 如果這邊不弄清楚,在做接收動作時會很麻煩的! 2.[如何完整存取MSCOMM接收暫存區中的資料] 從前我在讀取的時候發生過一項很嚴重的問題, 就是我無法完整的讀取接受暫存區中的資料, 一開始我使用的方法是: Private Sub Timer1_Timer() If GSMComm.InBufferSize <> 0 Then Text1.Text = Text1.Text & GSMComm.Input & vbCrLf End If End Sub 看出有什麼問題了嗎? 沒錯,如果MSCOMM的讀取速度不夠快, 我只會收到斷斷續續的文字, 這個問題如何處理讓我苦腦了很久, 後來我終於想到啦(~><~)! Private Sub TimerGSM_Timer() If GSMInBuff = GSMComm.InBufferCount And GSMInBuff <> 0 Then TextLeftMsg.Text = TextLeftMsg.Text & TextNowMsg.Text TextNowMsg.Text = GSMComm.Input End If Else GSMInBuff = GSMComm.InBufferCount End If End Sub 動作說明~ 第一次判斷: GSMInBuff = GSMComm.InBufferCount And GSMInBuff <> 0 不成立, 因為兩者雖然相同但GSMInBuff = 0, 執行GSMInBuff = GSMComm.InBufferCount, 這個動作是設定GSMInBuff為GSMComm.InBufferCount, 以檢查資料是否有變動。 第二次判斷(假設有收到資料,但未收完,GSMComm.InBufferCount = 1 ): GSMInBuff = GSMComm.InBufferCount And GSMInBuff <> 0 不成立, 因為兩者不相同且GSMInBuff = 0, 執行GSMInBuff = GSMComm.InBufferCount 此時GSMInBuff = 1 第三次判斷(假設有收到資料,已經收完了,GSMComm.InBufferCount = 4 ): GSMInBuff = GSMComm.InBufferCount And GSMInBuff <&g .. 訪客只能看到部份內容,免費 加入會員 x2
|
引用 | 編輯
sandrahuang
2010-07-18 13:51 |
4樓
▲ |
厲害厲害拍手拍手
x0 |