0 引 言
在信息技术迅速发展的今天,无论是生活消费还是在工业控制中,利用计算机采集各种信息,进行数字化记录,并在信息系统中进行综合管理和必要的数据分析,已非常普遍。但在实际应用场合,往往不是由PC机,而是由专门的硬件装置直接采集现场数据,因此要完成软硬件之间(上位机与下位机之间)的数据通信,则成为开发应用系统时必须考虑的问题。本文就以智能卡信息管理系统为例,提出基于COM+组件技术的管理系统开发设计思想与系统结构,并主要介绍了系统中软硬件之间数据通信功能的实现。
1 智能卡信息管理系统结构
本文所涉及的智能卡管理系统是以局域网及RS-485现场总线为基础、采用智能卡技术实现自动数据采集与身份鉴别以及信息共享的信息管理系统。整个管理系统基于智能卡作为电子证件、内部电子货币等功能,按其使用场合的不同将整个系统划分为多个应用子系统,考虑到随着信息管理的多样化,系统具有扩充的可能性,所以在软件设计时借鉴Windows DNA的分布式应用系统的设计思想和方法,使用COM/COM+技术构造一个分布式的多层应用系统。
Microsoft的DNA模型,应用程序在逻辑上由以下3层组成:
a) 表示层:用户界面层,即数据的输入输出界面。
b) 业务层:利用COM+技术实现业务规则和逻辑,是多个客户端共享的资源组件。 c) 数据库层:实现对数据库的访问。
它把对客户端的事务规则和对数据库处理的事务规则封装为标准的COM组件,从而将具有共性的业务逻辑和数据库访问从客户计算机中分离出来。客户计算机专注于界面显示和用户录入;中间层计算机解决业务逻辑;数据库层计算机负责处理对数据库的访问。以DNA思想构建的系统为开发人员、运行维护人员和最终客户提供了多种方便,可降低系统设计的复杂性,加快系统开发。同时,基于组件的易于替换、代码复用、并行开发、远程调用等特点,使用COM/COM+技术构造的多层软件体系结构,使系统具有高适应性和强伸缩性,提高系统的可靠性和易维护性。 在系统结构上采用分级的设计思想,将整个系统划分为多个应用子系统,以便于功能的扩充。每一个应用子系统,除了与卡管理中心进行数据通信和交流以外,本身也是一个独立的系统,可以实现其内部必要的库管理功能(进行部门内的结算和报表打印等)。子系统的结构如图1所示。

2 软硬件数据通信设计
2.1 通信模式
整个信息管理系统采用综合联网方式,分为两个部分:子系统内部的子网采用RS-485联网;子系统到中心服务器之间利用基于TCP/IP协议的局域网进行组网。子系统内部通信模式如图2所示。

