999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式Linux的RFID安檢系統的設計

2010-05-11 11:58:18王志亮官洪運張智軼
網絡安全與數據管理 2010年22期
關鍵詞:嵌入式數據庫系統

王志亮,官洪運,王 龍,劉 婕,張智軼

(東華大學 信息學院,上海201620)

RFID(射頻識別)是一種非接觸式的自動識別技術,它通過射頻信號自動識別目標對象并獲取相關數據,識別工作無需人工干預,可工作于各種惡劣環境下。RFID技術可識別高速運動物體并可同時識別多個標簽,操作快捷方便。非接觸IC卡是目前RFID系統中最常用的一種電子標簽,它誕生于20世紀90年代初,是世界上最近幾年發展起來的一項新技術,它成功地將射頻識技術和IC卡技術結合起來,解決了無源(卡中無電源)和免接觸這一難題,是電子器件領域的一大突破。由于存在著磁卡和接觸式IC卡不可比擬的優點,使之一經問世,便立即引起廣泛的關注,并以驚人的速度得到推廣應用,如我國的第二代公民身份證、公交卡、ETC免停車付費卡等。可以說RFID技術越來越多地應用到我國身份安檢、質量安檢、車輛安檢、執法安檢等諸多安檢系統中。

本文就是針對安檢系統這種工程背景下RFID通信的應用開發。現在一般的RFID通信都基于串口,串口因其通用性、方面性和優良性能得到了廣泛的應用。由于安檢系統中往往涉及大量重要數據的讀取、通信以及實時更新,因此數據庫技術的引入必不可少。同時本文選擇了Linux操作系統,眾所周知Linux同Windows相比性能更安全、更可靠,而且Linux還是一款免費的代碼開源的操作系統,裁減內核更方便、快捷,與其他操作系統相比有著許多獨特的優勢,更加適合用作嵌入式操作系統。

1 系統結構介紹

RFID安檢系統主要包括RFID前段讀寫器、嵌入式Linux終端兩大部分,其結構如圖1所示。

其中嵌入式終端的CPU采用ARM9內核,內核執行速率達幾百兆赫茲,可以很好地滿足RFID數據的讀取和存儲。由于嵌入式系統一般是一個經過裁剪、資源極其有限的系統,因此對于安檢系統中涉及到的大量數據只能存取到外圍存儲設備中,本方案中的SD卡模塊正是用來存儲數據庫的,當RFID讀寫器讀取到指定數據,便在SD卡中的相關數據庫文件中查詢,并根據查詢結果做出相關反應并及時更新本地數據庫。

2 Linux下串口的開發

在Linux下對串口進行配置、打開、讀寫等一系列的操作其使用方式與文件操作一樣,區別在于串口是一個終端設備[1]。Linux中的串口設備文件存放于/dev目錄下,其中串口1、串口2一般對應設備名依次為“/dev/ttyS0”、“/dev/ttyS1”。在使用串口之前必須設置相關配置,包括波特率、數據位、校驗位、停止位等[2]。

串口開發的流程和串口開發過程中串口配置的流程分別如圖2(a)、圖 2(b)所示。

圖2 串口開發與配置流程

串口設置由下面結構體實現:

按照串口配置流程,對termios結構體設置相關參數,當串口按自己的設置要求配置成功后,即可將串口當做普通I/O文件,使用read和write函數對串口進行讀取。

3 sqlite3數據庫的應用開發

sqlite3數據庫是一種嵌入式數據庫,其目標是盡量簡單,因此拋棄了傳統企業級數據庫的種種復雜特性,只實現對于數據庫而言必備的功能。盡管簡單性是sqlite3追求的首要目標,但是其功能和性能都非常出色,具有支持SQL92標準、所有數據存放到單獨的文件中支持的最大文件可達2 TB、數據庫可以在不同字節的機器之間共享、體積小、系統開銷小、檢索效率高、支持多種計算機語言、源碼開放,并且可以用于任何合法用途等特性。

3.1 sqlite3數據庫的移植

sqlite3數據庫的移植過程如下所述:

(1)首先從sqlite官網上下載最新的sqlite3源碼包;

(2)解壓源碼包,并進入解壓目錄:

tar-zxvf sqlite-3.6.23.1.tar.gz

cd sqlite-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.h sqlite3.h。交叉編譯的命令如下:

Make

Make install

(5)將數據庫管理程序 sqlite3、提供編程所需的 API的動態庫libsqlite3.so.0.8.6及其1個軟鏈接拷貝到開發板根文件系統相應位置,分別在嵌入式終端的/usr/bin和/usr/lib這兩個目錄下,命令如下:

