基于CRC报文缓存技术的IC水卡预付费终端设计.docVIP

  • 11
  • 0
  • 约3.5千字
  • 约 7页
  • 2018-08-18 发布于湖北
  • 举报

基于CRC报文缓存技术的IC水卡预付费终端设计.doc

基于CRC报文缓存技术的IC水卡预付费终端设计   摘 要:以STM32为控制核心,IC卡为预付费载体,文章设计了IC水卡预付费终端,其中IC卡模块完成IC卡的读写,GPRS模块基于Socket与消息服务器完成数据传输,消息服务器基于Web服务完成了水务数据库业务流程。为了保障系统在恶劣网络环境的容错性能,文章提出基于CRC报文缓存技术的解决方案,很好地处理了网络异常下刷卡未同步数据库的问题。   关键词:GPRS; CRC报文;缓存技术   当前,在“智慧城市”建设大背景下,智慧水务的构想应运而生,而收费业务的信息化、智能化是实现智慧水务的第一止,目前国内出现了很多IC水卡预付费终端,然而这些终端大都采用CAN总线或采用485总线与服务器通信,由于分布零散等因素,造成系统的建设投资大、运营费用高、监控维护不及时等缺点。而小部分GPRS无线传输预付费终端,也会出现因外部因素干扰导致数据传输不稳定。针对这种情况,本文提出采用GPRS无线网络与微信支付、IC卡读写相结合的方式对自来水公司收费业务进行智能化改造的方案,该方案投资小、维护成本低,特别适合大面积实施。同时提出CRC报文缓存技术,显著改善了网络异常下刷卡未同步数据库的问题。   1 IC水卡预付费终端硬件设计   IC水卡预付费终端工作流程大致如下:首先用户通过微信关注自来水公司的公众号,输入卡号、充值金额等信息进行预付费。用户收到预付费成功的消息之后将IC水卡插入预付费终端完成充值,交易完成之后预付费终端语音播报同时屏幕显示充值量、充值结果等信息。根据预付费终端的业务特点将硬件分为两大部分:主板部分和外设部分。外设部分主要由处理器通过串口驱动,主要有语音显示模块、屏幕显示模块,负责用户刷卡过程中的语音提示和屏幕展示,提升了人机交互体验。主板部分主要用于读取用户IC水卡信息并上传以及解析服务器返回的报文最终写卡。   设计目的主要实现用户预付费完成之后刷卡充值时,预付费刷卡终端读取卡内用户号、余额(量)等信息通过GPRS上传服务器,服务器下传充值金额(量)等信息,最终完成充值。因此按功能分为读写卡模块和GPRS子模块。读写卡模块通过端口与预付费刷卡终端的主控制器相连,GPRS模块则为串口。这种设计方案硬件实现简单、易于调试,另外为软件的编写也带来很大的便利。这一切都归功于基于ARM Cortex-M3内核STM32系列单片机的广泛应用。此外预付费刷卡终端还需具有存储模块和供电模块,整体结构如图1所示。   2 lC水卡预付费终端软件设计   2.1 软件概述   软件主要采用C语言在Keil平台下编写,除完成对STM32及各个子模块的初始化之外主要编写与服务器之间的通信程序,读T5557卡时的曼彻斯特解码程序以及模拟IIC读写24卡程序。   预付费终端开机后初始化流程如图2所示。终端上电后首先进行中断优先级、各端口串口的初始化,然后读取存储模块中的服务器IP、机器号等信息,接着M6311上电、初始化,向服务器发送心跳包,20 s内收到服务器返回报文则初始化成功,5次未收到则初始化失败,进入错误处理程序。初始化完成后进入自检程序如图3所示:系统通过对存储模块、语音模块显示模块、GPRS信号强度等检测后语音播报自检成功,若某一模块故障则退出进入错误处理程序。   此外,为了解决在外部电磁环境恶劣的情况下,GPRS无线网络数据传输过程中出现的误码率升高和网络中断的问题。为此设计了基于循环冗余码校验(Cyclic RedundancyCheck,CRC)的报文缓存技术,良好地解决了这一问题。   2.2 CRC报文缓存技术的实现   2.2.1 CRC报文设计   CRC算法是计算机网络通信中常用的差错检测控制方法,其主要目的是减少数据通信线路的传输错误。其原理是:在发送端将发送的数据追加CRC校验码,CRC校验码是由原数据与选取的多项式数学运算所得,追加CRC校验码的原数据发送到接收端后,接收端检验原数据和CRC校验码的数学关系是否正确,正确则数据传输无误。CRC算法的关键是多项式的选取,本系统选用了国际电报电话咨询委员会(Comite Consultatif International Telephoniqueet Telegraphique,CCITT)推荐的CRC16(多项式是G(X)=X16+X12+X5+1)作为报文的多项式,其对于大于16位的突发性错误检测出的概率为99.9%,非常适用于抗干扰能力弱的GPRS网络。   参照自来水公司收费业务逻辑在预付费终端与服务器之间设计了如表1所示的CRC报文。   字段?要说明:报头表示前两个字节为固定,第3个字节为应答字,其中Ox00为发送端报文,Oxll表示应答成功报文,Oxl0为应答失

文档评论(0)

1亿VIP精品文档

相关文档