GSM模組之簡訊自動接收模組

Home Home
引用 | 編輯 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
引用 | 編輯 ziele
2005-09-06 21:48
1樓
  
請問你是GSM MODEN 還是一般的MODEN寫的?

獻花 x0
引用 | 編輯 herolin
2008-10-13 23:34
2樓
  
給你鼓鼓掌   利害喔!! 表情

獻花 x0
引用 | 編輯 xzxz444
2009-07-14 18:00
3樓
  
太厲害了 非常的感謝你

獻花 x0
引用 | 編輯 sandrahuang
2010-07-18 13:51
4樓
  
厲害厲害拍手拍手

獻花 x0