Cp result/bin/sqlite3 /arm-linux/usr/bin

Cp–l result/lib/libsqlite3.so* /arm-linux/usr/lib

(6)為了能在開發機上編譯,調用了sqlite3數據庫的API的應用程序,需要將動態庫libsqlite3.so.0.8.6及其2個軟鏈接、2個頭文件拷貝到交叉編譯工具鏈所在目錄的適當位置,至此sqlite3數據庫的移植和開發環境的配置已完成。只要輸入SQL語言便可以進行相關操作。

3.2 Linux下sqlite3的C語言開發

sqlite3里最常用到的是sqlite3*類型。從數據庫打開時開始,sqlite3就要為這個類型準備好內存,直到數據庫關閉,整個過程都需要用到這個類型。數據庫打開時起,這個類型的變量就代表了所要操作的數據庫。

(1)打開數據庫API接口函數

int sqlite3_open(文件名,sqlite3*);

用這個函數開始數據庫操作。需要傳入兩個參數,其中之一是數據庫文件名,例如:/home/test.db文件名不需要一定存在,如果此文件不存在,sqlite3會自動建立;如果存在,就嘗試把它當數據庫文件打開。

sqlite3*參數即前面提到的關鍵數據結構。函數返回值表示操作是否正確,如果是SQLITE_OK則表示操作正常。相關的返回值sqlite3定義了一些宏,具體這些宏的含義可以參考sqlite3.h文件。

(2)關閉數據庫API接口函數

int sqlite3_close(sqlite3*);

如果前面用sqlite3_open開啟了一個數據庫,結尾時不要忘了用這個函數關閉數據庫。

(3)執行 SQL語句 API接口

由于嵌入式sqlite3數據庫支持SQL語言,因而調用C中相關執行函數就如同在終端下操作數據庫一樣方面快捷,下面是具體的API函數:

這就是執行一條sql語句的函數。

Int sqlite3_exec(sqlite3*db,const char*sql,sqlite3_callback,Void*,char**errmsg);

參數1是調用打開數據庫函數sqlite3_open()打開的數據庫對象。

參數2是一條待執行的SQL語句,其語法格式同標準SQL語言規范一樣,如創建 table時插入的記錄如下:

create table student(id varchar(10)primary key,age smallint);

此語句創建了名為 student的表,表中定義了 id(學號)和年紀兩個變量,其中id是主鍵。

Insert into student values(12345678,21);

此語句向student表中插入一組數據(12345678,21),其中學號為12345678,學生年齡為21。

對于數據庫的其他操作,如數據庫更新、修改、查找等用法同上。

參數3 sqlite3_callback是自定義的回調函數,對執行結果的每一行都執行一次這個函數。

參數4 void*是調用者所提供的指針,你可以傳遞任何一個指針參數到這里,這個參數最終會傳到回調函數里,如果不需要傳遞指針給回調函數,可以填NULL。

參數5 char**errmsg是錯誤信息。sqlite3里面有很多固定的錯誤信息。執行sqlite3_exec之后,如果執行失敗則可以查閱這個指針,即可知道執行過程中錯誤發生的位置。

3.3 串口同sqlite3通信測試與分析

為了驗證sqlite3數據庫在嵌入式Linux[3-4]終端下的執行效率和穩定性,為此做了一個簡單的測試實驗:通過上位機程序向嵌入式Linux終端的串口定時發送字符串;嵌入式Linux終端接收到字符串便立即寫入到下位機的數據庫中。自后查看數據中的數據,看看有沒有遺漏和誤碼。上位機的程序使用VC6.0開發,整個程序界面只設了一個按鍵,按下按鍵,上位機就向嵌入式Linux終端不停地發送字符串數據,按鍵響應程序設計如下:

可見程序是個定時100 ms便發送一條字符串的循環,而且發送的每一條字符串事先通過str.Format格式化為固定長度,本例中是11 B。按下按鍵后發送的第一條字符串為:“第1條記錄”,每發送一條字符串里面的數字加“1”,這樣寫到數據庫中就可以很清楚地查看有沒有遺漏和誤碼,而且可以通過修改Sleep函數的延時參數檢測出嵌入式Linux終端下sqlite3數據庫操作的速度。

下位機嵌入式Linux終端的程序設計為:先創建一個數據庫文件test.db,接著就是一個死循環,串口不停地查找有沒有數據寫入,當檢測到數據時,便寫入到test.db中,若寫入有誤,則立即跳出循環,終止程序。

測試結果如圖3所示。

