下载

0下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 (硕士学位论文)IC卡一卡通小额充值消费系统的构建

(硕士学位论文)IC卡一卡通小额充值消费系统的构建.doc

(硕士学位论文)IC卡一卡通小额充值消费系统的构建

沈人恩
2017-12-07 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《(硕士学位论文)IC卡一卡通小额充值消费系统的构建doc》,可适用于高等教育领域

(硕士学位论文)IC卡一卡通小额充值消费系统的构建(硕士学位论文)IC卡一卡通小额充值消费系统的构建摘要摘要随着一卡通应用越来越广泛原有的IC卡系统和简单的消费功能扩充已经难以满足市场需求。如何一卡通用户需要进行方便、快捷地进行消费与充值同时运营商关注如何加强数据的安全性与准确性并方便日常管理。通过对原有IC卡系统的分析一卡通系统结构得以重新设计。在保留原有系统精髓的同时增加新的模块并整合各模块成为该系统设计的初衷。本系统采用三层架构设计分为中心前置服务器数据库中间件和数据服务器以及终端设备层与层之间采用网络相互连接。本文将实现以下五项功能:通过采用类似金融系统数据包的格式制订网络通信协议和流程增强通信的安全性开发位于前置服务器上的前置网关程序阻隔外部对后台的直接访问增强系统安全性整合现有的模块重写现有模块的通信部分以实现和新系统的连接。同时增强部分模块的功能并增加对脱机终端的支持开发基于WEB的B,S结构的管理程序为运营商提供一个清晰简洁的管理界面方便运营商对整个系统进行管理和监控。制订终端的操作流程开发终端软件直接实现客户需求。关键词:一卡通终端通信AbstractAbstractsmartcardbecomesmoreformerICcardanditsAspopular,thesystemsimplefunctionofcannotmeettheneeds(Consumersneedamoreexpansionconsumingconvenientandfasterofandservicewayconsumingrecharging(Meanwhiletheconcentrateondatatoshouldsafety,accuracy,andeasymanage(pro讥derstheformerICnewsmartcardinfrastructureisanalyzingsystemasystemByOiltheessenceofformernewiswellre(designed(Basedsystemthesystemmanagednewmodulesandaswell(byaddingintegrationthreemiddlewareThisofserver,databasesystemcompriseslayers:frontenddatas能可用于实现各类社会公用事业缴费、公共交通、停车、彩票、餐饮、旅游、文化、医疗等多种小额消费为市民的工作、学习、生活提供极大的方便。((小额消费POS机的现状IC卡消费机这个产品在国外没有是地道的中国货。有人称IC卡消费机为POS机POSPointOfSale直译收款机。一般的POS机指商场收款这种产品很标准不是IC卡的机具。IC卡用于消费扣款的产品和应用场合很多。如学校售饭、小卖部、网吧消费、图书馆、会所、商场打折会员卡、三表收费、淋浴水控制等。不同应用场合不同的公司有不同的解决方案。最早普及的收费技术当然是光电卡上世纪九十年代曾经在相当一部分大学中使用。但是光电卡的缺点很多。光电卡很容易复制接触式机具易坏、每张卡对应计算机里的一个账户充值、扣钱都在账户进行实时操作依赖后台系统的稳定性。后来IC卡的消费系统逐步淘汰掉了光电卡系统。当前市面上的系统分两类一类是用IC卡在前端扣款但实际系统在后台账户扣款交易在后台进行。这类ID卡消费系统还是依赖后台和网络的稳定。另一类是使用前端扣款后台采集数据事后处理。另一类的IC卡消费系统是在前台操作刷卡扣钱。消费金额、卡余额都是写在卡上。这一类现在应用比较广泛公交IC卡就是一个例子。由机具本地存储数据方便对账且一定程度上能保证数据的安全不丢失。另外因为本地存储一定程度上可以减少对网络的依赖。第章绪论(研究内容((主要研究内容(总体结构的研究本系统由以下几个部分组成:各充值,消费点:POS机或配有机具的PC。连接网络:有POS机(电话线POS机(有线网络PC(有线网络。中心前置服务器:前置服务程序C,S模式负责POS机的连接参数下载数据采集前置管理程序B,S模式负责参数管理信息发布状态显示等功能。数据库中间件:在数据服务器和前置服务器之间负责数据中转和处理。数据服务器:数据库。(终端程序的开发终端设备的主要功能是对非接触IC卡的读写操作和数据的存储。该程序主要实现读卡内信息查询电子钱包余额、月票信息及其他卡内信息不同的城市对信息规划不同完成充值、消费功能等。(前置服务器上程序的开发前置服务器上的程序由两个程序构成:A、前置网关程序负责接收处理转发各个终端设备的上传数据并对参数下载功能提供支持。对数据的处理方式主要有文件转发和报文转发。B、系统数据管理程序是一个基于asp(net的WEB程序通过这个程序管理者可以管理黑名单卡类型和各个POS的参数并对各个点的状态进行监控。WEBADMIN是唯一有权限对数据库进行人工操作的接口。((研究方法在公司原有IC卡平台的基础上利用其数据库和卡片管理规则根据现有需求进行软件开发。技术路线和实施方案:(总结过去的客户需求和项目实施中遇到的问题分析设计出一个相对比较完善的结构。为增强通用性对本系统的兼容性进行重新设计将部分软、第l苹绪论硬件模块化提高可选择性和通用性。同时也提高了可维护性。(采用TCP,IP协议为基础自定一套通用的传输命令。TCP超时时间定位秒采用bit数组传输减少传输字节。必要的部分采用DES进行加密来验证数据是否合法。(编程语言上终端机采用C语言作为开发语言配合厂商接口函数。服务端采用微软VB(NET利用(net的多线程和socket套接字实现数据采集传输和分类存储。可行性分析:本课题从实际项目出发通过总结以往的经验结合新的客户需求。其中大部分功能已经分批独立实现本项目对这些独立功能进行整合并增加新的功能技术上是可行的。功能模块化后可以比较灵活的搭配也方便运营公司根据实际需要进行选择。作为一卡通的消费,充值平台本系统基本满足了现阶段的市场需求且投入相对较低从市场角度来说可行性很高。本文功能实现:编写IC卡管理中心的中心管理软件部分模块程序。编写通信子系统的监听转发传输模块程序符合设计流程。编写一体机软件实现了卡操作、终端机管理、数据存储和通信功能。((关键技术windowssocket接口TCP,IP协议微软(net技术多线程方法采用VPDN虚拟专用拨号网业务技术保证数据传输的安全跨表数据查询DES加密算法根据需要制定通信协议在保证数据安全的前提下提高传输效率。利用已有的TCP,IP模块实现POS机的网络连接和数据传输。采用windowssocket和多线程技术提高服务器端程序的性能。编程语言上POS机采用C语言作为开发语言配合厂商API。服务端采第章绪论用微软VB(NET利用(net的多线程和socket套接字实现数据采集传输和分类存储。(本文结构本文在第二章首先介绍了开发环境。本系统采用多种语言上层软件使用Studio先进的微软Visual进行开发。底层采用C语言开发充分利用C语言的小巧和对底层的强大控制力。同时介绍了数据库环境分析选择数据库的依据。在第章中论述本系统设计目的和原则并介绍本系统结构。在、、章中分别介绍本系统中主要实现的三个子部分:通信子系统、前置网关子系统和一体机设备软件的功能。在最后一章中总结了本文实现的内容并对未来开发方向做出展望。第章系统设计概述第章系统设计概述(概述本系统实现以下功能:(建立一套功能完善、满足一卡通需要的IC卡售卡充值与小额消费系统(收集运营数据建立供财务和运营管理分析用的数据信息(配合已有的清算系统实现运营系统的规范化和数字化管理提高“一卡通公司”经济效益、社会效益和管理效益(对现有系统进行升级统一与合并降低未来可预见的开发难度和工程量增加公司效益。((系统总体结构设计经过对多个城市的需求分析和对现有系统的分析了解本系统采用多级架构模式可以根据不同城市的具体需求搭配使用满足不同的需求。多级架构可以将“一卡通公司”和公交公司等运营公司的权利责任分开使得各自任务明确职责清楚。数据业务在数据处理中心DPC进行处理IC卡业务在IC卡管理中心处理。本系统主要包括IC卡管理中心、数据处理中心、消费数据平台、售卡充值平台、数据采集平台、终端设备。其中本项目主要涉及其中的IC卡管理中心、消费数据平台、售卡充值数据平台和终端设备。第章系统设计概述系统结构图如下图所示:E卡留孽融I刮雕针拐础鼎充消费数据处l匿碱售卡、充直、退长挂失、换卡、年哟Z弋懒关碱公安数消费数据据采集碱r、f、(r售卡究值消费数瞎Il数据t消川Vtrt联机充f直点充Il量―鼢『【(小额消费垂咎嵩设备公交消费薹肄嵩设备图(系统总体结构图第章系统设计概述系统网络图如下图图系统网络图第章系统设计概述(子系统功能描述I((C卡管理子系统IC卡管理中心的主要功能包括:(生成黑名单。(清算。(卡片初始化:卡片在正式投入使用前须经过初始化对卡片内的空间按照一卡通的规定进行划分然后将密钥写入卡内从而使这张卡片能够在一卡通领域中使用。同时也对系统中的管理卡进行初始化。(IC卡业务数据处理:完成IC卡的售卡、充值、年检、退卡、换卡、挂失、解禁、IC卡业务结算。(售卡定义:卡片初始化后在用户购买时首先进行售卡操作在卡片上记录售卡信息并且在本地数据库中记录卡片的信息及购买人的信息。(充值定义:当卡片中的电子钱包金额不足或月票次数不足时需要进行充值卡片充值后将充值信息记录到数据库中用于清算。(年检定义:年检是针对那些具有特殊要求的卡片而设置的卡片每年年检一次年检的方式的分为固定年检和活动年检。只有年检后的卡片才可以继续使用否则卡片内的行业数据部分如:月票将不能使用。电子钱包可以继续使用。(退卡定义:当用户提出退卡请求根据用户所退卡判断卡片的有效性如果可以退卡则将卡内电子钱包的金额退还给用户并产生一条退卡记录存于退卡表中用于清算。退卡分为:好卡退卡、自然损坏卡退卡、人为损坏卡退卡。(换卡定义:当用户卡片丢失或损坏时可以进行换卡操作将数据库中的卡片信息转移到一张新卡中。换卡包括:自然损坏卡换卡、人为损坏卡换卡、挂失卡换卡。(挂失定义:当用户提出挂失请求根据用户的身份证编码可以查询出用户的卡号在核实用户身份无误的条件下对该卡进行挂失由挂失记录产生黑名单记录存于黑名单表中用于清算。(解禁定义:挂失后的卡片找到后在联机退卡挂失点对其解禁从而使已经挂失的卡片能够继续使用已经进行了挂失卡退卡或挂失卡换卡操作的卡第章系统设计概述不能解禁解禁后通知用户天以后才能使用。解禁后的卡需要在消费设备中再次更新黑名单方可使用否则该卡会被车载机置为黑卡。((消费数据处理子系统数据处理中心是IC卡管理中心的一部分主要包括两个方面的工作:消费数解析和数据处理。解析是指将终端设备生成的数据文件解析成可以处理的数据格式数据处理是指将这些数据进行入库分析并完成备份。((售卡充值子系统售卡充值数据平台同样是数据处理中心的一部分主要负责售卡充值数据接收数据安全认证和数据处理。((公交消费数据处理子系统公交消费数据处理子系统是专门为公交车载设备建立的一个数据采集平台。它的功能类似于消费数据处理子系统实现公交车载设备消费数据的采集、解析和处理。但因为车载设备的消费数据采集量大采集方式特殊且数据相对杂乱所以单独为其开发一个子系统实现独立工作。((前置网关子系统前置网关子系统主要负责接收和转发各终端设备的通信数据阻隔和内部服务器的直接交互增强安全性。同时利用中转作用可以降低辅助脱机终端的通信难度减少开发难度。另外前置服务器上还搭建了系统管理平台。((终端设备子系统终端设备子系统是实现具体的售卡,充值和消费功能的基础。除公交车上必备的车载刷卡设备外其他终端根据各个城市的具体不同需求配备不同的设备。可选的有:联机读卡设备、脱机一体机、自动圈存模块等。((通信子系统通信子系统为其他子系统模块实现数据交换功能。第章系统设计概述(系统实现的关键技术((开发语言(上位机程序主要以vb(net进行开发。这种语言是微软(net的一种语言实现。与vb相比vb(net继承了前者UI开发简单语法明确简练的特点。在此之上规范了语法使代码更易读。作为一种面向对象的语言vb(net具备良好的继承和接口使得开发重复或类似代码的工作量大大降低。(net类库提供了丰富的开发基类使得一些前较难开发的环节如硬件操作等大大简化。通过对(net类库的引用vb(net可以实现vb很多难以实现的功能。同时(net提供了良好的多线程管理和异步操作支持这在使用socket开发和其他大量占用CPU时间的技术进行开发时程序能有良好的响应也降低了开发难度。特有的事件机制更使得开发工作变得流畅开发中可以将更多的精力放在如何实现需求上。(终端软件开发主要使用C语言进行开发。C语言是一种计算机程序设计语言。它既有高级语言的特点又具有汇编语言的特点。它可以作为系统设计语言编写工作系统应用程序也可以作为应用程序设计语言编写不依赖计算机硬件的应用程序。因此它的应用范围广泛。相对于上位机软件对UI的要求终端软件更强调用较小的代码空间实现功能这使得C语言称为不二的选择。((数据库的选择针对不同的应用环境可以选择不同的数据库。Oracle数据库的跨平台能力使得其在Linux,Unix平台下成为更好的选择。而且在数据系统的安全性、稳定性和并发处理能力上Oracle都表现得很好。而在Windows平台下MSSQLServer得益于微软系统的优秀支持则更胜一筹。过去的MSServer在性能SQL和安全性上相较Oracle毫无优势所以很多比较早使用公交IC卡的城市都使用Server的性能和安全性大大提了Oracle作为数据库。但最近几年微软的SQL高通过网络上查阅的一些资料甚至发现超过Oracle的趋势。并且因为价格Server作为后台数据库。的因素也使得很多城市使用SQL第章系统设计概述基于上述原因优先尊重客户的选择再根据客户的实际数据量和操作系统来选择数据库。第章通信子系统的实现第章通信子系统的实现(概述通信系统负责处理中心系统和各个接入系统、客户端之间的通信。通信子系统并不独立于其他系统而是和其他各个系统模块有机的结合在一起辅助其他系统完成系统自身的功能。同时通信系统也为中心管理提供了必要的信息和交互手段。中心同各分系统之间采用基于TCP,口协议的、面向连接的流式Socket方式进行通信分系统是每次通信的发起方。中心系统的传输子系统作为服务器响应各个分系统的通信请求各个分系统以客户端的方式工作从中心请求数据服务。通信系统与各个分系统之间的数据交换有两种主要的形式:数据文件和数据报文。数据文件是指清算中心和各分系统之间的文件交换包括分系统向传输子系统上传文件消费交易文件、充资交易文件等和清算中心下发给各个分系统的下传文件包括清算文件、黑名单文件等文件接收方将接收到的文件保存在本地并负责将接收的文件送到应用指定的目录下文件发送方负责备份已经成功发送的文件数据报文是指服务器端和客户端之间通信的内容为报文接收方接收到报文后作出相应的处理但不需要将报文的内容保存为文件。数据报文多应用于与终端设备的通信中。(子系统结构设计服务端只有,个通信进程该进程创建一个采用TCP,IP协议的、基于异步多线程的、面向连接的流式stream监听服务监听一个特定的端口以相应分系统的通信连接请求。各个终端可以有多个连接请求服务端进程决定是否允许接入通信。如果允许则通信进程建立一个新的链接通道负责与终端连接。当通信结束后通信进程会关闭这条链接来释放资源。通信进程设计成监听端口可配置通信进程控制可接入的终端和同时建立的连接数量保证通信的系统资源。由于是异步多线程的通信模式这样各个通信之间互不干扰相对独立。第章通信子系统的实现(通信报文的定义通信报文是通信协议的重要组成部分也是通信信息的载体。报文是否合理直接关系到通信协议的安全性和通信效率。我制订的通信报文借鉴了金融业报文IS数据包。采用标准包格式重新制订了各域的功能抛弃一些无用域使其符合本系统的要求同时简化报文提高效率。((报文组成报文由位图、域主体两部分组成。其中位图为位字节二进制数字组成。每一位代表一个域是否启用。规定:为该域启用O为该域未启用。图(报文组成域主体由多个定长或者变长的域组成。每个域又由以下部分组成:域类型表示域内数据类型字符串或二进制数字节域长度表示域的数据有效长度字节域数据实际有效数据变长((规定的几个特殊域域――位图域l域――终端信息域变长域包括终端编号终端名称可选终第章通信子系统的实现端程序版本可选本次通信操作员ID可选以及其他可能用到的终端信息。域――报文类型域定长域字节定长字符串如控制报文CMD数据报文DAT等参数报文CoN等。本域用来限定报文的功能类型方便处理。域――原始报文信息域变长域包含原始请求报文的部分信息域――变长域如果为连续发送报文则启用本域用来标示数据是否继续传送。域――数据域变长域存放数据。二进制。域――校验域定长域采用CBCDES算法对报文进行加密。报文接收方根据本域和数据加密结果判断报文是否合法。(子系统的实现((Socket类成员(TcpListener类命名空间:System(Net(Sockets从TCP网络客户端侦听连接。提供一些简单方法用于在阻止同步模式下及端口号或者仅使用端口号来创建TcpListener。可以将本地口地址指定为Any表示为监听所有本机口。排队。Stop方法关闭TcpListener监听。AcceptTcpClient方法从传入连接请求队列提取连接接受挂起的连接请求。声明:PublicFunctionAsAsBeginAcceptTcpClientcallbackAsyncCallbackstateObjectAsIAsyncResult参数:第章通信子系统的实现Statr用户定义对象其中包含接收操作的相关信息。当操作完成时此对象会被传递给callback委托。返回值:一个IAsyncResult它引用TcpClient的异步创建。处理远程主机通信。声明:PublicFunctionAsEndAcceptTcpClientasyncResultTcpClient参数:返回值:TcpClient(TcpClient类命名空间:System(Net(Sockets为TCP网络服务提供客户端连接。TcpClient类提供了一些简单的方法用于在同步阻止模式下通过网络来连接、发送和接收流数据。使用远程主机的主机名和端口号创建TcpClient。此构造函数将自动尝试一个连接。Close方法释放此TcpClient实例而不关闭基础连接。GetStream方法返回用于发送和接收数据的NetworkStream。声明:PublicAsNetworkStreamFunctionGetStream返回值:基础NetworkStream(NetworkStream类命名空间:System(Net(Sockets提供用于网络访问的基础数据流。NetworkStream类提供在阻止模式下通过Stream套接字发送和接收数据的方法。可以在同步和异步数据传输时使用第章通信子系统的实现BeginRead方法从NetworkStream开始异步读取。声明:PublicOverridesFunctionAsAsBeginReadbufferByteoffsetInteger,sizeAsInteger,――callbackAsAsAsyncCallbackstateObjectAsIAsyncResult参数:数据的位置。o凰赍bu胁中开始存储数据的位置。sizr要从NetworkStream中读取的字节数。statr包含用户定义的任何附加数据的对象。返回值:表示异步调用的IAsyncResult。EndRead方法处理异步读取的结束。声明:PublicOverridesFunctionAsEndReadasyncResultIAsyncResultAsInteger参数:asyllcResul卜一一个表示异步调用的IAsyncResult。返回值:从NetworkStream中读取的字节数。BeginWrite方法开始向流异步写入。声明:PublicOverridesFunctionAsAsBeginWritebufferByteoffsetAsAsAsInteger,sizeIntegercallbackAsyncCallbackstateObjectAsIAsyncResult参数:o凰eHu脑中开始发送数据的位置。第章通信子系统的实现Sizr要写入NetworkStream的字节数。State一咆含用户定义的任何附加数据的对象。返回值:表示异步调用的IAsyncResult。EndWrite方法处理异步写入的结束。声明:PublicOverridesSubAsEndWriteasyncResultIAsyncResult参数:嬲yncResult一表示异步调用的IAsyncResult。((Socket监听功能的实现通信进程创建一个使用TCP,IP协议的、面向连接的Socket套接字并利用该套接字监听特定的端口连接请求。通信进程负责管理清算中心和所有的分系统的连接包括连接权限和同时连接的数量。通信进程的监听流程如图(所示。第章通信子系统的实现图(监听流程图通信进程在判断是否允许接入时会限制同时连接的数量当连接的数量超过最大允许值时服务器Socket就会阻止该接入请求直至有连接释放时才会允许新的连接接入。进行通信同时会生成一个通信处理线程处理两者之间的通信服务器Socket并不等待该线程的处理结束而是直接等待下一次的连接请求。为了保证通信进程能随时响应关闭请求服务器Socket采用异步非阻塞式的监听即:无论有无连接请求系统都会继续后面的处理当接收到退出指】第章通信子系统的实现令时关闭服务器Socket进入通信模块结束处理。通信进程结束时要等待其所有子线程都结束。本节部分源代码参见附录A((报文过程处理所有的通信过程由客户端发起通信控制头由客户端组织、发出通信过程处理根据通信控制头的内容选择具体的业务处理过程。流程图如图(所示。图(报文处理流程图每个通信过程处理开始于接收一个通信控制头根据面向的对象不同报文会有所差异。(充值,消费一体机通信的实现第章通信子系统的实现充值,消费一体机主要作为脱机消费终端使用多用在不能提供稳定网络的环境下。当需要进行联机通信时一体机通过专线拨号的方式与前置服务平台建立连接实现采集数据的上传和所需参数的下载功能。(网络结构一体机网络结构如图(所示。霎一―睁|簪端终端P。馓终靖终端据对账圈一体机网络结构图第章通信子系统的实现((通信流程通信整体流程如图(所示。图(一体机整体通信流程图第章通信子系统的实现(发起通信当准备进行联机通信时一体机执行拨号程序通过读取存储器中指定的远程中心号码进行拨号。出于安全目的这个连接有别于一般的电话拨号而是采用PSTN的专有线路。拨号后一体机程序试图建立一个针对指定端口的连接。前置服务程序判断是否有足够的资源来允许建立连接如果有同意建立连接。图(发起通信流程第章通信子系统的实现(终端认证当连接建立后一体机发送认证请求到前置服务程序。前置服务程序通过一体机提交的信息生成一个明文信息返回给一体机。一体机根据预先定义好的加密方式对明文加密后反馈给前置服务程序然后由前置服务程序判断这一个返回加密数据是否合法。如果合法则允许一体机进行其他通信如果不合法则中断本次连接。一体机前置服务程序发送认证请求根据信息生成明文及终端信息,,对明文加密,解密密文返回密文数据继续下一步认证成功一图(认证流程(时间校对一体机发起时间校对请求。前置服务程序返回当Ij『服务器上的标准时间。这个时间十分重要因为一体机上的结算等需要准确时间功能都要以服务器时间为准。第章通信子系统的实现一体机前置服务程序发起校对时间请求返回服务器时间图(时间校对(参数下载一体机发送参数下载请求。前置服务程序根据一体机的机器编号从数据库或者中心发布文档中获取相应信息打包成自有的协议包后发送给一体机。一体机对协议包解包后将参数存储到对存储器应区域中并实时更新变量。下载的参数包括黑名单、卡类型列表、一体机参数表等。第章通信子系统的实现Y图(参数下载流程一般来说IC卡黑名单数量与该城市发卡量有一个比例关系大约为,到,。这就决定了一个发卡量大的城市其黑名单数量会十分庞大。而受限于一体机的机能并不能通过文件的方式传输这个黑名单。所以在传输黑名第覃通信子系统的实现单时采取了分批分量的方式下载。将全部黑名单分为个部分:基础黑名单增量黑名单白名单基础黑名单一般一个月或者几个月发布一次包含有发布时最新最全的黑名单数量。增量黑名单每天发布一次是在最近一次基础黑名单发布之后产生的新的挂失卡号名单。白名单每天发布一次为解禁的卡号列表。一般来说每月的月初下载一次基础黑名单这次下载通常会占用较多时间。之后的每天下载增量黑名单和白名单。而且因为黑名单的特殊性一般把整个名单分为多组。服务程序一般以条为一组打包在一个报文内传输。当报文在一体机上接收并通过校验后一体机返回确认报文请求下一组数据否则将发送重发报文请求重发刚才一组数据。见图(。第章通信子系统的实现图(黑名单下载流程(数据上传一体机发送数据上传请求。前置服务程序根据请求判断将要上传的数据类型并根据设计要求来生成数据文档或者直接将数据入库。每次报文发送一条数据在前置服务程序验证数据完整性后发送一个返回报文告知一体机是重发上一条数据还是继续发送新的数据直到一体机中全部需要上传的数据发送完毕。第章通信子系统的实现图(数据上传流程(通信结束一体机发送结束通信请求。前置服务程序接到请求后回复一体机可以断开连接。一体机切断网络连接通信结束。前置服务程序在一体机断开连接后释放分配给本次连接的资源。第章通信子系统的实现(联机模式通信的实现网络结构联机模式的网络结构由中心服务器网络和终端部分组成。邕联机模式网络结构创第章通信子系统的实现((通信流程联机模式通信需要较好的网络环境。设备是一直在线的可以随时方便的查询数据库中的信息并且通过服务器的强大性能完成各种认证计算和操作。终端只负责基本的IC卡读写和一些信息录入反馈等。(使用机具在线充值流程网点客户机进行充值时由读写机具完成对卡片的充值操作通过认证卡内密钥与ISAM卡是否匹配来确定是否是本系统卡。客户端程序发送给读写机具读卡指令后读写机具会将卡内的信息发送给客户端用来显示给客户。如果继续充值那么需要根据相应提示来确定充值金额。此时充值交易开始客户端将充值金额和相关内容组成充值请求报文发送给中间件。中间件首先判断请求报文是否合法以及有效然后查询黑名单并进行充值权限和授权充值额度的认证。认证通过后后台交易流程开始数据库记录本笔充值交易数据相应扣减网点的充值额度并将充值内容通过客户端返回给读写机具。读写机具根据发送回来的内容再利用ISAM卡计算充值密钥依据充值规则对用户卡进行充值。充值成功后由客户端向后台返回充值成功报文充值交易及后台交易流程均结束。流程示意图如图(所示。第章通信子系统的实现值开始J(读取卡片信息J输入充值金额J交易开始熊厶、鲥一会((,(,一V迁车i过交易开始J生成充值记录(,,『返刚“认证不通过”进入冲正流程返回报文觚《到返回报多一报文,,L威I,(::威l功I工发送‘‘充值成功’’报文lI交易结束交易结束J充值完成图(使用机具的在线充值流程示意图第章通信子系统的实现(使用一体机的在线充值流程读卡机具需要一台PC配合所以控制程序实际上是工作在PC平台的。这样通信中使用的数据报文可以通过PC端程序进行封包或解包。与机具不同一体机是独立工作的单片机结构的设备并不需要专门分配PC。但由于其性能的限制频繁的封包解包对于一体机来说也相对吃力。本系统中将采用中转的办法来实现与数据中间件接口结合。一体机将原有报文发送到一体机前置服务服务器由前置服务程序接收重新封装成符合数据中间件接口的数据报文然后发送给数据中间件。经后台服务器处理后通过中间件将数据报文返回给前置服务程序再由服务程序将数据重新封装为一体机协议中的报文发送给一体机最后完成充值功能。流程如图(所示。一体机前置服务程序数据中间件图(使用一体机的在线充值转发流程第章前置网关于系统的实现第章前置网关子系统的实现(概述前置网关子系统是中心服务器同外网交互的一个平台。出于安全的考虑如果让外网访问直接到达中心服务器或者直接访问数据中心显然是欠妥的。同时由于中心网络中可能存在多个服务器协同工作。作为数据访问者如果直接访问则可能需要建立多个连接不但不安全而且不必要的资源开销也会增加。使用前置网关服务器可以有效的解决这个问题。将专门开茇的网关程序安置在网关服务器上对来访的数据进行分类综合处理和转发并将相应的返回数据返还给访问者这不但增强了安全性同时也降低了访问者的访问难度。辫燃陪一^(陵麓碱一声蝴il妒错妒鲥《霉固一图前置网关服务程序网络示意图网关服务还可以独立部署在某些分立采集点实现数据在采集点采集然后上传信息到中心汇总的工作模式。第章前置网犬子系统的实现图(分立模式工作的前置网关服务程序网路图前置网关服务器上还放置有通过开发的B,S管理程序可以实现远程管理系统运行参数和监控系统运行状态。基于B,S程序的特点管理员在进行管理和监控的时候不在需要特定计算机和专用的客户端这大大方便了管理。当然出于安全的考虑可以通过IIS服务设置限制可访问的m范围和访问用户。本网关服务可以和网站服务使用同一服务器节约客户的成本。(前置网关数据转发的实现前置网关服务程序的主要功能就是对数据进行转发。转发方式可以分为报文转发和文件转发。((报文转发的实现所谓报文转发就是将终端传回的报文进行分类整理然后按照需要向不同的服务程序发送并等待回应。当收到回应后将各个回应如果为多返回重新打包并发送给终端。另外针对一体机的处理机能较低这一情况为了降低一体机程序开发难度和提高一体机效率一体机采用简单的二进制报文方式通信。而将这些简单的报文转换成通用包报文的工作也交给网关程序负责。图(所示为报文的转发例程:第章前置网关子系统的实现缈嵩哆J对报文解包按照报文类型将数据按需投送给各个服务器进行处理J等待报文返回按需重新封包r将封好的报文发送到终端图(报文的转发((文件转发的实现文件转发功能是提供给旧有系统的一个接口。原有系统的部分模块并没有直接的TCP,IP通信接口而是使用临时文件作为数据采集和下载的传输媒介。因为在原有系统工作正常的情况下对其做修改是没有必要和不安全的。所以出于安全的目的并为了降低开发难度文件转发模式仍然保留。网关程序可以按照规则对终端上传的数据进行解包和整理、解析。然后根据原有项目模块的数据格式定义生成相应的文件存放在指定位置实现数据采集功能。同时可以读取原有模块生成的设置信息文件根据终端的请求将这些信息打包发送给终端完成参数下载等功能。生成的文件将由原有的数据处理模块如消费数据采集平台等进行处理将数据入库分析完成一次数据采集。转发例程如图(所示第章前置网关子系统的实现绷艮L对报文解包按照报文类型将数据生成文件L将文件存放到指定地址图(文件转发功能在一些特殊情况下比如某些项目需要在终端部署密集的地区设置分立采集点而采集点需要实现尽快的核对采集信息下发终端参数等功能。为了解决这类问题文件转发的功能也是必须的。当采集文件生成后将数据信息解析录入到采集点本地的数据库并执行清算过程主要完成合法数据累计、剔除重复数据、备份错误数据并报警等功能。同时根据客户要求可能客户为多方将采集文件通过FTP、HvrP、PP等方式上传到管理中心进行清算或备份工作。根据需要采集文件可以先进行可逆的加密后再传输。这样做的目的除了方便采集点核对账目外也增强了数据的安全性。尤其是当多个客户以合作方式采用本系统时这样就可以大大增强对账的准确性减少一些人为因素对数据完整性的干扰。((网关程序的实现前置网关程序的实质是一个TCP,IP监听和发送程序并包含简单的数据处理能力和文件的读取和写入功能。网关程序需要一面监听来自终端的传入连接,面建立和内部各服务器的第章前置网夫子系统的实现连接。网关程序工作时至少包含个以上线程其中监听线程监听某个固定的端口接收数据然后建立面向内部服务程序的连接用于向内转发数据报文。根据需要访问的服务多少决定建立多少个向内的连接每个连接都在独立的线程中工作互不干扰。终端在每次需要通信时才建立连接完成通信后会自动关闭连接这样可以降低网络资源的占用减少因占用网络时间而产生的费用。网关程序需要在及时的响应终端的连接请求的同时不能失去界面的响应。采用异步的监听方式虽然会稍微提升响应时间但这个影响微乎其微并不会造成终端的负担。且因为不阻塞监听线程就大大降低了资源的开销而且不会妨碍界面的响应使程序的操作更加友好。根据市场调查一般的通信会集中在使用方早上开始营业和晚上结束营两个比较集中的时间段内这就需要监听线程有良好的并发处理能力以应对可能发生的短时间内集中通信的问题。前置网关服务程序专门为此建立了一个简单的线程池来处理连接的建立和管理连接的排队。线程池包括一个监视线程一个线程队列和一个线程计数器监视线程用来巡视线程池中的线程状态线程队列用来存放线程和进行线程排队线程计数器用来标示当前的己用线程数量。线程池建立后会设置一个规定最高线程数比如。这样当线程计数器达到后将不再允许建立新的线程。表现在连接管理上就是当已经有个连接处于存活状态时新的连接将不被允许建立。直到有当某个线程执行完毕后释放了对应的那部分资源后新的连接才被允许建立。如果一个线程长期没有反应或者发生网络连接超时问题那么这个线程的资源会被监视线程强制释放。监视线程工作流程见下图:第章前置网关子系统的实现最后图(监视线程工作流程这样不仅解决了多线程开发中常见的线程过多导致资源耗尽的问题同时也使程序具有了一定的阻挡外部网络攻击的功能。网关程序和内部服务器之间的连接使用频率很高所以向内的连接采用长连接的方式进行报文的传输。所谓长连接是一种特殊的TCP短连接方式。当连接建立后要保持连接的持续存在即在每次通信后并不中断连接。因为TCP每次连接的三次握手是很大的系源开销长连接的优势就在于减少这些开销。为了维持长连接我采用了发送“心跳包’’的方式来确定服务器在线和连接的通畅。“心跳包”是一种特殊的报文因为其发送方式就好像心脏跳动一样有固定的时间间隔。“心跳包"由很短的几个字节构成除了验证网络连接仍然存在外没有其他任何意义。在每次通信结束后的规定时间内如果没有新第章前置网关子系统的实现的通信则发送一次“心跳包”到连接的另一端并等待“心跳”回应。如果在指定的时间内收到回应则认为连接仍然存在并重复这一过程直到新的数据包发送否则则认为连接超时。当连判断为连接超时或者中断后程序会试图重新建立到这个服务器的连接。如果重连失败网关程序会记录并报警等待管理人员来确认失败原因和进行维护操作。在进行报文的转发时采用报文类作为数据包的封装对象。报文的各个域作为类的成员解包和封包动作作为类的方法。每次接收到一个报文就建立一个报文类的实例并执行解包方法。然后根据传入的类型将数据通过相应的连接发送到指定的服务器并等待回应。收到回应后将数据进行整合并执行封包方法。然后将包返回给终端。当收到结束报文时断开和终端的连接。由于报文的回应可能有延迟所以报文中需要包含原始报文的部分信息作为唯一依据。对于文件的转发和报文转发类似。所不同的是程序中定义了专门的文件操作类负责文件的读写。将报文中的数据解析并按预定格式写入到指定文件中然后保存到指定目录。每次收到一条报文就执行一次文件类的方法并根据执行结果迅速做出返回。当收到结束报文后关闭连接释放占用的YO资源。网关程序的各个功能都是在多线程模式下进行的这使得各个操作相互独立增强了程序响应能力不会因为处理某个事件而独占资源不能响应其他事件。但同样也带来一定的问题比如数据同步。所以在进行文件读写等YO操作时会强制使用synclock锁将文件资源锁定直到读写完成后再解锁。而报文转发因为相对独立性好一般并不需要使用synclokc功能锁定。(基于WEB的系统数据管理功能的实现原有系统本身带有一个C,S的系统管理工具但该工具的不能提供对新模块的管理而且由于需要安装客户端也不方便管理人员在其他终端PC上进行管理工作。这就需要开发一个简单实用的管理工具来取代原有的工具。((管理功能的描述本管理程序主要实现了对各个模块的参数进行设置。如管理人员名单的控制权限控制制卡、发卡功能的控制卡类型消费充值权限额度等黑第章前置l碉夭子系统的实现名单白名单的手动操作功能、数据报表的查询和手工执行等功能。同时管理程序还提供了终端管理功能如:终端状态显示――是否完成数据采集和参数下载等信息的显示终端初始化管理――将终端内部参数初始化后与分配的公司编号进行关联:终端状念控制――管理终端的状态如启用、备用、保修等。WEB管理程序实现功能如图(所示:图(web管理程序功能WEB程序不需要安装客户端只要客户机可以联网就可以操作。全部程序由服务器解析这样就忽略了客户机的系统差异。另外如果需要可以使用VPDN等方式建立虚拟局域网管理员就可以从外网访问管理工具进行远程管理及时处理问题进行维护操作。((WEB管理程序的实现(IC卡管理第章前置网关于系统的实现IC卡管理部分主要是接管了原有系统的管理工具功能。原有系统将参数存BLACK表中存放黑名单信息黑卡卡号储在数据库中相应表中如CARD挂失时间等CARDn个E表存放卡类型相关信息权限、额度等CARDINFO表存放制卡相关信息卡号制卡时间卡类型序号等。新的WEB管理工具只是将这些功能都集成在WEB程序中。管理员不需要打开多个程序逐个设置参数而只要打开管理页面将参数依次写入即可。对原有模块的兼容是本部分的重点。在开发中尽量使用原来的工作方式和管理命令进行操作。除非必须否则尽量不改变原有程序的逻辑结构使其兼容。(管理员设置管理员管理是最容易实现一个部分。原有工具已经做的很完善本次开发只需要将原有程序转换到新的WEB程序中即可。界面上尽量贴近原有管理工具使客户可以平稳过度到新的系统中而不需要过多的重新学习和熟悉。(终端管理本模块是新增开发的。为了方便客户管理和终端和及时了解终端的状态尤其是通信状态和数据采集以及参数下载的情况这个模块被加入到本系统中。采用WEB的特点开发通过多种状态图标可以清晰的将终端的当前状态及时的占先给管理人员供其参考。通信状态是当每次脱机终端在通信后将当次通信的信息保留在数据库中的TERMINALSTATUS表中并定期刷新WEB页面读取最新的状态信息。因为涉及到数据采集的完整性和参数下载的及时性一般如果发现某个终端一段时间比如超过天没有进行通信管理程序会通知中心管理人员追查该终端没有进行通信的原因并做出相应处理。TERMINALSTATUS表结构如下表所示TERMINAL表(STATUS表结构示例字段名含义terminalID终端编号last―(time最后一次连接时间lastIP最后一次连接IPlast―(complete最后一次连接完成内容第章前置网芙子系统的实现statu终端状态sjDPID最后一次连接时的操作员terminal―(VER最后连接时终端的程序版本如果lastcomplete中不包含执行完毕则认为终端在通信过程中出现异常。当查看终端详情时会根据定义解读lastetelpmoc次一上端终告报串符字中连接时完成的内容。statusID表示该终端的启用状态如启用备用保修维修中等。terminalVER字段用来记录终端的版本变化如果发现问题这个编号可以作为一个参考依据。联机终端同样会记录通信状态但因为只需要做数据上传和接收交易是否成功标志所以不用关心参数的下载状念和数据采集状态。因此只需要记录通信次数即可。但如果某终端很久没有进行通信如超过天则程序会通知管理员需要注意该终端的状态。终端初始化管理。这个功能主要是在终端通过专用程序进行参数初始化后INFO进行人工的终端号与公司号的绑定工作。这一绑定需要操作TERMINAL表来实现。表(TERMINALINF表结构示例字段名含义terminal――ID终端编号company(ID公司编号bindingtime绑定时间终端状态管理。本功能主要用来设置终端的状态如启用、备用、送修等。如果终端的状态为启用那么在终端状态显示功能中会计算终端最后一次连接到当前的时间如果超过天会提示管理员人去确认终端是否工作正常。页面的右边会列出备用的终端编号列表、报修的终端编号歹IJ表和维修中的终端编号列表方便管理人员确认终端的工作情况合理安排终端的使用。第章一体机系统软件和应用软f:的实现第章一体机系统软件和应用软件的实现(一体机终端概述一体机终端的主要功能是对非接触IC卡的读写操作和数据的存储。主要实现读卡内信息、查询电子钱包余额、月票信息及其他卡内信息不同的城市对信息规划不同完成充值、消费功能等。一体机终端程序使用C语言编写编译后的文件很小方便下载到一体机的存储芯片中。因为一体机的硬件机能限制需要特别注意变量的使用和资源释放变量尽量做到物尽其用减少不必要的内存开销。使用后立即释放减少内存占用降低出错的可能性。本章部分源代码详见附录B(一体机软件实现的功能一体机软件实现了个主要功能分别为:卡操作通信终端管理和数据存储。其中通信部分已经在第四章介绍本章主要介绍一体机终端软件工作流程。((卡操作读卡售卡充值年检小额消费。读卡操作可以读取卡内信息显示用户卡芯片号卡内剩余金额。如果带有月票区还能显示月票剩余次数已经充值的月份等。售卡是将卡片初始化过程在一体机上实现。年检主要针对月票卡学生卡老人卡员工卡等需要校验身份的卡种。定期检验持卡人的身份如学生卡持卡人是已经毕业来确认该卡是否有效。第章,体机系统软什和戍j软件的实现图(卡操作模块结构图((通信通信部分包括四个功能模块:终端认证、时间校对、参数下载、数据采集在占可O图(通信模块结构图((终端管理包括参数设置、数据结算、考勤管理、票据打印等。参数管理可以通过本机设置也可以通过专用程序在PC上设置后下载到一体机中。数据结算功能实现的是在一体机上进行数据统计然后通过一体机屏幕显示出来。也可以根据需要将统计数据通过打印功能打印出来。考勤管理功能主要实现了一体机操作员考勤的管理。操作员上班时需要打第章一体机系统软什和府刖软什的实现卡确认上班相当于一个时I’日J戳。这样是为了方便统计该操作员在上班过程中一体机的收支状况。图(终端管理模块结构图((数据存储脱机POS机的数据存储在本地FLASH芯片中所有参数都下载在本地。数据定期或者必要时上传到数据中心。联机POS机的数据同样存储在FLASH芯片中但数据的上传为实时的消费权限等也交由中心判断。存储的数据只作为对账凭据。FLASH的存储空间有限一般为M到M存储的数据量不会很大。由于设备选用的FLASH芯片的读写操作并不提供按字节操作而是按块操作每块的大小为字节。但为了灵活使用FLASH空间实现按字节操作必须对底层的函数进行封装封装后的函数可以对FLASH按字节进行操作。因为存储记录的条数有限所以采用循环使用的方法。从FLASH地址操作。当到达FLASH结尾时地址指针重新指向Oxl。为了保证数据不会被随便覆盖在数据记录的结尾增加上传标志。循环覆盖的时候会检查标志位。当将被覆盖部分的数据没有上传时会强制要求上传否则不能继续进行其他操作。这一检查在每次开机及完成充值、消费操作并记录完成后进行。记录结构如图(所示。第章一体机系统软件和应用软件的实现记录编号记录正文上传标志记录:f嫩图(记录结构(开机认证流程(通电开机后先扫描FLASH存储情况确定存储指针。并扫描当前时间日期看是否因为掉电而造成时间丢失。判断依据为:时间是否返回出场日期。时间是否早于记录最后一条的时间。(检查是否插入操作员卡。如果没有插入则提示要求插入操作员卡。直到检测到入操作员卡后进入下一步。(要求输入操作员密码。如果错误则重复要求输入。直到输入正确进入下一步。如果连续多次输入错误会锁死操作员卡。被锁的操作员卡需要到中心进行解锁。(检查是否有需要上传的记录。如果有则先上传记录。(进行参数下载获得最新的用户卡黑名单、操作员卡黑名单、卡类型列表等参数。如果是用作小额消费用途还可能需要下载商户信息。(将常用参数读取到内存方便使用。(开机认证完成。注:如果是联机模式则需要在第步后进行签到不需要下载参数。开机认证流程图如图(所示。第章一体机系统软件和应刚软什的实现Y图(开机认证流程图第章一体机系统软什和应用软什的实现(售卡流程一体机售卡流程如下:(读取卡片信息包括卡芯片号、卡类型、城市代码、行业代码、售卡标志、充值时间、当前余额等信息(判断卡片是否已经售出(检查是否可以进行用户所需卡类型的售卡。脱机点只能售不记名卡(输入初始金额(改写卡标志同时进行充值(完成操作写记录(售卡完毕。图(为售卡流程图。第章一体机系统软件和应用软什的实现输入初始金额r踽’卡标志充入初始金额r写记录LI售卡完毕图(售卡流程图第章一体机系统软什和应用软什的实现(充值流程一体机充值流程如下:(读卡(判断该卡是否在充值黑名单中(根据卡类型判断是客票充值还是月票充值(输入欲充金额(根据卡充值类型写卡(完成充值写记录(充值成功。月票充值相对繁琐因为还要判断充值月份。一些城市的规则特殊比如有些城市可以任意月份充值而有些城市只能连续月份充值等。充值流程图如图(所示。第章一体机系统软什和戍川软件的实现Y图(充值流程图(消费流程消费流程如下:(读卡(判断卡号是否在消费黑名单中(输入准备消费金额判断卡内余额是否可以消费(扣款第章一体机系统软什和应用软件的实现(完成扣款写记录(消费流程结束。消费流程图如图(所示。Y扣款rll写记录l捎贾肭图(小额消费流程第章总结与展望第章总结与展望(总结本系统根据客户的需求在原有IC卡中心管理系统的基础上增加新的模块改进了部分原有模块实现了一卡通售充,消费系统的功能。本文主要介绍了系统中前置网关子系统终端子系统和通信子系统三部分功能关键技术的实现。新增的前置网关子系统实现了内外网数据的隔离增强系统的安全性。重新制订了通信协议和报文格式完善通信子系统的功能并统一各模块通信接口。增加了一体机终端相关部分修改联机终端的通讯方式使得系统的终端选择搭配更加灵活能够适应不同客户的需求。(展望随着一卡通系统的发展对系统的需求不断的提高。经过市场分析和与客户沟通归纳出以下几点近期需求:(GPS定位系统和地图模块(基于无线网络的远程输出采集(远程客流统计(一卡通在线充值,消费功能。其中部分功能已经在独立模块中实现。如何完全实现这些功能并与本系统集成是下一步要开展的工作重点。致谢致谢首先感谢我的导师刘依老师对我的指导。导师对我的谆谆教诲和热情关怀将永远铭记在我的心中。由于是在职攻读硕士学位我在论文的撰写上遇到了很多困难是她给予我的鼓励和指点帮助我完成这篇论文。感谢我的校外导师于泓感谢他在项目开发中给了我很多具体指导。在他的指导下我顺利的完成了项目的开发同时积累了很多开发经验。感谢公司的领导同事各位前辈。在他们的支持下我的项目才能顺利进行。感谢张经理的信任让我一个年轻员工参与设计和开发这一项目并在工作上给予我很大的帮助。感谢同济大学软件学院的各位老师感谢他们在我研究生学习阶段给予我的关心和帮助。他们教授的课程为我的项目研究开发打下了理论基础。感谢各位同级的研究生学员没有你们的帮助我不可能顺利完成学业。感谢天津艺术进修学院的田院长王老师张老师和其他各位老师为我们提供了难得的学习机会和良好的学习环境。最后感谢我的父母为了让我完成学业他们给予我生活和经济上的大力支持。参考文献参考文献康悦(“一卡通”真的畅通吗――北京市政交通一卡通使用情况及公交满意度调查(数据(年第期徐亚军(公交一卡通系统存在的问题及发展方向(金卡工程(年第期胡新光(中国城市公共交通收费系统一卡通技术与实践(金卡工程(年第期严雄武、梁楚樵(MIFARE非接触式IC卡读卡器的设计构架研究(武汉理工大学学报(年第期孙连坤、万振凯(基于MFRC的非接触读卡器设计(仪器仪表用户(年第期李扬、李秉智(非接触IC卡读卡器的开发研究(计算机工程与应用(年第期姚振锋、张志鸿(一种基于类IS通信协议的数据交换格式(安阳工学院学报(年l期马长青、苏庆堂、刘贤喜(用WinSock开发C,S间的网络

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/52

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利