中心调度程序采用面向对象的设计方法,开发语言使用Visual Basic,后台数据库使用SQL-SERVER 2000,如图4所示。
图4 中心调度程序结构示意图
根据系统功能要求不同,分为射击分数显示客户端程序、动漫播放控制客户端程序,中心调度服务器程序和后台数据库。程序之间通过Winsock进行局域网数据通信,CAN总线和nRF905无线射频的主控制器通过UART-USB模块与调度中心程序进行数据通信。
基于Winsock的网络通信程序设计
使用Winsock控件时可以使用两种协议:TCP协议和UDP协议,本系统采用TCP协议,分别建立客户应用程序和服务器应用程序。
在创建客户应用程序时,必须知道服务器计算机名或其IP地址(存于RemoteHost属性)、及服务器计算机进行侦听的端口(存于RemotePort属性),然后调用Connect方法。
创建服务器应用程序时,就应相应设置一个侦听端口(LocalPort属性)并调用Listen方法。当客户机需要连接时(connect),就会发生ConnectionRequest事件。由于系统有多个客户端,因此要动态管理客户端的各个连接请求,参考如下程序设计:
Private sub sckserver_connectrequest(Index as Integer,Byval requestid as long)
dim sip as string
dim I as integer
sip=sckserver(0).RemoteHostIP '获得登录者的IP地址
I=1
Do while I<=sckserver.ubound '检查是否已经有该地址的记录
If sckserver(I).RemoteHostIP=sip then '如有,不必加载新的控件
Sckserver(I).Accept requestid
Exit sub
End if
I=I+1
Loop
Load sckserver(I) '否则,加载新的控件
Scksrver(I).accept requestID
End sub