首页 / 软件开发 / VB.NET / 计算机监控系统仿真开发平台的软件实现(上)
计算机监控系统仿真开发平台的软件实现(上)2010-01-04 comprg.com.cn 马玉春计算机监控系统是以监测控制计算机为主体,加上检测装置、执行机构与被监测控制的对象共同构成 的整体。在这个系统中,计算机直接参与被监控对象的检测、监督和控制[1]。检测主要是 通过传感器和相应的输入模块来取得被监控对象的状态数据,监督主要是对状态数据进行分析后给操作 员提供手动操作的参考,控制则是手动或按照一定的策略自动地对被监控对象执行相应的操作。由此可 见,检测与控制模块是计算机监控系统直接跟被监控对象关联的不可或缺的输入输出(I/O)模块,学习 和研究这些模块对计算机监控系统的辅助开发、测试与教学等都具有重要意义。I/O模块一般配 置有串行通信接口,本文用软件仿真一个2路模拟量输入和2路数字量(又称开关量)输出的基于 RS-232 接口的模块(Analog Input / Digital Output Module, 简称 AI/DO-M),并开发了针对该仿真模块的 主控程序;开发了 RS-232/RS-232 转换器,可以将两个不同通信协议和不同波特率的主控机或受控机连 接起来,并可以截取两者之间的通信协议; 开发了RS-232/RJ-45协议转换器软件,可以将串行通信协议 转换为 TCP 协议,而且,该软件既可以工作在客户机方式,又可以工作在服务器方式,借助该协议转换 器,可以对传统的基于 RS-232 接口的监控系统转换为基于 Internet 的监控系统,从而进行远程测试 ;通用串口设备测试工具可以自动生成多种校验码及添加多种结尾码,既可以充当主控机对受控机进行 测试,也可以充当受控机对主控机进行测试,并可以记录测试结果和通信协议。在这些仿真模块与协议 转换器的基础之上,可以在高校的计算机房零成本(仅需要串口连接线和网线)搭建多种形式的计算机 监控系统的仿真开发平台,并可对其进行综合测试,从而节约大量教学设备经费的投入及相关项目开发 费用的支出。1 串行通信的主要技术通信是计算机监控系统实现的关键。串行通信的基 本技术主要包括数据处理技术、数据的校验技术以及串口操作技术,串口数据接收技术则是关键技术。 有了这些技术,就可以自动生成指定格式的数据包、校验数据包,也可以非常便捷地通过串行接口发送 和接收数据。1.1 数据处理技术Visual Basic 2008 提供了丰富的字符串处理函数,利 用16进制字符串表示数据,可以较好地观察数据,例如 0xFF 是一个不可见字符,如果以 "FF" 来显示则比较清楚。BytesToHexChars 函数实现字节序列到16进制字符串的转换,其中 ,通过 ByteToTwoHexChars 函数(其定义比较简单,略),将一个字节转换为标准的两个16进制字符, 然后,对这些字符进行累加。Public Function BytesToHexChars(ByRef byteArray As Byte()) As String
Dim I As Integer
Dim strData As String = ""
For I = 0 To byteArray.Length - 1
strData &= ByteToTwoHexChars(byteArray(I))
Next I
Return strData
End Function
在发送字节序列时,又需要将16进制字符串转换为字节序列,这可以通过 HexCharsToBytes 来实现 ,其基本原理是调用 TwoHexCharsToByte 函数(定义略)将两个16进制字符转换为一个字节。Public Function HexCharsToBytes(ByVal strVal As String) As Byte()
Dim I As Integer
Dim nLength As Integer
Dim bTmp() As Byte
If strVal = "" Then Return Nothing
strVal = Trim(strVal) "删除尾部空格
nLength = Len(strVal) 2 - 1 "求得字节长度
ReDim bTmp(nLength) "可变数组保存字节序列
For I = 0 To nLength
"每两个16进制字符转换为一个字节,存入可变数组
bTmp(I) = TwoHexCharsToByte((Mid(strVal, I * 2 + 1, 2)))
Next I
Return bTmp
End Function