欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于Linux操作系统的射频识别安检设计方案.docx

    • 资源ID:73271960       资源大小:19.11KB        全文页数:10页
    • 资源格式: DOCX        下载积分:13.8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要13.8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Linux操作系统的射频识别安检设计方案.docx

    基于Linux操作系统的射频识别安检设计方案引言射频识别(RFID)是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无需人工干预,可工作于各种恶劣环境下。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。非接触IC卡是目前RFID系统中最常用的一种电子标签,它诞生于20世纪90年代初,是世界上最近几年发展起来的一项新技术,它成功地将射频识技术和IC卡技术结合起来,解决了无源和免接触这一难题,是电子器件领域的一大突破。由于存在着磁卡和接触式IC卡不可比拟的优点,使之一经问世,便立即引起广泛的关注,并以惊人的速度得到推广应用,如我国的第二代公民身份证、公交卡、ETC免停车付费卡等。可以说RFID技术越来越多地应用到我国身份安检、质量安检、车辆安检、执法安检等诸多安检系统中。由于安检系统中往往涉及大量重要数据的读取、通信以及实时更新,因此数据库技术的引入必不可少。在操作系统上,本文选择了Linux操作系统,相比Windows,Linux更安全、更可靠,与其他操作系统相比有着许多独特的优势,更加适合用作嵌入式操作系统。1系统结构介绍RFID安检系统主要包括RFID前段读写器、嵌入式Linux终端两大部分。其中嵌入式终端的CPU采用ARM9内核,内核执行速率达几百兆赫兹,可以很好地满足RFID数据的读取和存储。由于嵌入式系统一般是一个经过裁剪、资源极其有限的系统,因此对于安检系统中涉及到的大量数据只能存取到外围存储设备中,本方案中的SD卡模块正是用来存储数据库的,当RFID读写器读取到指定数据,便在SD卡中的相关数据库文件中查询,并根据查询结果做出相关反应并及时更新本地数据库。2Linux下串口的开发在Linux下对串口进行配置、打开、读写等一系列的操作其使用方式与文件操作一样,区别在于串口是一个终端设备1。Linux中的串口设备文件存放于/dev目录下,其中串口1、串口2一般对应设备名依次为“/dev/ttyS0、“/dev/ttyS1。在使用串口之前必须设置相关配置,包括波特率、数据位、校验位、停止位等。串口设置由下面结构体实现:620)this.style.width=620;"border=0alt=基于Linux操作系统的射频识别安检设计方案src="技术2021/4cevqr0laog2021.jpg">按照串口配置流程,对termios结构体设置相关参数,当串口按自己的设置要求配置成功后,即可将串口当做普通I/O文件,使用read和write函数对串口进行读取。3sqlite3数据库的应用开发sqlite3数据库是一种嵌入式数据库,其目标是尽量简单,因此抛弃了传统企业级数据库的种种复杂特性,只实现对于数据库而言必备的功能。尽管简单性是sqlite3追求的首要目标,但是其功能和性能都非常出色,具有支持SQL92标准、所有数据存放到单独的文件中支持的最大文件可达2TB、数据库可以在不同字节的机器之间共享、体积小、系统开销小、检索效率高、支持多种计算机语言、源码开放,并且可以用于任何合法用途等特性。3.1sqlite3数据库的移植sqlite3数据库的移植过程如下所述:(1)首先从sqlite官网上下载最新的sqlite3源码包;(2)解压源码包,并进入解压目录:tar-zxvfsqlite-3.6.23.1.tar.gzcdsqlite-3.6.23.1(3)配置Configure脚本,使用相关选项生成编译文件Makefile文件:./configure-enable-share-prefix=./sqlite-3.6.23.1/result-host=arm-linux选项-enable-share指定使用Linux的共享库选项-prefix指定了安装目录为。/sqlite-3.6.23.1/result选项-host指定了编译环境为目标机为arm的交叉编译环境(4)交叉编译,生成嵌入式终端下数据库的管理程序和库文件,最终在result目录下得到数据库管理程序sqlite3(相当于Windows下Access程序),提供编程所需的API的动态库libsqlite3.so.0.8.6,编程所需的头文件sqlite3ext.hsqlite3.h。交叉编译的命令如下:MakeMakeinstall(5)将数据库管理程序sqlite3、提供编程所需的API的动态库libsqlite3.so.0.8.6及其1个软链接拷贝到开发板根文件系统相应位置,分别在嵌入式终端的/usr/bin和/usr/lib这两个目录下,命令如下:Cpresult/bin/sqlite3/arm-Linux/usr/binCplresult/lib/libsqlite3.so*/arm-linux/usr/lib(6)为了能在开发机上编译,调用了sqlite3数据库的API的应用程序,需要将动态库libsqlite3.so.0.8.6及其2个软链接、2个头文件拷贝到交叉编译工具链所在目录的适当位置,至此sqlite3数据库的移植和开发环境的配置已完成。只要输入SQL语言便可以进行相关操作。3.2Linux下sqlite3的C语言开发sqlite3里最常用到的是sqlite3*类型。从数据库打开时开始,sqlite3就要为这个类型准备好内存,直到数据库关闭,整个过程都需要用到这个类型。数据库打开时起,这个类型的变量就代表了所要操作的数据库。(1)打开数据库API接口函数intsqlite3_open(文件名,sqlite3*);用这个函数开始数据库操作。需要传入两个参数,其中之一是数据库文件名,例如:/home/test.db文件名不需要一定存在,如果此文件不存在,sqlite3会自动建立;如果存在,就尝试把它当数据库文件打开。sqlite3*参数即前面提到的关键数据结构。函数返回值表示操作是否正确,如果是SQLITE_OK则表示操作正常。相关的返回值sqlite3定义了一些宏,具体这些宏的含义可以参考sqlite3.h文件。(2)关闭数据库API接口函数intsqlite3_close(sqlite3*);如果前面用sqlite3_open开启了一个数据库,结尾时不要忘了用这个函数关闭数据库。(3)执行SQL语句API接口由于嵌入式sqlite3数据库支持SQL语言,因而调用C中相关执行函数就如同在终端下操作数据库一样方面快捷,下面是具体的API函数:这就是执行一条sql语句的函数。Intsqlite3_exec(sqlite3*db,constchar*sql,sqlite3_callback,Void*,char*errmsg);参数1是调用打开数据库函数sqlite3_open()打开的数据库对象。参数2是一条待执行的SQL语句,其语法格式同标准SQL语言规范一样,如创建table时插入的记录如下:createtablestudent(idvarchar(10)primarykey,agesmallint);此语句创建了名为student的表,表中定义了id(学号)和年纪两个变量,其中id是主键。Insertintostudentvalues(12345678,21);此语句向student表中插入一组数据(12345678,21),其中学号为12345678,学生年龄为21。对于数据库的其他操作,如数据库更新、修改、查找等用法同上。参数3sqlite3_callback是自定义的回调函数,对执行结果的每一行都执行一次这个函数。参数4void*是调用者所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里,如果不需要传递指针给回调函数,可以填NULL。参数5char*errmsg是错误信息。sqlite3里面有很多固定的错误信息。执行sqlite3_exec之后,如果执行失败则可以查阅这个指针,即可知道执行过程中错误发生的位置。3.3串口同sqlite3通信测试与分析为了验证sqlite3数据库在嵌入式Linux3-4终端下的执行效率和稳定性,为此做了一个简单的测试实验:通过上位机程序向嵌入式Linux终端的串口定时发送字符串;嵌入式Linux终端接收到字符串便立即写入到下位机的数据库中。自后查看数据中的数据,看看有没有遗漏和误码。上位机的程序使用VC6.0开发,整个程序界面只设了一个按键,按下按键,上位机就向嵌入式Linux终端不停地发送字符串数据,按键响应程序设计如下:620)this.style.width=620;"border=0alt=基于Linux操作系统的射频识别安检设计方案src="技术2021/z04p4xmwzpt2021.jpg">可见程序是个定时100ms便发送一条字符串的循环,而且发送的每一条字符串事先通过str.Format格式化为固定长度,本例中是11B。按下按键后发送的第一条字符串为:“第1条记录,每发送一条字符串里面的数字加“1,这样写到数据库中就可以很清楚地查看有没有遗漏和误码,而且可以通过修改Sleep函数的延时参数检测出嵌入式Linux终端下sqlite3数据库操作的速度。下位机嵌入式Linux终端的程序设计为:先创建一个数据库文件test.db,接着就是一个死循环,串口不停地查找有没有数据写入,当检测到数据时,便写入到test.db中,若写入有误,则立即跳出循环,终止程序。620)this.style.width=620;"border=0alt=基于Linux操作系统的射频识别安检设计方案src="技术2021/xtqgowl4stv2021.jpg">4结语整个测试根据上位机串口发送的频率不同做了多组实验,每组实验写入1000个数据,最终结果分析如下:上位机在定时80ms左右或大于80ms的情况下发送数据时,数据库写入的误码率为零;当定时时间小于80ms时,随着定时时间变小误码率会越来越高。通过数据分析可知原因有以下几点:一是数据库本身写入需用时几十毫秒,二是SD卡并非高速读写设备,当数据还未完全写入数据库时若有新数据发过来,则下次读写将会发生难以估计的错误。实验还得出了当把数据库文件写入到系统Flash上的总耗时约为50ms,比写入SD卡中约少30ms。不过就80ms左右的一次读写速度而言,嵌入式数据库sqlite3执行效率和稳定性非常可观,现在一般的RFID读写器通过串口执行一条指令的时间也需几十毫秒的时间,因而使用sqlite3数据库在执行速率和稳定性上对于安检系统中RFID读写数据的处理可以很好地达到要求,而且sqlite3还支持数据加密,安全性同样非常出色。1

    注意事项

    本文(基于Linux操作系统的射频识别安检设计方案.docx)为本站会员(安***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开