閒話:
因參加中小學科學展,
須要用到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 ..
訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容