为了完成连接,在ConnectionRequest事件中调用Accept方法。建立连接后,任何一方计算机都可以发送、接收对方数据。发送数据时,需调用SendData方法。当接收到数据时,会发生DataArrival事件,调用DataArrival事件中的GetData方法就可以获得对方传送的数据。
基于MSComm的串口通信程序设计
MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备、还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工的、事件驱动的、高效实用的通信程序。
在程序加载过程中,由于可能存在无线和CAN两种通信方式,所以在Form_Load事件中要进行初始化处理,参考以下程序:
‘CAN总线主控制器初始化程序
For i = 0 To Comm_Port_Num - 1
If CommSetups(i).commType = "CAN" Then
MSComm1.CommPort =CInt(Mid(Trim(CommSetups(i).commID), 4))
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.Settings = Trim(CommSetups(i).commSetting)
MSComm1.PortOpen = True '打开串行口
Text1.Text = "CAN通信端口初始化成功" & vbCrLf
Exit For
End If
Next i
‘nRF905射频主控制器初始化程序
For i = 0 To Comm_Port_Num - 1
If CommSetups(i).commType = "COM" Then
MSComm1.CommPort =CInt(Mid(Trim(CommSetups(i).commID), 4))
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.Settings = Trim(CommSetups(i).commSetting)
MSComm1.PortOpen = True '打开串行口
Text1.Text = "nRF905端口初始化成功" & vbCrLf
Exit For
End If
Next i
在数据接收过程中,MSComm提供了两种处理通信问题的方法,一是事件驱动方法,一是查询法。本系统采用事件驱动方法,当有新字符到达或端口状态改变,或发生错误时,MSComm控件将触发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。
当需要发送数据时,通过调用MSComm的Output方法实现。
结论
作为中山市新一轮产业结构重点支持发展产业之一的游戏游艺产业,为适应市场营销需求多元化结构及综合性游玩方式的新需求,本系统由中山市金马游艺机有限公司和电子科技大学中山学院联合开发并于2008年下半年成功交付使用。本系统是集多项先进技术于一体,突破游艺和动漫原有的产业边界,在传统游艺机项目[4]的基础上首创性地将动漫与机电控制、有线与无线组网等技术有机地结合在一起,设计完成一种新型交互式射击游艺控制系统。