微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 用ARM11和RFID技术打造的智能物流管理系统参考设计

用ARM11和RFID技术打造的智能物流管理系统参考设计

时间:09-19 来源:互联网 点击:

RevPthread,0)。建立两个线程,第一个是以键盘输入的方式读写RFID信息,第二个线程的功能是监控串口/dev/ttySAC1中的信息,已实现实时的捕捉刷写RFID标签信息。

  2.2 串口数据的实时读取

  在linux操作系统中,对外设的访问往往都是使用open()函数,以打开文件的方式读取数据。在本设计中对串口数据的渎取也正是通过open()函数打开/dev/ttySAC1这一串口驱动文件,获取由读卡器发送给ARM11主核心板的数据,实现函数为open(/dev/ttySAC1,O_RDWR | O_NOCTTY),标志位为O_RDWR | O_NOCTTY,意义是系统以可读写的方式打开文件,如果欲打开的文件为终端设备时,则不会将该终端当成进程控制终端。

  在打开串口文件之前,我们要对串口进行相应的设置,具体步骤有以下几步:串口属性的设置,保存原先串口配置,激活选项,设置波特率,设置字符大小,设置校验,设置停止位,设置最少字符与等待时间,清楚串口缓冲,激活配置。设置由以下结构体实现:

  

  成功打开驱动文件后,需要做的就是使用read()函数来读出读卡器发送的信号,以判别货品的类型,将其信息准确的存入到数据库。 Read()函数的函数原型为read(int fd,void*huf,size_t count),read()实现的功能是从参数fd所指的文件传送count个字节到buf指针所指的内存中。读出的数据将存入buf中,作为识别RFID标签的依据。

  2.3 SQLite对数据的管理

  在嵌入式设备上使用的数据库有很多,比如MySQL。本设计选择的是更为简便的数据库SQLite。本设计中建立的是一个物流商品信息的数据库系统,包含的信息有:商品的名字(char型),商品的ID号(char型)以及商品的价格(int型)。这些信息都将被存放在table merchan dise中。

  当代表商品的RFID标签第一次刷写读卡器的时候,系统将根据它的标签标号,唯一确定它的商品名、商品ID号以及价格,并把这些消息一次性写入到表merchandise中。已经存入库中的商品RFID标签再次刷写读卡器的时候,将作为该商品的出库操作,系统将自动的删除该商品在数据库中的信息。

  存数据的管理部分,充分利用SQLite提供的便捷有效的API函数:sqlite3_open(),sqlite3_exec()和sqlite3_close()等,打开和操作数据库文件。

  在商品的整个入库、出库的操作中,数据的录入和删除将是由系统自动完成,免去了人为的操作,大大提高了仓库管理的效率,减少了人力资源。

  2.4 Qt/E用户界面的设计

  QT/E即Qt Embedded是挪威Trolletch公司的图形化界面开发工具。Qt的嵌入式版本,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好的体系架构和编程模式。在系统设计时,为了使管理人员更好地管理仓库物品的信息,在开发板上配备了一个4.2寸的触摸屏,来提供良好的UI界面,以便观察数据库内的存货信息。

  在本设计中,选择QT来开发UI界面。在主界面中,加入了一个Table View控件,用来绑定SQLite数据库文件rfid_sqlite.db。在开发过程中,添加头文件"QSqlDatabase",这是Qt用来连接数据库所必备的头文件,该头文件下包含了很多的函数来操作数据库,将数据信息呈现给用户。语句QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE"),指明了Qt所需要连接的数据库类型为SQLite,接着再通过db.setDatabaseName("rfid_sqlite.db")来打开链接系统所需要的数据库,默认路径为当前文件夹,显示结果如图2所示。

  

  3 实现功能

  本设计的目的是通过RFID的批量识别,实现物流的出库、入库和分拣流程。通过服务器和数据中心的文时数据分析和报表功能,掌握企业资源的动态变化。本系统中选择使用固定式的低频率的读卡器,来实现商品信息的录入与删除,模拟了四种不同的商品:A,B,C,D,对应相应的商品ID。商品入库的时候,依此把RFID标签放在读卡器上进行刷写,终端部分通过对串口/dev/ttyrSAC1的实时监测,当数据刷写的时候,在RFID标签ID鉴别的函数体内,以ID号为判别依据,调用数据库操作文件sqlite.c中定义好的函数体sqliteDB_opt_add(char*na me,char*id,int price)录入商品信息;在商品出库时,再次刷写需要出入库的RFID标签,系统将自动识别该商品的刷写次数,来鉴别其操作方式是出库还是入库。当判断出是第二次刷写时,将调用函数体sqliteDB_opt_delete_by_id(char*id),从数据库中删除该商品的信息,以达到数据出库的操作。标签的首次刷写视为商品的入库,第二次刷写视为出库操作,这一信息的录入与删除,用户可以从UI界面的Table View控件内实时观察到。

4

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top