徐繼寧,李建芯
(北方工業(yè)大學(xué) 電氣與控制工程學(xué)院, 北京 100144)
SQLite在資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)中的應(yīng)用*
徐繼寧,李建芯
(北方工業(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è)和曲線顯示。
嵌入式系統(tǒng);SQLite ;Qt ;資產(chǎn)管理;環(huán)境監(jiān)測(cè)
隨著工程實(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)。
本文設(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ú)線Wi-Fi實(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)行通信。
圖1 資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)整體框圖
在該系統(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ù)曲線顯示功能。
傳統(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ì)比
由表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ì)。
在本設(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)信息表
表3 信息變更表
表4 溫度表
3.2 Qt下的數(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)行通信[7- 8]。
首先創(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)信息
圖2 資產(chǎn)報(bào)廢
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 資產(chǎn)變更
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 實(shí)驗(yàn)室一天內(nèi)溫度變化曲線圖
本文介紹了一款新型的面向高校實(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ā)有著積極的借鑒意義。
[1] 毛行標(biāo).RFID技術(shù)在高校實(shí)驗(yàn)室設(shè)備資產(chǎn)信息化管理系統(tǒng)中的應(yīng)用[J].中國(guó)現(xiàn)代教育裝備,2006(11):69-70.
[2] 李強(qiáng),曾國(guó)強(qiáng),羅群,等.嵌入式數(shù)據(jù)庫(kù)SQLite在核儀器數(shù)據(jù)管理中的應(yīng)用[J].核電子學(xué)與探測(cè)技術(shù),2014,34(8):921-925.
[3] 王峰超,申萍,嚴(yán)翔,等.SQLite在機(jī)車故障診斷系統(tǒng)中的應(yīng)用研究[J].鐵道機(jī)車車輛,2012,32(4):90-93.
[4] 梁爽,任杰.嵌入式數(shù)據(jù)庫(kù)SQLite在油田監(jiān)控系統(tǒng)中的應(yīng)用[J].試驗(yàn)研究,2014,33(11):29-30.
[5] 張穎,易金花,張曉玉,等.基于嵌入式Linux的上肢康復(fù)機(jī)器人用戶系統(tǒng)研究[J].電子技術(shù)應(yīng)用,2014,40(5):14-17.
[6] 鄧宗權(quán),蔣向東,王繼岷,等.基于嵌入式Linux汽車智能儀表系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(4):26-28.
[7] 楊旭光.基于QWT插件實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)圖表顯示[J].福建電腦,2012,28(12):158-159.
[8] 鄭阿奇.Qt4開(kāi)發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2011.
The application of SQLite in asset management and environmental monitoring system
Xu Jining,Li Jianxin
(School of Electrical and Control Engineering, North China University of Technology, Beijing 100144,China)
In view of lab asset equipment has the characteristics of a wide variety, having different cycle of scrap , easy to change, and difficult to guarantee for environmental safety, this article embeds lightweight database SQLite into the system of asset management and environmental monitoring, using Qt for the application of management software design and development. Then it is realized in the equipment for laboratory assets data collection, storage and manage as well as the laboratory environment of temperature and humidity monitoring and curve display.
embedded system;SQLite;Qt;asset managment;environment monitoring
國(guó)家自然科學(xué)基金(61304049)
TP311.5
A
1674-7720(2016)04-0095-03
徐繼寧,李建芯.SQLite在資產(chǎn)管理與環(huán)境監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J] .微型機(jī)與應(yīng)用,2016,35(4):95-97,103.
2015-09-16)
徐繼寧(1970-),女,博士,副教授,主要研究方向:信號(hào)處理,工業(yè)控制和總線技術(shù)。
李建芯(1989-),通信作者,男,碩士,主要研究方向:嵌入式,物聯(lián)網(wǎng)技術(shù)。E-mail:15650768931@163.com。