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

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 安全與國(guó)防 > 設(shè)計(jì)應(yīng)用 > 嵌入式數(shù)據(jù)庫(kù)礦場(chǎng)安全系統(tǒng)的設(shè)計(jì)

          嵌入式數(shù)據(jù)庫(kù)礦場(chǎng)安全系統(tǒng)的設(shè)計(jì)

          作者: 時(shí)間:2010-08-21 來(lái)源:網(wǎng)絡(luò) 收藏

            

            數(shù)據(jù)采集程序設(shè)計(jì)

            數(shù)據(jù)采集模塊程序使用了 ReadFile.h 和ReadFile.cpp 文件,因此本文設(shè)計(jì)了CReadFile 類,該類封裝了對(duì)dev.xml 和rtdata.xml 交換文件所有的數(shù)據(jù)采集操作。根據(jù) dev.xml 和rtdata.xml 交換文件的構(gòu)成,以及數(shù)據(jù)庫(kù)存儲(chǔ)操作上的考慮,程序?yàn)槊總€(gè)傳感器設(shè)計(jì)了DEVDATA 和REALDATA 結(jié)構(gòu)體,分別用來(lái)保存dev.xml 和rtdata.xml 文件的數(shù)據(jù)信息。DEVDATA 結(jié)構(gòu)體如下所示:

            typedef struct devdata

            { TCHAR m_str_devSubstation[MAXLENGTH];//分站

            TCHAR m_str_devID[MAXID];//傳感器編號(hào)

            TCHAR m_str_devPlace[MAXLENGTH];//安裝地點(diǎn)

            TCHAR m str_devName[MAX];//檢測(cè)類別

            TCHAR m str_devType[MAX];//傳感器類型

            TCHAR m str_devUnit[MAX];//單位

            float m_data_up;//量程上限

            float mes_data_down;//量程下限

            float m_alarrn_up;//報(bào)警上限

            float m_alarm_down;//報(bào)警下限

            float m_power_off;//斷電值

            float m_power_on;//復(fù)電值

            }DEVDATA;

            REALDATA 結(jié)構(gòu)體如下所示:

            typedef struct realdata

            {TCHAR m_str_devID[MAXID];//傳感器編號(hào)

            float m_data;//傳感器數(shù)值

            TCHAR m_str_dataStatus[MAXSTATUS];//數(shù)據(jù)狀態(tài)

            }REALDATA;

            CReadFile 類使用了CPtrList 鏈表數(shù)據(jù)結(jié)構(gòu),用以管理交換文件的所有傳感器信息,數(shù)據(jù)節(jié)點(diǎn)為DEVDATA 和REALDATA 結(jié)構(gòu)體。

            3.2 數(shù)據(jù)存儲(chǔ)模塊

            將傳感器設(shè)備上傳時(shí)間作為 key,封裝在DEVDATA 結(jié)構(gòu)體中的設(shè)備安裝信息和封裝在REALDATA 結(jié)構(gòu)體中的實(shí)時(shí)數(shù)據(jù)信息分別構(gòu)成數(shù)據(jù)庫(kù)的data,從而構(gòu)成兩組Key 到Data對(duì)。因此,該方案將形成兩張表,分別存儲(chǔ)在兩個(gè)數(shù)據(jù)庫(kù)文件中。將傳感器設(shè)備安裝信息和實(shí)時(shí)數(shù)據(jù)信息形成兩個(gè)數(shù)據(jù)庫(kù)文件分別存儲(chǔ),只在設(shè)備安裝信息改變的時(shí)候才會(huì)進(jìn)行設(shè)備文件的存儲(chǔ)操作,這樣大大減少了數(shù)據(jù)庫(kù)文件的磁盤占用空間。

             用Key/Data(關(guān)鍵詞/數(shù)據(jù))來(lái)區(qū)分?jǐn)?shù)據(jù)庫(kù)中的數(shù)據(jù),Key/Data 對(duì)是 用來(lái)進(jìn)行數(shù)據(jù)庫(kù)管理的基礎(chǔ),由這兩者構(gòu)成的Key/Data 對(duì)組成了數(shù)據(jù)庫(kù)中的一個(gè)基本結(jié)構(gòu)單元,而整個(gè)數(shù)據(jù)庫(kù)實(shí)際上就是由許多這樣的結(jié)構(gòu)單元所構(gòu)成的。也就是說(shuō),調(diào)用數(shù)據(jù)庫(kù)接口實(shí)際上就是提供了相應(yīng)的關(guān)鍵詞,通過(guò)該關(guān)鍵詞來(lái)查找要操作的數(shù)據(jù)。

            如果把一組相關(guān)的 Key/Data 對(duì)也看作一個(gè)表的話,那么每一個(gè)數(shù)據(jù)庫(kù)只允許存放一個(gè)table,因此,一般一種類型的Key/Data 對(duì)構(gòu)成一個(gè)數(shù)據(jù)庫(kù)文件。數(shù)據(jù)庫(kù)存儲(chǔ)代碼設(shè)計(jì)主要分為設(shè)備安裝信息(key/data 對(duì)為設(shè)備上傳時(shí)間/DEVDATA 結(jié)構(gòu)體)存儲(chǔ)代碼設(shè)計(jì)和實(shí)時(shí)數(shù)據(jù)信息(key/data 對(duì)為設(shè)備一上傳時(shí)間/REALDATA 結(jié)構(gòu)體)存儲(chǔ)代碼設(shè)計(jì)。 是以文件為單位進(jìn)行數(shù)據(jù)庫(kù)管理的,由于設(shè)備安裝信息只在數(shù)據(jù)改變的時(shí)候才進(jìn)行數(shù)據(jù)庫(kù)存儲(chǔ)操作,并且其間隔周期較長(zhǎng),因此作者設(shè)計(jì)了dev.db 文件實(shí)現(xiàn)安裝信息的存儲(chǔ)管理;由于實(shí)時(shí)數(shù)據(jù)信息的更新周期較短,數(shù)據(jù)庫(kù)存儲(chǔ)操作頻繁,并且每天都會(huì)有數(shù)據(jù)的采集和更新,因此作者以每天的日期為單位設(shè)計(jì)了實(shí)時(shí)數(shù)據(jù)庫(kù)文件,系統(tǒng)將會(huì)獲取當(dāng)天的日期,并以之為文件名形成數(shù)據(jù)庫(kù)文件進(jìn)行數(shù)據(jù)庫(kù)操作,例如當(dāng)天的日期為2007 年2 月8 日,那么數(shù)據(jù)庫(kù)文件名為 2007-02-08.db 。

           



          評(píng)論


          流程圖:

          技術(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); })();