新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > RFID安檢系統的嵌入式Linux解決方案

        RFID安檢系統的嵌入式Linux解決方案

        作者: 時間:2011-05-09 來源:網絡 收藏

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

          為了驗證sqlite3數據庫在[3-4]終端下的執行效率和穩定性,為此做了一個簡單的測試實驗:通過上位機程序向終端的串口定時發送字符串;終端接收到字符串便立即寫入到下位機的數據庫中。自后查看數據中的數據,看看有沒有遺漏和誤碼。上位機的程序使用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執行效率和穩定性非常可觀,現在一般的讀寫器通過串口執行一條指令的時間也需幾十毫秒的時間,因而使用sqlite3數據庫在執行速率和穩定性上對于讀寫數據的處理可以很好地達到要求,而且sqlite3還支持數據加密,安全性同樣非常出色。

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

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 左贡县| 桂阳县| 浦城县| 大邑县| 广元市| 柳林县| 云霄县| 石屏县| 沈阳市| 菏泽市| 云南省| 西昌市| 泽库县| 丰宁| 元朗区| 巴林右旗| 健康| 乌拉特前旗| 萝北县| 龙岩市| 乐清市| 图木舒克市| 蓝田县| 固镇县| 白沙| 肥城市| 海门市| 拉萨市| 绥棱县| 漾濞| 慈溪市| 惠州市| 富宁县| 阜新市| 新化县| 美姑县| 西安市| 板桥市| 北辰区| 恭城| 安国市|