子系统通信采用分布式监控,并结合了现场总线技术,以数字式、双向、串行、多点通信的数据总线,利用RS-485网络协议构成了整个读卡机网络,把上位机的RS-232接口经转换器和单片机的TTL信号融人RS-485网络中,由读卡机完成数据采集、数据处理、控制运算和数据输出等功能,再通过现场总线传到上位计算机上。
2.2 通信协议
通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检验纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守。
由于在RS-485的物理层上仅仅接收和发送比特流,并不关心它的物理意义和结构,所以必须在数据链路层规定通信数据结构(包括数据格式、传送速度、传送步骤以及纠错方式等),并对通信信息功能作出一种约定,只有确定了软硬件之间的通信协议,才能保证计算机对读写卡机传来的信息进行正确的处理。本系统根据通信数据和功能要求,通信协议中制定了16条功能说明,如表1所示。
在本设计中通信数据格式定义如下:
a) 传送速度为9 600 bit/s,一次传送的命令为28字节。
b) 上位机命令格式:命令头+功能号+命令内容+校验字。其中:
命令头:Head=ECH+ECH+ECH,3字节;
功能号:Func=8位二进制数码,1字节;
命令内容:命令报文,23字节,空余处用0填充;
校验字:CS=校验和,1字节。
c) 读写卡器应答格式:命令头+功能号+数据+校验字。其中:
命令头:Head=ECH+ECH+ECH,3字节;
功能号:Func=与上位机的功能号对应,1字节;
数据:23Byte,空余处用0填充;
校验字:CS=校验和,1字节。
下面以通信协议中的"功能11:计算机请求读卡机发出一条卡操作记录"为例说明通信数据的定制。
a) 计算机请求读写卡机发送一条缓存中卡操作记录:Head+Func+Jn[2]+REST(0)+CS。其中:
Jn[2]读写卡机编号:全局唯一的编号,共2字节(本命令不支持广播);
REST(0)=剩余的字节用0填充(重复0直到填满规定的字节数)。
b) 读写卡机返回应答:Head+Fune+Jn[2]+ADR[2]+记录[17]+剩余记录数[2]+CS。其中:
ADR[2]=卡操作记录在读写卡机中的地址,计算机用来确认卡操作记录的接收;
记录[17]=Cn[4]+Flag+DATA[6]+操作时间[6],其中:
Cn[4]卡号:4字节,唯一;
Flag=操作标志:1-扣款,2-计次,3-考勤,4-加款;
DATA[6]=操作数据,其中:Falg=l-扣款,DATA[6]=扣款金额[3]+剩余金额[3];Flag=2-计次,DATA[6]=REST(2);Flag=3-考勤,DATA[6]=年+月+日+时+分+秒;Flag=4-加款,DATA[6]=加款金额[3]+剩余金额[3];
操作时间[6]=年+月+日+时+分+秒。
剩余记录数[2]=读写卡机中剩余的卡操作记录数(不包括当前发送的记录)。
若卡中已经没有未处理的卡操作记录了,则剩余记录数[2]=FFFF。
本通信软件的设计采用主从方式,即所有读卡机作为下位机子站,只有在上位机主站询问时才应答。在实际的通信过程中,往往会出现由于某种原因而造成无限制地等待对方的应答,这样会使整个系统处于不正常的工作状态,或者延误其他动作的处理。因此,必须在发送和接收数据的时间间隔上加以限制,当时间一过就认为本次通信失败,允许下面的通信继续进行。具体的时间约定可根据通信内容、CPU处理速度、通信网络带宽,再加上适当的余量来确定。
根据分布式系统设计思想,子系统主机客户端应用程序除了与相关的子系统COM+组件联系、处理相关的业务逻辑外,还有一个重要的部分就是与硬件通信。
在通信系统中,上位机需要根据通信协议接收和解释信息,然后根据应用要求处理这些信息。在本系统中,因为通信协议功能较多,为了提高客户端软件的开发效率,专门设计一个通信组件CCOM来完成接收、解释信息的工作。此组件利用面向对象技术对本系统中的软硬件通信协议的细节进行了抽象和封装,通过一组方法和属性提供了协议中的所有功能指令,这样,在设计上位机数据采集软件时就不需要关心接口协议的具体细节,避免了程序员在上位机编程时对协议理解不同造成的错误,提高了开发效率和可靠度。
考虑到软硬件之间通信的速度,CCOM组件设计为一个进程内服务的本地组件,保存在动态链接库文件COMDLL.DLL中。它负责对软硬件通信协议中所有的数据通信功能进行解释,是连接软件和硬件之间的桥梁。CCOM组件在整个软件中的位置见图3。
在客户端上位机数据采集软件中,当从读卡机中采集数据时,只需要实例化CCOM组件后调用对应的方法,就可以方便地执行通信协议中的功能指令,简化了程序的开发,提高了开发效率。例如:通信协议中的功能11,在上位机数据采集软件实现中,只需调用以下主要语句即可。
3.1.2 串口通信实现技术
本系统使用Microsoft提供的MSComm控件来实现CCOM组件中串口通信功能。该控件不但包括了全部Windows API中关于串行通信的16个函数所具备的功能,而且开拓了更多的方便用户的对象属性,来满足不同用户不同业务的需求。通过使用MSComm控件可以快捷地完成串口通信程序设计,无需劳神费力地调用Windows API函数进行复杂的编程。利用MSComm控件进行数据通信的关键是准确理解和掌握MSComm控件的属性、合理充分运用MSComm控件的OnComm事件。
1) MSComm控件的几个重要属性
CommPort属性:设置或返回通信连接端口的代号,其最大值是16。
Settings属性:设置初始化参数,以字符串的形式设置或返回波特率、校验码、数据位、停止位等4个参数。
PottOpen属性:设置或返回通信连接端口的状态。
RThreshold属性:设置或返回引发接收事件的字节数。
SThreshold属性:设置或返回传输缓冲区中允许的最小字符数。
InputMode属性:设置或返回Input属性取回的数据的类型。
在CCOM组件中,MSComm控件的几个属性设置如下:
2) MSComm的通信机制
MSComm控件的目的是为了让用户设计一个系统可以与串行端口进行沟通及传送数据,因此信息会在其硬件线路上流动,此控件提供了下列2种方式来处理信息的流动:事件驱动(Event-driven),是处理连接端口通信的一种有效方法;程序通过检查CommEvent属性的值来轮询(Polling)事件和错误。本组件采用了前一种通信处理机制。
MSComm控件只有一个事件,即OnComm事件,所有可能发生的状况全部集中在这个事件中进行处理,而且只要CommEvent属性的值发生变化,就会产生OnComm事件,表示发生了一个通信事件或一个错误。
当上位机接收到下位机传来的字节达到RThresh-old的门槛值时,上位机认为接收到一条指令,Com-mEvent属性值发生变化,触发了OnComm事件,用Case语句判断参数值comEvReceive,编写程序代码来处理特定的指令功能。
基于VB6.0的接收数据时具体编程实现如下:
引发接收事件时的子程序:
3.2 下位机读卡机通信软件的设计
下位机(读卡机)通信软件的功能主要是接收上位机(子系统主机)的询问信息,根据通信协议的规定,进行相应的操作。由于通信协议中规定的功能有16项之多,所以在此仅以功能11(计算机请求读卡机发出一条卡操作记录)为例来说明下位机执行的程序流程(见图4)。
4 结束语
智能卡信息管理系统是一个比较庞大的系统,利用基于组件技术的分布式的多层应用系统结构,便于系统的扩充,使系统具有可靠性高、成本低、易于实现的特点。该系统中的各子系统在具体应用中,经过不断完善,显示出了良好的实用性。基于组件技术,利用通信控件MSComm实现的软硬件之间数据传输,稳定可靠,能满足实时控制的要求。 |