基于Linux串口的非接触式IC卡开发应用
来源:中国一卡通网 作者:姜远 高岭 杨建锋 发布时间:2008-07-09 09:34:22 字体:[大 中 小]
关键字:linux 串口通信 非接触式ic卡 ic卡
摘 要:在Linux操作系统平台下的串口通信基础上,研究了如何通过编写程序实现在Linux系统下,应用字符设备开发IC卡设备驱动模块。基于Linttx串口编程和非接触式IC卡应用设计并实现了一个串口通讯过程,并以相应的程序实例加以说明。有效利用了非接触式IC卡的特点,提高了读写卡的速度。
3.2 模块初始化函数的实现
模块初始化函数是模块开发过程中必不可少的处理函数,用于实现设备的初始化,中断初始化及处理设备等。
在上面类中首先应用GetCardData(char*,CardData&)实现了卡数据的初始化;然后定义了队列数据,再进行了上机处理以及下机处理,故障恢复处理;最后实现了恢复故障处理。
3.3 中断处理
模块采用了定时器中断,在每个定时器中断发生时对刷卡状况进行检测,如果在天线范围内检测到刷卡,根据使用标记进行判断,未使用则进行读卡操作;使用中则进行写卡操作,同时更新IC卡的状态数据。
程序中的中断处理采用了信号量机制来实现中断的后续处理,其处理流程为:
3.4 注销模块处理
用于模块卸载时进行资源的释放,在关闭串口前,需要通过tcsetattr(fd,TCSANOW,&oldtio);将串口参数恢复为原来的设置,最后通过close系统调用关闭串口,如下所述:
3.5 设备的读、写和配置函数
主要是通过实现IC卡的各种操作,在先前的类ICCard中已经介绍,根据Mirare 1 IC的通讯原理,实现卡的初始化操作。
综上所述,卡驱动模块的基本实现原理是:当有刷卡操作发生时,由使用标记引发中断或进行读卡操作;或进行写卡操作,同时进行相应数据处理。从而实现有卡操作发生时马上进行卡数据的更新[ 。
4 模块的编译调试
编写相应的makefile文件:
chown root$(BINDIR)/pubacct
chown u+s$(BINDIR)/pubacct
clean:
rm-f*.o pubaect
执行几个make命令,便可以实现驱动模块的动态编译。
5 结束语
文中笔者创新点:介绍了非接触式IC卡的概况和发展前景。有助于有一定IC卡经验、技术及具有一定的计算机软缎件技术的研发者设计出诸多应用场合的产品。这里只是截取了IC卡应用的一个方向,以及简单的设计开发。在其它的高级应用中还可以加入密钥保护等措施。
基金项目:陕西省自然科学基金项目(2005f36)
作者简介;姜远(1978--),男,陕西西安人,西北大学信息学院,硕士研究生,研究方向 为网络管理;高岭,教授,西北大学信息学院,研究方向为网络测量和网络管理。杨建锋,西北大学现代技术教育中心
参考文献:
[1] 刘峥嵘,张智超,许振山.嵌入式Linux应用开发详解[M].北京:机械工业出版社,2005.
[2] 尤晋元.UNIX环境高级编程[M].北京:机械工业出版社,2004.
[3] Sweet M R.Se蒯Programing Guide for FOSIX Operating Systems[M].[s.I.]:O’Reilly& Associates,2002.
[4] BaumannPH.SerialProgrammingHOWTO[M].[S.1.]:O’Reiuy& Associates,20o0.
[5] 龙飞,李晓帆,蔡志开,等.一个利用多线程及重叠I/O实现的串口通信类[J].微机发展,2004,14(3):51—53.
新闻投稿合作邮箱:yktchina-admin@163.com 字体[大 中 小] [收藏] [进入论坛]