<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于Linux操作系統(tǒng)的射頻識別安檢設(shè)計方案

          基于Linux操作系統(tǒng)的射頻識別安檢設(shè)計方案

          作者: 時間:2011-05-23 來源:網(wǎng)絡(luò) 收藏

            參數(shù)1是調(diào)用打開數(shù)據(jù)庫函數(shù)sqlite3_open()打開的數(shù)據(jù)庫對象。

            參數(shù)2 是一條待執(zhí)行的SQL語句,其語法格式同標(biāo)準(zhǔn)SQL語言規(guī)范一樣,如創(chuàng)建 table時插入的記錄如下:

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

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

            Insert into student values(12345678,21);

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

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

            參數(shù)3 sqlite3_callback是自定義的回調(diào)函數(shù),對執(zhí)行結(jié)果的每一行都執(zhí)行一次這個函數(shù)。

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

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

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

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


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

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


            4 結(jié)語

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


          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();