摘 要:本文以某旅游号点门禁管理系统为例,主要介绍基于射频IC卡应用系统的设计过程,并详细叙述了系统实现的具体技术。
1 引言
非接触式lC卡又称射频卡,由lC芯片、感应天线组成,封装在一个标准的PVC卡片内,芯片及天线无任何外露部分,是近几年发展起来的一项新技术。由于射频IC卡具有存储容量大、抗干扰能力强、便于携带、安全性高等优点,在公交、金融等很多领域都得到了广泛的应用。本文主要以某旅游景点门禁管理系统为例,介绍基于射频IC卡的应用系统的开发思路和设计过程。
2 系统需求以及设计思路
目前我国大部分旅游景点仍遵循传统的管理模式,门票一般采用纸质票,这种方式不仅在售票与验票过程中存在较大的财务漏洞,容易产生偷票、漏票、重复使用票的现象,也无法及时、准确统计游客的数量、流量以及区内的消费情况等。在旅游景点门票发行中采用射频IC卡,不仅可以有效地消除这些隐患、堵绝漏洞,还有利于年卡和月卡的发行。另外,一般景点都有很多的游乐项目,特别是节假日,游乐场的售票亭前总会出现长长的人龙,为了避免游客排队购票的时间浪费以及可能的消费流失,进入景点的游客可以在进场时购临时卡用于刷卡游乐,到出场时再退卡。这样游客在游乐的时候,就可以省去排队购票的麻烦,大大提高了消费热情和消费强度。可以看出,在大型旅游景点开发基于射频IC卡的门禁管理系统,不仅可以较好地实现景点的自动化管理,而且还可以通过射频IC卡的发行来刺激游客的消费,实现游客不同娱乐项目的自动收费。
该旅游景点有一个正门,设2个验卡通道,4个主要的游乐场所,考虑用5台电脑组成局域网。由于景点占地面积较大,不同游乐场所相距较远,采用R5485串行网络无法实现长距离的连接,所以系统对各游乐场均配备一台电脑和读卡器。选择一台性能较好的电脑A,放在景点入口处,用来实现发卡和进正门的刷卡功能,其中读卡器和发卡控制器分别接入其COM1口和COM2口:另外四台电脑B、C、D和E分别设置在4个游乐场所用于刷卡消费,相应的读卡器接入上位机的COM1口,在两个主要的游乐场中增设充值点,用2台发卡器分别连接到上位机的COM2口。由于本系统选择具有存储功能的射频IC卡,金额的扣除在射频IC卡上完成,后台数据库主要用于存储信息完成查询和统计等操作,对实时性要求相对不高,所以考虑将电脑A作为服务器,存放集中数据库的信息,电脑B、C、D、E客户端程序的登录验证、IC卡有效性验证等都需要访问电脑A中数据库才可以完成,其本地数据库中只存放在指定游乐场所刷卡消费的信息,可选择相对空闲的时间对集中数据库的信息进行更新。
根据需求,我们大致确定了系统实现的主要功能,分别是卡发行功能、刷卡功能、卡充值、挂失和解挂、查询统计、数据库维护、用户管理等,执行流程是:游客可以在进入景点之前通过发卡功能办理或临时IC卡,相关信息存入集中数据库相应的或临时IC卡表中;在进入景点或游玩某个游乐项目之前,根据卡还是临时卡访问相应的表,检查卡是否是有效卡,如果不是,给出相应的提示信息,拒绝其进入,否则通过刷卡程序按照事先设定好的金额,判断IC卡中的余额是否充足,如果余额不足,则提示相应的信息,不允许进入,否则更改IC卡中的余额,并将该刷卡信息记录在本地数据库中,作为以后更新集中数据库中消费表信息的依据;临时卡在退园时可以根据余额退还,为了查询统计方便,退卡后除了将临时卡表的对应记录删除外,还应在相应的消费表中将该操作记录下来。
3 具体实现
由于Visual Basic对串口和数据库的访问控制均提供了丰富的功能,且具有简单易学的特点,所以本系统采用Visual Basic 6.0作为开发环境。
3.1访问IC卡发卡器和读卡器
在VB中,上位机对串口的通讯可采用两种方法,一种是调用W indows的API函数,另一种是利用VB的通信控件。本系统采用VB提供的MSComm通信控件实现对IC卡发卡器和读卡器的访问。注意,由于系统的设计涉及上下位机的通讯,需事先为每一个下位机分配一个的机号,在处理时还可以根据刷卡机的机号确定刷卡的业务。
在所有提供和下位机通信功能的程序界面上放置MSComm控件,为了实现上下位机的通信,MSComm控件在使用前有许多参数需要设置,比如确定下位机和上位机的哪个端口连接,设置波特率等,假设MSComm控件的名称为MSComml,IC卡读写器与串口2连接,则具体属性设置参考以下程序段:
MSComm1.CommPort=2设置串口号
MSComm1.Settings = ”9600,N,8,1” 串口的属性
设置InputLen为0时,用Input将使?MSComm 控件读取接收缓冲区中全部的内容
MSComm1.InputLen = 0
MSComm1.InpulMode = comlnputModeBiary 二进制接受方式
MSComm1.RThreshold =1,每1个字节响应消息
MSComm1.InBuferSize=1024设置接收缓冲区的字节长度
MSComm1.Po~Open=True,打开开通信串口
一般将以上程序段放置在窗体的Load事件中,当执行卡发行功能或运行刷卡程序时,一运行程序就可以打开串口,只要将lC卡靠近发卡器或读卡器,它们就可以读出保存征 C卡中的卡号和余额等信息,MSComm控倬会自动触发OnComm事件过程,在该过程中,可以读取接收缓冲区中的数据,获得相关的卡号和余额等信息,根据要求对数据库进行操作。
3.2 串行网络中多读卡器的访问控制
由于对每个游乐项目的刷卡消费只有一台读卡机通过RS232串口和计算机相连,所以在读卡程序控制时采用被动模式,只有读卡器接收到信息后,才触发上位机对其进行处理。如果是大型游乐场所,可能需要设置多个读卡器同时进行刷卡,应该如何处理呢?如果多个游客同时刷卡怎么办?本系统中,在景点入口处,由于人流量比较大,为减少等待时间,提高检票的速度,设置了两个读卡通道,这两个读卡器通过RS485网络并联,利用RS4851RS232转接器和上位机的串口连接。为防止同时读卡造成的冲突,对RS485网络并联的多个读卡器的控制,一般不再被动等待读卡器触发事件,而是采用主动模式编程。我们利用定时器控件Timerl来控制程序按照一定的时间间隔顺序访问多个读卡器,取得了良好的处理效果。参考程序段如下:
Private Sub Command1_Click()‘访问指定读卡器程序段
m = m + 1
‘o数组中保存RS485网络中每个读卡器的机号,UBound(a)获得读卡器的个数,读卡时按指定的顺序依次访问每个读卡器
If m > UBound(a)Then
m = 1
End If
If Not MSComm1.PortOpen Then MSComm1.PortOpen= True
3.3集中数据库的更新处理
本系统为了提高处理速度,减少多台设备并行访问对系统性能产生的影响,将每个客户端程序处理的刷卡信息保存在本地数据库中,但同时也带来了一系列的问题,比如对集中数据库刷卡数据的及时更新,数据库更新时异常情况的处理等。为提高系统的安全性,集中数据库的更新处理采用存储过程实现。客户端程序通过调用事先编制好的存储过程,实现对远程数据库的更新操作。与标准的SQL语句不同,由于存储过程由数据库服务器编译和优化,可以有效提高程序的运行速度,另外,存储过程中的SQL语句属于事务处理范畴,即存储过程中的所有SQL语句要么都执行,要么都不执行,从而保证了数据的完整性和一致性。
4 结束语
本文根据某旅游景点IC卡业务的需求,从系统的设计思路、读卡器的访问控制以及数据库的更新处理等几个方面详细叙述了系统的设计过程和实现的技术。除了可以应用于门禁管理,本文所介绍的Ic’卡应用系统的开发技术具有一定的普及性,可应用于停车场、电影院、校园一卡通等领域,具有广泛的应用前景。从已有系统的投入运行情况来看,系统的开发使用均收到了良好的经济效益和社会效益。
[1]. RS232 datasheet https://www.dzsc.com/datasheet/RS232_585128.html.
[2]. RS485 datasheet https://www.dzsc.com/datasheet/RS485_585289.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。