《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > RFID安檢系統的嵌入式Linux解決方案
RFID安檢系統的嵌入式Linux解決方案
電子系統設計
摘要: RFID安檢系統的嵌入式Linux解決方案,本文介紹了此RFID安檢系統的硬件框架和軟件設計,實現了RFID安檢系統基于嵌入式Linux下的串口通信以及數據庫的應用。最后通過實驗證明并確定了其在速率、穩定性方面的可行性,對于當今大多數RFID安檢系統的開發
Abstract:
Key words :

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

        RFID(射頻識別)是一種非接觸式的自動識別技術,它通過射頻信號自動識別目標對象并獲取相關數據,識別工作無需人工干預,可工作于各種惡劣環境下。RFID技術可識別高速運動物體并可同時識別多個標簽, 操作快捷方便。非接觸IC卡是目前RFID系統中最常用的一種電子標簽,它誕生于20世紀90年代初,是世界上最近幾年發展起來的一項新技術,它成功地將射頻識技術和IC卡技術結合起來,解決了無源(卡中無電源)和免接觸這一難題,是電子器件領域的一大突破。由于存在著磁卡和接觸式IC卡不可比擬的優點,使之一經問世,便立即引起廣泛的關注,并以驚人的速度得到推廣應用,如我國的第二代公民身份證、公交卡、ETC免停車付費卡等??梢哉fRFID技術越來越多地應用到我國身份安檢、質量安檢、車輛安檢、執法安檢等諸多安檢系統中。
 
  本文就是針對安檢系統這種工程背景下RFID通信的應用開發?,F在一般的RFID通信都基于串口,串口因其通用性、方面性和優良性能得到了廣泛的應用。由于安檢系統中往往涉及大量重要數據的讀取、通信以及實時更新,因此數據庫技術的引入必不可少。同時本文選擇了Linux操作系統,眾所周知Linux同Windows相比性能更安全、更可靠,而且Linux還是一款免費的代碼開源的操作系統,裁減內核更方便、快捷,與其他操作系統相比有著許多獨特的優勢,更加適合用作嵌入式操作系統。

  1 系統結構介紹
 
  RFID安檢系統主要包括RFID前段讀寫器、嵌入式Linux終端兩大部分。

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

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

  串口設置由下面結構體實現:
  Struct termios {
  tcflag_t  c_iflag;        /* input flags */
  tcflag_t  c_oflag;        /* output flags*/
  tcflag_t  c_cflag;        /*control flags */
  tcflag_t  c_lflag;        /* local  flags */
  tcflag_t  c_cc[NCSS];    /* control characters */
  }
  按照串口配置流程,對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終端不停地發送字符串數據,按鍵響應程序設計如下:

