利用VB实现PC机与多单片机通讯
Select Case command
Case 1]
Call发送单片机命令过程(任务1)
TimerReceive.Enabled=False'启动自动接收
Case2
Call发送单片机命令过程(任务2)
MSComm1.Rthreshold=0'关闭自动接收
TimerReceive.Interval=500
TimerReceive.Enabled=True'启动定时器接收机号=1
Case 3
Call发送单片机命令过程(任务3)
MSComm1.Rthreshold=0'关闭自动接收
TimerReceive.lnterval=500
TimerReceive.Enabled=True'启动定时器接收
机号=2
Case 4
┆
Case n
…
End Select
End.Sub
'接收数据主控程序
Private Sub TimerReceive_Timer()
TimerReceive.Enabled=False
Select Case机号
Case 1
In_buffer$=接收数据(机号)
Call任务2
Case 2
In_buffer$=接收数据(机号)
Call任务3
Case 3
┆
Case n
In_buffer$=接收数据(机号)
Call任务n
End Select
End Sub
4.自动接收、监视总线状态和通讯错误的处理
自动接收、监视总线状态和通讯错误的处理可以通过OnComm事件实现。VB程序运行过程中只要设置MSComm1.Rthreshold=1,在接收事件发生时程序就会自动访问MSComm1.OnComm()过程。
由于外界干扰或电压波动等原因,PC机和单片机之间的通讯可能会出现错误,如接收缓冲区溢出、网络端口超速等。这些可能发生的事件都能在代码中引起运行错误。为了处理这些错误,须要将错误处理代码添加到程序中。通过控件中的OnComm事件可以捕捉和处理错误。在通讯过程中所发生的通讯错误是CommEvent属性返回的。当CommEvent属性值发生改变时,表明有通讯错误,就会产生OnComm事件。同时,可以利用自动引发OnComm事件的特点在接收过程中加入状态显示码。这样可以监视通讯线路状态,得到单片机和主机及单片机和单片机之间的通讯进程。通讯错误的处理程序如下:
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case ComReceive 'Receive data '自动数据接收、监视总线通信信息
Select Case In_buffer $
Call A
Label.Enabled=“正在执行任务1”
Call B
…
End Select
Case comFrame 'Framing Error '通讯错误处理
X=MsgBox(“Framing Error!”,16)
…'错误处理
Case comEventOverrun '数据丢失
X=MsgBox(“数据丢失!”,16)
…'错误处理
End Select
End Sub