信息化 频道

Linux的便携式RFID信息采集处理系统

    2 .2 应用程序设计

    Linux 是多任务系统, 支持多线程及多进程。多线程的优点是线程比进程小, 可以使应用更轻便, 线程间通信方便; 缺点是所有线程使用同一个地址空间, 如果一个线程出现问题, 整个系统将受影响; 而进程各自占有一份内存空间, 可以增强系统的稳定性, 但是多进程增加了系统开销, 进程间通信复杂。为此, 根据实际情况,考虑到系统稳定性, 本系统采取两者相结合的方式分别完成数据采集处理及文件传输功能。

    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 接口。

0
相关文章