void CSendDlg::OnButton_Click()
{
   state=1;
   while(1)
   {
    str.Format("第%3d條記錄",state);//格式化字符串格式
    m_Port.WriteToPort(str,str.GetLength());//向串口發送字符串
        state++;
    Sleep(100);//延時100 ms
   }
  可見程序是個定時100 ms便發送一條字符串的循環,而且發送的每一條字符串事先通過str.Format格式化為固定長度,本例中是11 B。按下按鍵后發送的第一條字符串為:“第1條記錄”,每發送一條字符串里面的數字加“1”,這樣寫到數據庫中就可以很清楚地查看有沒有遺漏和誤碼,而且可以通過修改Sleep函數的延時參數檢測出嵌入式Linux終端下sqlite3數據庫操作的速度。
   
  下位機嵌入式Linux終端的程序設計為:先創建一個數據庫文件test.db,接著就是一個死循環,串口不停地查找有沒有數據寫入,當檢測到數據時,便寫入到test.db中,若寫入有誤,則立即跳出循環,終止程序。
char sql[100]="create table receive(name varchar(40))";
qlite3_open("/var/sd/test.db",&db);    //在SD卡中創建
test.db文件
sqlite3_exec(db,sql,0,0,&errmsg);    //在test.db文件中插入
表receiver
fd=open_port(fd,1)//打開串口1
set_opt(fd,9600,8,'N',1)//配置串口屬性,開始通信
while(1)
{
        n=0;
        i=0;
        bzero(read_buf, sizeof(read_buf));
        if( (n=read(fd, read_buf, sizeof(read_buf))) <=0)
            Continue;//未讀到數據則繼續查找串口
    printf("recever %d wordsn",n);//輸出讀到的字符數
        sprintf(sql,"insert into receive values(%s)",read_buf);
    result =sqlite3_exec(db,sql,0,0,&errmsg);//插入數據
到數據庫中
        if(result==SQLITE_OK)
      printf("第%3d條數據寫入成功n",++i);
//若插入成功則提示
    else break;//若插入不成功,則跳出循環
}  

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

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美成ee人免费视频| 亚洲精品永久免费| 国产精品羞羞答答xxdd| 韩日欧美一区二区三区| 亚洲电影视频在线| 伊大人香蕉综合8在线视| 久久久久国产一区二区| 在线欧美视频| 国产精品chinese| 久久一综合视频| 麻豆freexxxx性91精品| 欧美怡红院视频| 久久久久久91香蕉国产| 精品99一区二区| 欧美xx视频| 激情婷婷久久| 欧美专区中文字幕| 久久精品国产精品亚洲综合| 亚洲激情电影中文字幕| 久久免费国产精品| 欧美v国产在线一区二区三区| 国产精品夫妻自拍| 国外成人免费视频| 午夜精品久久久久久99热软件| 亚洲欧美日韩一区在线观看| 欧美三级乱人伦电影| 亚洲日本中文字幕区| 国产精品超碰97尤物18| 国内精品久久久久国产盗摄免费观看完整版| 欧美91福利在线观看| 国产精品videosex极品| 久久久99爱| 久久精视频免费在线久久完整在线看| 猫咪成人在线观看| 国产日韩一区二区三区在线播放| 国产美女精品视频免费观看| 久久久久国产精品一区二区| 玖玖综合伊人| 国产精品99久久久久久久女警| 国产精品欧美久久久久无广告| 一本大道久久a久久综合婷婷| 在线观看日韩av先锋影音电影院| 欧美久久影院| 免费高清在线视频一区·| 一区二区三区www| 欧美精品三级日韩久久| 亚洲性色视频| 欧美一区午夜视频在线观看| 国产日韩欧美亚洲一区| 欧美日本精品| 国产日韩欧美在线播放不卡| 影院欧美亚洲| 欧美sm重口味系列视频在线观看| 久久免费国产| 亚洲国产精品第一区二区| 黄页网站一区| 国产精品视频免费| 国产女人水真多18毛片18精品视频| 国产精品久久久久久影院8一贰佰| 亚洲第一色中文字幕| 狠狠色综合色区| 国产精品一区二区三区四区五区| 狼人天天伊人久久| 国产精品乱人伦一区二区| 亚洲黄色av| 久久久久久久久久码影片| 亚洲国产日韩欧美一区二区三区| 欧美日韩国产经典色站一区二区三区| 亚洲电影第三页| 国产乱肥老妇国产一区二| 欧美午夜激情小视频| 1000部精品久久久久久久久| 亚洲综合精品一区二区| 欧美r片在线| 亚洲精品美女| 国产日韩欧美不卡| 欧美精品videossex性护士| 在线观看福利一区| 狠狠做深爱婷婷久久综合一区| 久久久国产精彩视频美女艺术照福利| 久久久久久97三级| 一区二区三区在线视频免费观看| 久久9热精品视频| 欧美三日本三级少妇三99| 国产精品一区二区欧美| 久久国产精品一区二区| 欧美亚洲一区在线| 榴莲视频成人在线观看| 欧美一级视频一区二区| 国产精品视频999| 久久国产精品网站| 亚洲欧洲精品一区二区精品久久久| 国产精品99久久不卡二区| 香蕉久久久久久久av网站| 国产精品爽爽ⅴa在线观看| 亚洲欧洲偷拍精品| 亚洲在线网站| 亚洲高清久久久| 久久精品国产免费看久久精品| 亚洲高清在线| 激情亚洲成人| 国内精品嫩模av私拍在线观看| 国产揄拍国内精品对白| 国产精品不卡在线| 欧美日韩国产成人在线| 99人久久精品视频最新地址| 99精品国产热久久91蜜凸| 亚洲午夜一二三区视频| 久久久久久久久久久久久9999| 欧美日韩视频免费播放| 亚洲国产欧洲综合997久久| 亚洲国产日日夜夜| 久久久久久久综合日本| 亚洲天天影视| 亚洲一区在线免费观看| 国外成人网址| 亚洲精选中文字幕| 欧美日韩一区二区在线| 日韩午夜在线电影| 91久久久在线| 最新国产乱人伦偷精品免费网站| 国内自拍亚洲| 亚洲一二三区视频在线观看| 亚洲国产成人久久综合| 亚洲无限av看| 久久天堂av综合合色| 亚洲综合日韩在线| 欧美日韩在线三级| 亚洲欧美国产高清| 欧美在线视频免费观看| 玖玖玖免费嫩草在线影院一区| 欧美xxx成人| 午夜久久久久久久久久一区二区| 在线观看日韩| 久久电影一区| 136国产福利精品导航| 国产精品网站视频| 亚洲性线免费观看视频成熟| 久久综合狠狠综合久久激情| 免费看的黄色欧美网站| 久久免费视频一区| 久久亚洲精品网站| 国产欧美va欧美不卡在线| 国产欧美日韩精品a在线观看| 国产一区二区三区免费不卡| 久久伊人一区二区| 国产精品女主播一区二区三区| 国产日韩在线不卡| 国产精品一卡| 欧美日韩中文字幕日韩欧美| 亚洲精品久久久久久久久| 在线观看日韩一区| 麻豆乱码国产一区二区三区| 国产日韩欧美精品一区| 欧美午夜精品久久久| 欧美chengren| 亚洲伦理自拍| 亚洲一区二区免费看| 亚洲欧美日本视频在线观看| 精品电影在线观看| 韩曰欧美视频免费观看| 久久精品最新地址| 在线视频一区观看| 红桃视频成人| 亚洲性线免费观看视频成熟| 欧美日韩成人| 欧美人与禽猛交乱配| 99在线|亚洲一区二区| 欧美日韩在线不卡| 午夜精品视频网站| 久久久久一本一区二区青青蜜月| 校园春色国产精品| 亚洲高清不卡| 欧美网站大全在线观看| 亚洲视频中文| 亚洲婷婷综合久久一本伊一区| 夜夜夜精品看看| 国产精品伦一区| 欧美三级视频在线播放| 国产午夜精品麻豆| 欧美日韩免费高清一区色橹橹| 午夜国产不卡在线观看视频| 欧美日韩在线视频一区二区| 久久激情视频| 国产亚洲电影| 国产欧美va欧美va香蕉在| 久久xxxx| 国产精品99一区| 国内外成人在线视频| 欧美性事免费在线观看| 欧美日韩在线影院| 性欧美8khd高清极品| 久久激情五月激情| 午夜亚洲视频| 国内外成人免费激情在线视频| 国产视频不卡| 久久av一区二区三区| 亚洲一区二区三区精品视频| 日韩一区二区精品葵司在线| 国产一区高清视频| 久久网站免费| 激情小说亚洲一区| 欧美一级理论片| 宅男噜噜噜66一区二区66| 精品成人在线视频| 国产精品久久久91| 欧美国产在线视频| 最新日韩av| 国产一区二区精品丝袜| 亚洲女人天堂成人av在线| 久久gogo国模裸体人体| 欧美老女人xx| 一本色道久久88亚洲综合88| 亚洲日韩欧美一区二区在线| 欧美国产日韩一区二区三区| 亚洲欧美成人| 亚洲第一久久影院| 免费亚洲一区二区| 亚洲人成人77777线观看| 国产亚洲欧洲997久久综合| 欧美一区激情| 亚洲国产精品国自产拍av秋霞| 依依成人综合视频| 在线精品高清中文字幕| 国产亚洲成精品久久| 久久久不卡网国产精品一区| 免费久久99精品国产自在现线| 久久福利精品| 精品福利免费观看| 国产精品久久久久一区二区三区| 欧美日韩一二三区| 亚洲视频每日更新| 欧美日韩日日骚| 国产视频不卡| 亚洲娇小video精品| 亚洲人成在线播放| 亚洲一区二区三区在线视频| 性高湖久久久久久久久| 国产一区二区久久| 女人色偷偷aa久久天堂| 国产精品大片免费观看| 欧美日韩中文在线| 一本久道久久综合中文字幕| 国产一区二区三区在线观看精品| 小辣椒精品导航| 欧美好吊妞视频| 狠狠久久亚洲欧美专区| 亚洲精品日韩精品| 国产精品高潮呻吟久久| 欧美久久久久久久| 欧美亚洲不卡| 亚洲精品欧美日韩| 久久gogo国模啪啪人体图| 久久久久久91香蕉国产| 国产精品丝袜白浆摸在线| 欧美激情五月| 一区二区三区欧美在线观看| 欧美日韩精品福利| 亚洲成人自拍视频| 久久久噜噜噜久噜久久| 国产美女搞久久| 国产精品福利在线观看网址| 久久久精品久久久久| 国产精品国产三级欧美二区| 亚洲人成人一区二区在线观看| 国产一区二区欧美日韩| 亚洲精品综合久久中文字幕| 国产主播一区| 国产女人18毛片水18精品| 这里只有精品电影| 久久中文字幕导航| 午夜精品久久久久99热蜜桃导演| 好看的亚洲午夜视频在线| 欧美88av| 国产精品久久久久久av下载红粉| 欧美不卡视频一区发布| 国产精品久久久久久久久久ktv| 亚洲午夜激情免费视频| 国产精品美女主播| 影音先锋日韩精品| 欧美激情精品| 国产精品女同互慰在线看| 国产精品一区在线播放| 欧美一区二区三区视频免费播放| 国产欧美日韩一区二区三区| 葵司免费一区二区三区四区五区| 国产日韩精品在线观看| 国产精品一区视频| 亚洲精品国产精品国自产观看浪潮| 亚洲黄一区二区| 欧美激情亚洲另类| 欧美性jizz18性欧美| 欧美精品久久久久久久久久| 国产精品高潮呻吟| 午夜国产不卡在线观看视频| 欧美精品一区二区三区很污很色的| 久久视频在线免费观看| 久久福利一区| 欧美日韩国产精品一卡| 久久亚洲电影| 另类欧美日韩国产在线| 老司机午夜精品视频在线观看| 欧美三级中文字幕在线观看| 久久国产免费看| 国产欧美韩日| 激情欧美一区二区| 国产精品久久久免费| 黑人巨大精品欧美一区二区| 亚洲国产精品免费| 国内外成人在线| 欧美刺激午夜性久久久久久久| 久久疯狂做爰流白浆xx| 欧美精品18| 亚洲精品在线观看视频| 免费日韩一区二区| 国产精品久久久久99| 噜噜噜在线观看免费视频日韩| 日韩午夜免费视频| 国产视频在线观看一区二区三区| 亚洲精品久久嫩草网站秘色| 欧美日韩另类一区| 国内精品写真在线观看| 国产日韩欧美在线观看| 午夜欧美不卡精品aaaaa| 在线成人小视频| 久久综合伊人77777蜜臀| 亚洲福利视频网站| 欧美特黄一级大片|