2 .2 .1 数据采集处理
数据采集处理是一个进程, 它包括主线程和辅线程。主线程完成电子标签卡信息的读取、写入、实时显示及查询;辅线程实现一个时钟以提供用户当前时间, 并定时对电池的电量进行检测和动态显示, 在电量过低时发出警告。
应用程序用MAIL 命令方式完成电子标签卡的读写。该进程首先初始化屏幕, 然后等待按键中断, 当有键按下时, 根据键值执行相应的工作;当指定时间内没有键按下, 系统则进入休眠状态, 从而达到省电的目的。程序流程图如图6。
当成功采集到标签卡信息后, 应用程序将卡信息(包括卡号、卡状态、用户数据及当前时间)通过OLED 显示屏提供给用户,并写入一个文件进行记录。由于文件传输进程会将该文件传输到上位机, 所以当读写文件时要将文件上锁。Linux 提供了文件锁以防止不同进程同时访问同一个文 件。本文使用flock ( )函数对文件上锁和解锁。
由于OLED 是图形点阵式显示屏, 而且Flash 容量有限,所以不可能直接使用汉字字库。系统预先提取所有用到的汉字、数字及字母的点阵数据, 然后建立自己的字库文件,从而使应用程序可以对汉字、数字及字母进行显示。
2 .2 .2 文件传输
文件传输是一个进程, 完成卡信息的上传及其他数据的下载。与上位机通信采用Clinet/Server 模型。该进程实质上是一个服务器端(本系统) 的应用程序, 它循环等待客户端( 上位机) 的连接请求。当请求到达时, 首先判断请求来自哪个接口(USB 或者红外接口),然后根据请求的类型执行相应的上传或下载。考虑到实际应用中可能会使用多台手持式阅读器, 为了方便上位机对信息的管理,规定文件名由手持式阅读器编号和文件上传序号组成, 程序在上传文件时自动将其编号及上传序号加入文件名。该进程的流程
如图7。
3 系统电源管理
本系统使用锂电池为系统供电。为了延长电池的续航能力, 将应用程序设计为三种运行状态:上电空闲状态、程序执行状态及系统睡眠状态。当用户不进行任何操作时, 系统将进入睡眠状态以达到省电目的。系统的睡眠是基于微处理器的电源管理功能实现的, 进入睡眠的步骤如下:
(1)关闭所有外设;
(2)保存当前系统状态;
(3)使SDRAM 进入自刷新模式;
(4)设置唤醒事件, 使微处理器进入睡眠状态。
当唤醒事件发生时, 如有键按下, 则执行系统复位。过程如下:
(1)恢复部分微处理器的寄存器;
(2)唤醒外部设备, 系统开始运行。
本文介绍了在AT91RM9200 高性能ARM 芯片上运行嵌入式Linux, 结合TagMaster AB公司功能强大的射频识别模块S1510 实现便携式标签卡的信息采集和处理。系统使用方便、灵活。另外, 为克服LCD低温无法工作、亮度不够及耗电大的缺点, 采用OLED 显示模块使系统可以在恶劣环境下应用, 并增加了电池的续航能力; 为使系统与上位机通信方便,采用了支持热插拔的USB 接口。