闲话:
因参加中小学科学展,
须要用到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 可以看到全部内容