整個測試根據上位機串口發送的頻率不同做了多組實驗,每組實驗寫入1 000個數據,最終結果分析如下:上位機在定時80 ms左右或大于80 ms的情況下發送數據時,數據庫寫入的誤碼率為零;當定時時間小于80 ms時,隨著定時時間變小誤碼率會越來越高。通過數據分析可知原因有以下幾點:一是數據庫本身寫入需用時幾十毫秒,二是SD卡并非高速讀寫設備,當數據還未完全寫入數據庫時若有新數據發過來,則下次讀寫將會發生難以估計的錯誤。實驗還得出了當把數據庫文件寫入到系統Flash上的總耗時約為50 ms,比寫入SD卡中約少30 ms。不過就80 ms左右的一次讀寫速度而言,嵌入式數據庫sqlite3執行效率和穩定性非常可觀,現在一般的RFID讀寫器通過串口執行一條指令的時間也需幾十毫秒的時間,因而使用sqlite3數據庫在執行速率和穩定性上對于安檢系統中RFID讀寫數據的處理可以很好地達到要求,而且sqlite3還支持數據加密,安全性同樣非常出色。

本文介紹了此RFID安檢系統的硬件框架和軟件設計,實現了RFID安檢系統基于嵌入式Linux下的串口通信以及數據庫的應用。最后通過實驗證明并確定了其在速率、穩定性方面的可行性,對于當今大多數RFID安檢系統的開發具有一定的參考價值。

[1]WALL K,WASTON M.GUN/Linux編程指南(第 2版)[M].WHITIS M,王勇,譯.北京:清華大學出版社,2002.

[2]華清遠見嵌入式中心.嵌入式Linux C語言應用程序設計[M].北京:人民郵電出版社,2008.

[3]FELDHOFER M.A proposal for an authentication protocol in a security layer for RFID smart tags.IEEE Proceedings of MELECON,2004.

[4]華清遠見嵌入式中心.嵌入式Linux系統開發標準教程[M].北京:人民郵電出版社,2009.

猜你喜歡
嵌入式數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 无码又爽又刺激的高潮视频| 国产屁屁影院| 香蕉色综合| 97亚洲色综久久精品| 国产精品分类视频分类一区| 四虎永久在线视频| 四虎免费视频网站| 国产精品2| 毛片在线区| 99热最新网址| 五月婷婷精品| 亚洲人成影院午夜网站| 国产一区二区三区免费| 国产91久久久久久| 亚洲精品国产精品乱码不卞| 欧美第二区| 久久久噜噜噜久久中文字幕色伊伊| 国产日本一线在线观看免费| 人妻熟妇日韩AV在线播放| 国产精品入口麻豆| 亚洲区欧美区| 国产成人精品优优av| 国产日韩精品欧美一区喷| 亚洲中文精品人人永久免费| 色欲综合久久中文字幕网| 国产精品女在线观看| 九九热精品在线视频| 亚洲av成人无码网站在线观看| 九九热精品免费视频| yy6080理论大片一级久久| 精品国产一区二区三区在线观看 | 欧美激情二区三区| 欧日韩在线不卡视频| 在线国产你懂的| 国内毛片视频| 国产高清又黄又嫩的免费视频网站| 亚洲成综合人影院在院播放| 嫩草在线视频| 国产精品私拍99pans大尺度| 欧美乱妇高清无乱码免费| 热99re99首页精品亚洲五月天| 国产精品制服| 人人澡人人爽欧美一区| 亚洲最大情网站在线观看| 色老头综合网| 国产视频入口| 亚洲av日韩av制服丝袜| 亚洲国产精品VA在线看黑人| 欧美a在线视频| 在线欧美a| 国产超碰一区二区三区| 成人免费视频一区二区三区 | 亚洲国产综合精品一区| 亚洲国产成人超福利久久精品| 99热最新在线| 免费在线成人网| 亚洲国产成熟视频在线多多| 久久青草热| 欧美日韩高清在线| 成人福利在线观看| 99热最新网址| 91免费国产高清观看| 国产在线日本| 国产激情影院| 91热爆在线| 69视频国产| 欧美日韩专区| 国产成人AV综合久久| 第一区免费在线观看| 国产免费人成视频网| 伊人久久大香线蕉影院| 一本大道无码日韩精品影视 | 在线观看无码a∨| 亚洲综合专区| 亚洲欧州色色免费AV| 国产制服丝袜91在线| 婷婷亚洲天堂| 国产成人精品视频一区二区电影| 97视频精品全国在线观看| 国产xx在线观看| 九九热精品视频在线| 亚欧美国产综合|