徐繼寧,李建芯
(北方工業(yè)大學(xué) 電氣與控制工程學(xué)院,, 北京 100144)
摘要:針對(duì)實(shí)驗(yàn)室資產(chǎn)設(shè)備品種繁多,、報(bào)廢周期不一、地址信息變更頻繁,、環(huán)境安全難保障的特點(diǎn),,提出了將輕量級(jí)數(shù)據(jù)庫(kù)SQLite嵌入在一個(gè)資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)中,利用Qt實(shí)現(xiàn)對(duì)管理軟件的應(yīng)用設(shè)計(jì)開(kāi)發(fā),,最終實(shí)現(xiàn)了對(duì)實(shí)驗(yàn)室資產(chǎn)設(shè)備數(shù)據(jù)的采集,、存儲(chǔ)、管理以及對(duì)實(shí)驗(yàn)室溫濕度環(huán)境狀態(tài)的監(jiān)測(cè)和曲線顯示,。
關(guān)鍵詞:嵌入式系統(tǒng),;SQLite ;Qt ,;資產(chǎn)管理,;環(huán)境監(jiān)測(cè)
0引言
隨著工程實(shí)踐教育的發(fā)展,高校的實(shí)驗(yàn)室設(shè)備資產(chǎn)數(shù)量日益增大,,品種類型多樣,, 且創(chuàng)新、開(kāi)放實(shí)驗(yàn)室活動(dòng)的開(kāi)展也使得設(shè)備的流動(dòng)性更強(qiáng),,工作環(huán)境日益復(fù)雜,。在新的教育形勢(shì)下,如何靈活有效地管理和利用實(shí)驗(yàn)室的資產(chǎn)設(shè)備是所有實(shí)驗(yàn)室管理人員面臨的問(wèn)題,。
當(dāng)今高校實(shí)驗(yàn)室的設(shè)備資產(chǎn)管理有幾個(gè)特點(diǎn):每個(gè)品種數(shù)量不大但種類繁多,;更換、報(bào)廢物品周期不一;重要設(shè)備需有使用記錄,;需要定期進(jìn)行資產(chǎn)清查,;確定重要設(shè)備位置等。傳統(tǒng)化的固定資產(chǎn)管理仍是當(dāng)今高校普遍采用的方式,,還是采用紙制標(biāo)簽,,利用手工方式將設(shè)備相關(guān)信息分類編輯管理[1]。這種管理方式雖然能從一定程度上對(duì)資產(chǎn)進(jìn)行統(tǒng)計(jì)管理,,但還存在很多固有的缺陷,。因?yàn)闃?biāo)簽長(zhǎng)時(shí)間的保存容易損壞,往往會(huì)造成信息具有不可追溯性,;固定資產(chǎn)信息無(wú)法實(shí)時(shí)追蹤記錄,,變更操作繁瑣;實(shí)驗(yàn)室環(huán)境狀態(tài)缺乏預(yù)警機(jī)制,,更難以保證實(shí)驗(yàn)室環(huán)境狀態(tài)的安全,。 因此本文設(shè)計(jì)了一個(gè)結(jié)合RFID技術(shù)和嵌入式數(shù)據(jù)庫(kù)的新型資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng),。
1系統(tǒng)總體設(shè)計(jì)
本文設(shè)計(jì)的實(shí)驗(yàn)室資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)框圖如圖1所示,。該系統(tǒng)主要分為數(shù)據(jù)采集端、核心控制器,、遠(yuǎn)程控制端和報(bào)警設(shè)備4部分,。所有實(shí)驗(yàn)室固定資產(chǎn)配備RFID卡片, 用于表示和記錄設(shè)備信息,。
數(shù)據(jù)采集端完成兩部分任務(wù):(1)由RFID掃描器獲取實(shí)驗(yàn)室內(nèi)的設(shè)備信息,;(2)通過(guò)各傳感器進(jìn)行數(shù)據(jù)采集,進(jìn)行必要的環(huán)境監(jiān)控,。數(shù)據(jù)最終都由ZigBee網(wǎng)絡(luò)傳輸?shù)胶诵目刂破鞫?。其中RFID芯片采用MFRC522,ZigBee芯片采用TI 公司的CC2530,。
控制器基于Linux操作系統(tǒng)開(kāi)發(fā),,其核心芯片是三星的S3C6410??刂破髦饕蝿?wù)是完成前端采集的數(shù)據(jù)的存儲(chǔ),、顯示以及對(duì)整個(gè)系統(tǒng)的控制。接收前端采集數(shù)據(jù),,將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中并顯示在基于Qt 4開(kāi)發(fā)的人機(jī)交互界面中,,利用無(wú)線網(wǎng)絡(luò)與遠(yuǎn)程控制端進(jìn)行交互。手機(jī),、Pad等移動(dòng)終端設(shè)備組成了遠(yuǎn)程控制端,,它們通過(guò)無(wú)線WiFi實(shí)現(xiàn)與核心控制端通信,可以對(duì)核心控制端傳來(lái)的數(shù)據(jù)完成顯示和控制功能。
為保障重要設(shè)備的安全,,本系統(tǒng)提供了防盜報(bào)警功能,。由超高頻RFID掃描器對(duì)重要物品進(jìn)行掃描,當(dāng)設(shè)備非法移出時(shí)啟動(dòng)報(bào)警器,。超高頻RFID掃描器和報(bào)警器組成的報(bào)警設(shè)備通過(guò)有線方式進(jìn)行通信,。
在該系統(tǒng)中數(shù)據(jù)庫(kù)主要支持的功能有存儲(chǔ)由ZigBee協(xié)調(diào)器傳來(lái)的資產(chǎn)信息、溫度信息和濕度信息等數(shù)據(jù),,并將數(shù)據(jù)顯示在本地嵌入式端,;同時(shí)實(shí)現(xiàn)對(duì)資產(chǎn)信息數(shù)據(jù)的添加、刪除,、查詢,、修改、報(bào)廢和變更記錄等功能,,對(duì)溫濕度信息實(shí)現(xiàn)數(shù)據(jù)曲線顯示功能,。
2嵌入式數(shù)據(jù)庫(kù)的選擇
傳統(tǒng)的數(shù)據(jù)庫(kù)通常要專門的管理以及配置,不僅體積大,、不便移植,,而且使用也復(fù)雜[2]。而嵌入式數(shù)據(jù)庫(kù)不需要在客戶機(jī)服務(wù)器上的配置服務(wù),,它嵌入到了應(yīng)用程序進(jìn)程中,。輕量級(jí)嵌入式數(shù)據(jù)庫(kù)在運(yùn)行過(guò)程中只要比較少的內(nèi)存,速度快,,效果也更加理想,。嵌入式數(shù)據(jù)庫(kù)一般也都支持SQL,通過(guò)SQL來(lái)管理應(yīng)用程序數(shù)據(jù),,而不依靠原始的文本文件,。
當(dāng)前支持多平臺(tái)的輕量級(jí)嵌入式數(shù)據(jù)庫(kù)主要有Empress、BerkeleyDB,、SQLite[3],,如表1所示。 表1常用嵌入式數(shù)據(jù)庫(kù)對(duì)比數(shù)據(jù)庫(kù)大小/KB特點(diǎn)是否支持SQLEmpress800穩(wěn)定性強(qiáng),、高速性,、多重訪問(wèn)性支持BerkeleyDB300執(zhí)行速度快、調(diào)度API完成操作支持SQLite250零配置,、執(zhí)行速度快,、簡(jiǎn)單易用的API支持
由表1對(duì)比可得,SQLite數(shù)據(jù)庫(kù)占內(nèi)存最小,,僅為250 KB,,同時(shí)提供簡(jiǎn)單易用的API接口供開(kāi)發(fā)者使用,,因此最適合在實(shí)驗(yàn)室資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)中開(kāi)發(fā)使用。
對(duì)于開(kāi)源的嵌入式SQLite數(shù)據(jù)庫(kù),,它方便使用管理,、維護(hù)和配置,無(wú)需安裝,。該數(shù)據(jù)庫(kù)儲(chǔ)存在單一文件系統(tǒng)中,,內(nèi)嵌到應(yīng)用程序中,支持Mac OS,、Linux,、Windows、UNIX等各種操作系統(tǒng)[4],。比起目前常見(jiàn)的SQL Server和Oracle數(shù)據(jù)庫(kù)來(lái)說(shuō),,SQLite數(shù)據(jù)庫(kù)不需獨(dú)自運(yùn)行數(shù)據(jù)庫(kù)的驅(qū)動(dòng)系統(tǒng),數(shù)據(jù)存取速度很快,,是MySQL的1~2倍,;支持2 TB數(shù)據(jù)存儲(chǔ)量。它具有簡(jiǎn)潔優(yōu)化的結(jié)構(gòu),,主要由SQL編譯器,、內(nèi)核、后端3部分組成[5],。在SQLite數(shù)據(jù)庫(kù)體系結(jié)構(gòu)的上部進(jìn)行編譯查詢語(yǔ)句,,在中部執(zhí)行它,,低層處理操作系統(tǒng)的存儲(chǔ)和接口,。所有SQL語(yǔ)句通過(guò)分詞器和分析器生成語(yǔ)法樹(shù),交由代碼生成器生成可以在SQLite虛擬機(jī)中執(zhí)行的程序集[3,,6] ,。SQLite憑借較小的體積、簡(jiǎn)單的操作以及運(yùn)行穩(wěn)定的優(yōu)點(diǎn),,使之與復(fù)雜的商業(yè)數(shù)據(jù)引擎在開(kāi)發(fā)維護(hù)方面更占優(yōu)勢(shì),。
3SQLite在資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)中的實(shí)現(xiàn)
在本設(shè)計(jì)系統(tǒng)中,資產(chǎn)信息存入到SQLite數(shù)據(jù)庫(kù),,用于支持用戶對(duì)資產(chǎn)信息的檢索,、添加、修改,、刪除,、報(bào)廢以及數(shù)據(jù)變更等功能, 同時(shí)實(shí)現(xiàn)對(duì)環(huán)境溫濕度和報(bào)警信息的存儲(chǔ),,并以表格,、曲線等形式顯示,。
3.1數(shù)據(jù)庫(kù)表的設(shè)計(jì)
數(shù)據(jù)庫(kù)中創(chuàng)建了資產(chǎn)信息表、報(bào)廢資產(chǎn)信息表,、信息變更表,、溫度表、濕度表和報(bào)警記錄表6張表,。資產(chǎn)信息表包含了每條資產(chǎn)的詳細(xì)信息,,如表2所示,它包含了資產(chǎn)編號(hào),、資產(chǎn)名稱等14個(gè)字段,。由于要對(duì)報(bào)廢的資產(chǎn)做一定時(shí)段的存檔,還需要一張報(bào)廢表,,報(bào)廢表的字段等同于資產(chǎn)信息表,。為了方便對(duì)資產(chǎn)變動(dòng)信息進(jìn)行登記,單獨(dú)建立了信息變更表,,如表3所示,。對(duì)環(huán)境信息,主要記錄時(shí)間和溫濕度值,,如表4所示,。 表2資產(chǎn)信息表字段名稱數(shù)據(jù)類型約束可否為空說(shuō)明資產(chǎn)編號(hào)inter主鍵NOT NULL資產(chǎn)編號(hào)資產(chǎn)名稱text無(wú)NOT NULL資產(chǎn)名稱分類號(hào)text無(wú)NOT NULL分類號(hào)
表3信息變更表字段名稱數(shù)據(jù)類型約束可否為空說(shuō)明變更編號(hào)inter主鍵NOT NULL變更編號(hào)資產(chǎn)編號(hào)inter無(wú)NOT NULL資產(chǎn)編號(hào)使用者text無(wú)NULL使用者存放地點(diǎn)text無(wú)NULL存放地點(diǎn)歸屬單位text無(wú)NULL歸屬單位改變時(shí)間timestamp無(wú)NOT NULL改變時(shí)間
表4溫度表字段名稱數(shù)據(jù)類型約束可否為空說(shuō)明時(shí)間idtimestamp主鍵NOT NULL時(shí)間溫度real無(wú)NOT NULL溫度值實(shí)驗(yàn)室text無(wú)NOT NULL實(shí)驗(yàn)室歸屬單位text無(wú)NOT NULL歸屬單位
3.2Qt下的數(shù)據(jù)庫(kù)的建立
該系統(tǒng)用Qt進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn), 采用了QtSQL模塊進(jìn)行數(shù)據(jù)庫(kù)的驅(qū)動(dòng),,用一套獨(dú)立于平臺(tái)和數(shù)據(jù)庫(kù)的調(diào)用接口進(jìn)行通信[78],。
首先創(chuàng)建數(shù)據(jù)庫(kù)鏈接,也就是創(chuàng)建一個(gè)QSqlDatabase類的實(shí)例,代碼如下:
QSqlDatabase db= QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“databasefile”);
鏈接好數(shù)據(jù)庫(kù)后,,要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)表,,代碼如下:
void ConnDlg::creatDB()
{QSqlQuery query;
query.exec(“create table asset(“//創(chuàng)建資產(chǎn)信息表
“assetid int primary key,”//插入主鍵
“other varchar(50))”));}
QSqlQuery類提供了一個(gè)接口,,用于執(zhí)行SQL語(yǔ)句,。通過(guò)SQL語(yǔ)句實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)的查詢、添加,、刪除和修改等操作,。
3.3資產(chǎn)報(bào)廢的數(shù)據(jù)實(shí)現(xiàn)
為了提高追溯能力和管理水平,實(shí)驗(yàn)室資產(chǎn)報(bào)廢后需存檔一段時(shí)間,,因此需要單獨(dú)形成一份報(bào)廢資產(chǎn)信息表,。資產(chǎn)報(bào)廢操作先要將報(bào)廢資產(chǎn)信息從資產(chǎn)信息表中復(fù)制到報(bào)廢資產(chǎn)表中,然后從資產(chǎn)信息表中刪除該信息,,如圖2所示,。主要代碼如下:
insert into scraptable(assetid,assetname,...)select assetid,assetname,... from assettable;//復(fù)制信息到報(bào)廢表
removeAssetsFromDatabase(assetid);//在資產(chǎn)信息表中刪除該資產(chǎn)信息
3.4變更記錄的實(shí)現(xiàn)
實(shí)驗(yàn)室資產(chǎn)是實(shí)驗(yàn)室成員的公共財(cái)產(chǎn),使用過(guò)程中部分資產(chǎn)的信息變動(dòng)較大,,尤其是“使用者”和“存放地點(diǎn)”這兩條信息,。為此建了一張變更信息表,,專門存放每個(gè)資產(chǎn)的變更信息, 如圖3所示,。每當(dāng)資產(chǎn)的使用者和存放地點(diǎn)變動(dòng)時(shí),,可以在資產(chǎn)信息窗口中選中要變動(dòng)的資產(chǎn),直接添加變更信息到變更信息表中,。變更記錄時(shí)采用事務(wù)方式將變更信息插入到變更信息表中顯示,。主要代碼如下:
QSqlDatabase::database().transaction ;//啟動(dòng)事務(wù)
scrapModel->insertRecord(-1,record);
QSqlDatabase::database().commit();//事務(wù)結(jié)束
3.5環(huán)境監(jiān)測(cè)溫度曲線顯示的實(shí)現(xiàn)
大型貴重設(shè)備的環(huán)境監(jiān)測(cè)已經(jīng)成為實(shí)驗(yàn)室不可忽略的問(wèn)題,該系統(tǒng)用無(wú)線傳感網(wǎng)絡(luò)方便地實(shí)現(xiàn)了實(shí)驗(yàn)室環(huán)境參數(shù)的監(jiān)測(cè),,主要關(guān)注設(shè)備周邊的溫濕度變化,。為提高可視性,系統(tǒng)采用高性能繪圖圖表Qt C++控件QCustomPlot,,可以繪制曲線圖,、趨勢(shì)圖、柱狀圖,。圖4是對(duì)實(shí)驗(yàn)室一天中每?jī)蓚€(gè)小時(shí)采樣一次數(shù)據(jù)的溫度變化情況,。
4結(jié)論
本文介紹了一款新型的面向高校實(shí)驗(yàn)室資產(chǎn)管理和環(huán)境監(jiān)測(cè)嵌入式系統(tǒng),,文中主要就該系統(tǒng)中輕型數(shù)據(jù)庫(kù)SQLite數(shù)據(jù)庫(kù)的選型,、設(shè)計(jì)和開(kāi)發(fā)作了介紹。作為一個(gè)綜合了ZigBee,、RFID,、嵌入式技術(shù)的實(shí)用系統(tǒng),SQLite與Qt的聯(lián)合開(kāi)發(fā)對(duì)系統(tǒng)的性能完善和提高起到了不可替代的作用,,也表明了SQLite數(shù)據(jù)庫(kù)在嵌入式端的優(yōu)越性,,對(duì)相關(guān)系統(tǒng)的開(kāi)發(fā)有著積極的借鑒意義。
參考文獻(xiàn)
?。?] 毛行標(biāo).RFID技術(shù)在高校實(shí)驗(yàn)室設(shè)備資產(chǎn)信息化管理系統(tǒng)中的應(yīng)用[J].中國(guó)現(xiàn)代教育裝備,2006(11):6970.
?。?] 李強(qiáng),,曾國(guó)強(qiáng),,羅群,等.嵌入式數(shù)據(jù)庫(kù)SQLite在核儀器數(shù)據(jù)管理中的應(yīng)用[J].核電子學(xué)與探測(cè)技術(shù),2014,34(8):921925.
?。?] 王峰超,,申萍,嚴(yán)翔,,等.SQLite在機(jī)車故障診斷系統(tǒng)中的應(yīng)用研究[J].鐵道機(jī)車車輛,2012,32(4):9093.
?。?] 梁爽,任杰.嵌入式數(shù)據(jù)庫(kù)SQLite在油田監(jiān)控系統(tǒng)中的應(yīng)用[J].試驗(yàn)研究,2014,33(11):2930.
?。?] 張穎,,易金花,,張曉玉,等.基于嵌入式Linux的上肢康復(fù)機(jī)器人用戶系統(tǒng)研究[J].電子技術(shù)應(yīng)用,2014,40(5):1417.
?。?] 鄧宗權(quán),,蔣向東,王繼岷,等.基于嵌入式Linux汽車智能儀表系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(4):2628.