3 软件设计
3.1 软件总体结构
该读写器的软件部分主要采用C语言开发,启动过程中的低级初始化部分用汇编语言编写。读写器软件设计采用模块化的编程思想,系统软件包括主程序、射频卡识别及读写子模块、GPRS数据传输子模块以及USB、RS232/RS422多接口的协同工作机制。软件总体结构流程如图4所示。
总体软件主要负责各个模块的控制,并协调各个模块之间的工作。在系统上电后,首先负责对系统各个硬件接口进行初始化,然后进入正常工作循环。在正常工作循环中,可以实时感应射频卡,对射频卡进行读写相关操作;GPRS采用串口中断方式响应远程监控主机,向远程监控主机发送设备信息;而与现场设备终端通信的方式可以有USB、RS232和RS422方式。这3种方式优先采用USB方式,然后采用RS232或RS422方式,很好地处理了多接口之间的协同问题。
为了实时地实现各项功能,把多个任务合理安排到前后台工作是设计的重点。一方面采用模块化和结构化的编程思想,使得读写器能够将各程序合理地组织起来,方便程序的调试、修改和维护;另一方面采用高效的中断机制,串口中断实时接收来自设备终端或监控主机的命令,定时器中断实现读写器工作模式的切换,当外界无卡时切换到空闲模式可以有效地降低读写器的功耗。
3.2 射频卡读写程序
微处理器通过对MF RC531相关寄存器的控制实现对射频卡的读写等各种操作。对射频卡的操作分为寻卡、防冲突、选卡、认证、读块、写块、增值、减值、挂起等,其操作的流程如图5所示。
当射频卡进入读写器的天线感应范围(10 cm内)并经过一段时间的延迟,射频卡上电复位,接收MF RC531发送的请求应答指令,返回卡的类型号。当有多张卡同时接近读卡器时,MF RC531随即发送防冲突指令,系统进入防冲突循环中,选中一张卡,此时被选中的卡进入激活状态,随后卡与MF RC531之间进行3次相互认证,认证通过方可进行读、写、加、减等交易操作。操作完成后,MF RC531发出停卡指令,射频卡从激活状态返回停止状态,一次交易结束。在对卡内数据进行读写操作之前,需要进行从请求应答到相互认证的过程,如果这个过程器件出现错误,将导致读写操作无法进行。