• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Linux的智能家居網(wǎng)關(guān)管理軟件設(shè)計與實現(xiàn)*

    2010-04-26 05:07:50陳俊杰
    艦船電子工程 2010年6期
    關(guān)鍵詞:圖形用戶界面網(wǎng)關(guān)進程

    馮 冬 陳俊杰

    (東南大學(xué)儀器科學(xué)與工程學(xué)院 南京 210096)

    1 引言

    智能家居是一種基于家庭設(shè)備的自動化與通信完成對環(huán)境監(jiān)測和設(shè)備自動控制的一項技術(shù)[1]。它正給人們的生活帶來前所未有的舒適與便利。在不久的將來,智能家居將進入每個家庭,成為人們生活必不可少的一部分。

    無線傳感器網(wǎng)絡(luò)極大地拓展了人們的感知范圍,通過將由家庭設(shè)備組成的無線傳感器網(wǎng)絡(luò)與GPRS結(jié)合,可以讓人們隨時隨地監(jiān)測和控制家庭設(shè)備的工作?;谏鲜黾夹g(shù)的智能家居系統(tǒng)具有對家庭設(shè)備遠程控制、監(jiān)測、集中管理的功能。家庭中包括4表、安防、空調(diào)、熱水器在內(nèi)的眾多設(shè)備通過內(nèi)置的通信與控制裝置,形成一個無線傳感器網(wǎng)絡(luò),這個網(wǎng)絡(luò)將各種設(shè)備連接起來,使它們協(xié)同工作,從而將家庭設(shè)備從一個個獨立被動的個體轉(zhuǎn)變成一個主動的、相互連接的網(wǎng)絡(luò)。無線傳感器網(wǎng)絡(luò)通過網(wǎng)關(guān)與外部的GPRS相連,使兩種不同網(wǎng)絡(luò)的信息能相互傳輸,為用戶提供了一種遠程訪問控制家庭設(shè)備的途徑[2]。遠程智能家居系統(tǒng)結(jié)構(gòu)如圖1所示。

    智能家居網(wǎng)關(guān)在整個系統(tǒng)中占據(jù)了十分重要的地位,它實現(xiàn)了兩種網(wǎng)絡(luò)數(shù)據(jù)的透明傳輸,并且具有分析處理數(shù)據(jù)的能力,可以說它是整個遠程智能家居控制系統(tǒng)的中樞神經(jīng)。然而,目前針對網(wǎng)關(guān)的軟件設(shè)計不多,并且主要側(cè)重于網(wǎng)關(guān)的通信功能,而對圖形界面與數(shù)據(jù)存儲等功能的支持不足,這類軟件的圖形界面大都是基于web的設(shè)計,需要通過瀏覽器才能訪問網(wǎng)關(guān)[3],并且基于嵌入式web技術(shù)的圖形界面設(shè)計并不豐富。目前,支持嵌入式觸摸屏的網(wǎng)關(guān)管理軟件并不多見,因此本文在完成網(wǎng)關(guān)基本功能的基礎(chǔ)上,利用嵌入式圖形接口MiniGUI與嵌入式數(shù)據(jù)庫SQlite設(shè)計了一款功能穩(wěn)定、界面友好的網(wǎng)關(guān)管理軟件。

    圖1 遠程智能家居結(jié)構(gòu)圖

    2 網(wǎng)關(guān)管理軟件的基本設(shè)計原則

    作為遠程智能家居的網(wǎng)關(guān),它連接了家庭的無線傳感器網(wǎng)絡(luò)和外部的GPRS。用戶從遠程訪問網(wǎng)關(guān),通過網(wǎng)關(guān)控制家庭設(shè)備的工作,因此網(wǎng)關(guān)是整個遠程智能家居系統(tǒng)的樞紐。它應(yīng)包括數(shù)據(jù)通信、處理、存儲等基本功能,并能為用戶提供一個友好的操作界面。本系統(tǒng)實現(xiàn)的具體功能包括:

    1)數(shù)據(jù)處理。數(shù)據(jù)處理主要是指將通過網(wǎng)關(guān)的GPRS與無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)進行處理,并對信息做出恰當?shù)姆磻?yīng)。

    2)通信接口。通信接口負責數(shù)據(jù)的發(fā)送與接收,不對數(shù)據(jù)進行處理,它僅僅將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給其他軟件模塊處理或者將其他模塊要求發(fā)送的數(shù)據(jù)發(fā)送出去。

    3)數(shù)據(jù)庫。數(shù)據(jù)庫模塊包括數(shù)據(jù)的存儲、索引以及提取。它通過數(shù)據(jù)庫接口完成數(shù)據(jù)的插入、檢索、提取等操作。網(wǎng)關(guān)通過該功能可以對經(jīng)過它的數(shù)據(jù)進行存儲,提供檢索、查詢,便于用戶查看網(wǎng)關(guān)的工作狀態(tài)和整個系統(tǒng)的工作情況。

    4)圖形用戶界面。圖形用戶界面是當前流行的應(yīng)用模式,它提供了一個圖形化的操作界面,極大的提高了網(wǎng)關(guān)的操作性。對數(shù)據(jù)的插入和查詢通過圖形界面可視化的展現(xiàn)出來,并通過該圖形界面接收控制命令,完成對網(wǎng)關(guān)的工作狀態(tài)設(shè)定。

    3 網(wǎng)關(guān)管理軟件設(shè)計

    3.1 結(jié)構(gòu)設(shè)計

    本系統(tǒng)軟件由數(shù)據(jù)處理、通信接口、數(shù)據(jù)庫和圖形用戶界面4個模塊組成,它們相互協(xié)作,完成了整個系統(tǒng)的功能。軟件結(jié)構(gòu)圖如圖2所示。

    數(shù)據(jù)處理是整個軟件的核心模塊,數(shù)據(jù)通過它在軟件各個模塊之間相互傳遞,把整個系統(tǒng)融合為一個整體,使其協(xié)調(diào)工作。圖形用戶界面是軟件的表層,它為用戶提供一個良好的人機交互界面,負責接收用戶的控制命令并將處理結(jié)果反饋給用戶,為用戶調(diào)用數(shù)據(jù)庫提供圖形方式的操作接口。數(shù)據(jù)庫模塊為數(shù)據(jù)進行插入、檢索、查詢等基本操作提供了軟件接口,圖形用戶界面通過調(diào)用該接口,使用戶可以方便的利用圖形化方式對數(shù)據(jù)庫進行操作。數(shù)據(jù)通信接口提供了軟件與GPRS和無線傳感器網(wǎng)絡(luò)通信的接口,它負責從GPRS和無線傳感器網(wǎng)絡(luò)接收數(shù)據(jù)并將數(shù)據(jù)提交給數(shù)據(jù)處理部件處理,同時可以將數(shù)據(jù)發(fā)送到GPRS網(wǎng)絡(luò)和無線傳感器網(wǎng)絡(luò)中。

    圖2 軟件結(jié)構(gòu)圖

    圖3 軟件流程

    3.2 流程設(shè)計

    系統(tǒng)采用嵌入式 Linux操作系統(tǒng),Linux強大的功能、穩(wěn)定性、安全性以及開源軟件眾多等特點為網(wǎng)關(guān)管理軟件的設(shè)計帶來了極大的幫助。軟件流程如圖3所示。

    本軟件啟動了Linux環(huán)境下的兩個進程來實現(xiàn)系統(tǒng)功能,分別是系統(tǒng)主進程和通信進程。當Linux啟動后,將首先啟動系統(tǒng)的主進程,主進程將對系統(tǒng)運行環(huán)境初始化,隨后啟動通信子進程。

    主進程的主要用于運行圖形用戶界面,它維持了一個友好的圖形環(huán)境,采用消息驅(qū)動機制,保證用戶的操作能夠及時得到處理。

    通信接口進程由主進程產(chǎn)生,是主進程的子進程。它負責整個系統(tǒng)的通信功能。當它啟動之后,將監(jiān)視整個系統(tǒng)是否接收到數(shù)據(jù)或者有數(shù)據(jù)需要發(fā)送。

    主進程與通信接口進程的數(shù)據(jù)交互是通過Linux的進程間通信機制來完成的,Linux下常用的進程間通信方法有管道、消息隊列、共享內(nèi)存等,通過這些進程間通信方法,使數(shù)據(jù)在不同進程間流動,極大的方便了應(yīng)用開發(fā)。

    4 基于C語言的網(wǎng)關(guān)管理軟件實現(xiàn)

    4.1 數(shù)據(jù)處理模塊實現(xiàn)

    數(shù)據(jù)處理模塊是數(shù)據(jù)在系統(tǒng)各個部分之間流動的樞紐,并負責對數(shù)據(jù)進行處理。它是一組數(shù)據(jù)處理函數(shù)與數(shù)據(jù)流動通道的集合,負責處理通信接口接收到的數(shù)據(jù),判斷其來自GPRS還是無線傳感器網(wǎng)絡(luò),并按照需要決定是否轉(zhuǎn)發(fā)數(shù)據(jù);它還負責接收圖形用戶界面對調(diào)用數(shù)據(jù)庫以及發(fā)送接收數(shù)據(jù)的要求,并按照要求完成相應(yīng)工作,將結(jié)果反饋給圖形用戶界面。

    除了提供給其他部件直接的函數(shù)調(diào)用外,數(shù)據(jù)處理部件的核心在于維持了一個數(shù)據(jù)流動通道,保證了不同模塊之間的數(shù)據(jù)流通。由于軟件采用了2個進程,圖形用戶界面運行于主進程,而通信接口運行在通信進程中,因此這兩個進程中數(shù)據(jù)的交互就必須依靠數(shù)據(jù)處理模塊所提供的進程間通信的功能,使數(shù)據(jù)在不同進程間傳遞,方便了應(yīng)用開發(fā)。本系統(tǒng)采用管道與信號量相結(jié)合的方法實現(xiàn)進程間通信。

    通俗的說,管道(pipe)就是數(shù)據(jù)從一個進程到另一個進程的流動通道,常把一個進程的輸出通過管道連接到另一個進程的輸入。在程序中,我們通過int pipe(int file_descriptor[2])函數(shù)創(chuàng)建一個管道,管道的輸入輸出傳遞給整型的文件描述符數(shù)組,其中file_descriptor[0]表示管道的讀,file_descriptor[1]表示管道的寫。從file_descriptor[1]寫入的數(shù)據(jù)可以從file_descriptor[0]中讀出。進程間管道通信的邏輯結(jié)構(gòu)圖如圖4所示。

    信號量是Linux系統(tǒng)響應(yīng)某些事件而發(fā)出的一個信號,捕獲到該信號的進程會立刻中斷并調(diào)用相應(yīng)的函數(shù)進行處理。通過將管道與信號量機制結(jié)合,實現(xiàn)了進程間實時的數(shù)據(jù)通信。當主進程需要發(fā)送數(shù)據(jù)給通信進程時,它首先將數(shù)據(jù)寫入管道,然后發(fā)送信號給通信進程,通信進程捕獲到信號后,立刻中斷并執(zhí)行處理函數(shù)進行管道的讀操作,這樣,主進程就可以及時的把數(shù)據(jù)通過管道發(fā)送給通信進程[4]。

    4.2 基于SQLite的數(shù)據(jù)庫實現(xiàn)

    SQLite是一款開源嵌入式數(shù)據(jù)庫引擎,全部源代碼在3萬行左右,編譯后的程序大約250kb,最多可以管理2TB的數(shù)據(jù),提供了對SQL92標準的大多數(shù)支持,是個極端輕量級的關(guān)系型數(shù)據(jù)庫。正是由于SQLite具有小體積,較強的功能,并能管理2TB的數(shù)據(jù),特別適合用于嵌入式領(lǐng)域[5]。

    數(shù)據(jù)庫模塊通過調(diào)用SQLite的API,實現(xiàn)了數(shù)據(jù)存儲、檢索、查詢等功能,該模塊的結(jié)構(gòu)如圖5所示。

    圖4 管道通信邏輯圖

    SQLite一共涉及了 83個API調(diào)用以及數(shù)據(jù)結(jié)構(gòu),它的使用簡單,若僅僅是簡單的應(yīng)用,那么只需使用 sqlite3_open(),sqlite3_exec()和sqlite3_close()就可以完成。Sqlite3*db是sqlite中數(shù)據(jù)庫句柄,用于其他API對打開的數(shù)據(jù)庫進行操作。sqlite3_open(filename,&db)用于打開一個數(shù)據(jù)庫,其中“filename”是數(shù)據(jù)庫路徑名,并將數(shù)據(jù)庫的句柄保存在之前定義的sqlite3*db的指針中。Sqlite3_exec(db,sql,null,null,null)通常用于執(zhí)行僅修改數(shù)據(jù)庫記錄而不返回結(jié)果的情況,例如使用insert、update和delete等SQL操作語句的情況,sqlite3_exec中的 sql就是 SQL操作語句了。Sqlite3_close(db)用于關(guān)閉指定的數(shù)據(jù)庫。

    圖5 數(shù)據(jù)管理部件結(jié)構(gòu)圖

    若需要對數(shù)據(jù)庫的表進行查詢,可通過sqlite3_prepare(),sqlite3_step(),sqlite3_column_xxx()等API的協(xié)調(diào)使用完成查詢操作。Sqlite3_stmt*stmt是SQLite內(nèi)部的一個結(jié)構(gòu)體,它包含了將要執(zhí)行的SQL語句的信息,sqlite3_prepare(db,sql,&stmt,0)將SQL語句進行預(yù)編譯,便于系統(tǒng)高效的處理。但此時SQL語句并沒真正的執(zhí)行,它僅僅被預(yù)編譯在 stmt結(jié)構(gòu)體中,通過sqlite3_step(stmt)調(diào)用,SQL語句才被真正執(zhí)行,結(jié)果通過sqlite_column_xxx(stmt,int num)進行提取,其中xxx可以是int、text等數(shù)據(jù)存儲類型,參數(shù) num表示查詢表的列號[6]。

    通過上述SQLite提供的API接口,我們可以方便的實現(xiàn)數(shù)據(jù)庫的各種功能。

    4.3 基于MiniGUI的圖形用戶界面實現(xiàn)

    MiniGUI是一個輕量級圖形用戶界面支持系統(tǒng),因其小巧、高穩(wěn)定性等優(yōu)點,特別適合在智能家居網(wǎng)關(guān)等嵌入式設(shè)備中應(yīng)用。

    MiniGUI采用分層設(shè)計,結(jié)構(gòu)圖如圖 6所示[7]:頂層的API提供給用戶調(diào)用,中間核心層包括了窗口系統(tǒng)的各個模塊,而底層的GAL和IAL提供了Linux圖形接口支持及鼠標等設(shè)備驅(qū)動。MiniGUI為應(yīng)用層提供了統(tǒng)一的API,屏蔽了底層硬件的區(qū)別,降低了開發(fā)的復(fù)雜性。

    圖6 MiniGUI結(jié)構(gòu)與流程圖

    MiniGUI是消息驅(qū)動的應(yīng)用程序,外設(shè)發(fā)生的事件都由系統(tǒng)收集,并翻譯為特定格式的消息。應(yīng)用程序中建立一個消息循環(huán)來讀取并處理消息,直到特定的終止消息傳來為止。程序要提供一個消息處理函數(shù)。系統(tǒng)在此函數(shù)中處理相應(yīng)的消息[8]。

    圖形界面采用圖6右圖所示的流程設(shè)計。程序從MiniGUI的主程序入口MiniGUIMain啟動,之后創(chuàng)建窗口并開始運行消息循環(huán)。MSG是MiniGUI中定義消息的數(shù)據(jù)類型,每個事件都被轉(zhuǎn)換成一個MSG類型變量,發(fā)送到消息隊列中,等待消息處理函數(shù)處理。下面就是執(zhí)行消息循環(huán)的代碼:

    當用戶關(guān)閉窗口時,消息隊列中便投放了一個特殊消息,這個消息將結(jié)束消息循環(huán),之后程序釋放整個圖形界面的資源,圖形界面運行結(jié)束。

    4.4 數(shù)據(jù)通信接口實現(xiàn)

    數(shù)據(jù)通信接口在是軟件與無線傳感器網(wǎng)絡(luò)和GPRS的通信接口,它負責從兩個網(wǎng)絡(luò)中接收數(shù)據(jù),并通過它將數(shù)據(jù)發(fā)送到兩個網(wǎng)絡(luò)中。通信接口代碼運行在通信進程中,該進程是主進程在完成系統(tǒng)初始化之后創(chuàng)建的一個子進程。

    通信接口可以檢測是否接收到數(shù)據(jù),并將接收到的數(shù)據(jù)提取出來,但不對數(shù)據(jù)做任何分析處理,對于數(shù)據(jù)的處理將通過數(shù)據(jù)處理部件來進行。當有數(shù)據(jù)需要發(fā)送時,調(diào)用數(shù)據(jù)通信接口將信息發(fā)送到目標網(wǎng)絡(luò)中。對于數(shù)據(jù)的發(fā)送,通信接口采用了一個簡單的退避算法,提高了數(shù)據(jù)成功發(fā)送的概率。該方法的程序流程圖如圖7所示。

    圖7 數(shù)據(jù)發(fā)送流程圖

    當調(diào)用通信接口發(fā)送數(shù)據(jù)后,判斷發(fā)送是否成功。若成功,調(diào)用數(shù)據(jù)管理接口存儲數(shù)據(jù)并返回。若發(fā)送失敗,則首先將該數(shù)據(jù)的發(fā)送次數(shù)加1,然后判斷是否超出了發(fā)送次數(shù)上限。若超出,調(diào)用數(shù)據(jù)管理接口保存數(shù)據(jù)并在數(shù)據(jù)庫中標明發(fā)送失敗,然后返回;若還沒有超出發(fā)送次數(shù)的上限,則延遲一個小的時間段,再次調(diào)用通信接口發(fā)送數(shù)據(jù),并繼續(xù)按照上述流程處理。

    5 實驗結(jié)果

    本軟件采用了Linux環(huán)境下的C語言開發(fā),結(jié)合MiniGUI和SQLite等開發(fā)工具,完成了軟件功能的實現(xiàn)。

    軟件按照上述方法設(shè)計,實現(xiàn)了家用設(shè)備工作狀態(tài)的查詢與設(shè)置、無線傳感器網(wǎng)絡(luò)與GPRS的數(shù)據(jù)轉(zhuǎn)發(fā)以及SQLite數(shù)據(jù)庫的查詢。

    圖8顯示了家用設(shè)備的監(jiān)控界面,左邊為無線傳感器網(wǎng)絡(luò)中的設(shè)備,點擊該設(shè)備的圖標,右側(cè)的“工作狀態(tài)”就顯示出其工作狀態(tài),用戶可以在“設(shè)置”一欄中重新對設(shè)備進行設(shè)定,點擊“設(shè)置”按鈕,控制命令就會通過無線傳感器網(wǎng)絡(luò)發(fā)送到目標設(shè)備中。

    圖9顯示了SQLite數(shù)據(jù)庫的界面。通過網(wǎng)關(guān)的數(shù)據(jù)將被網(wǎng)關(guān)存入數(shù)據(jù)庫中,通過數(shù)據(jù)庫查詢界面,用戶輸入查詢時間段,就會顯示該時間段內(nèi)網(wǎng)關(guān)記錄到的數(shù)據(jù)。

    6 結(jié)語

    本文對遠程智能家居中的網(wǎng)關(guān)管理軟件進行了設(shè)計,包括圖形用戶界面、數(shù)據(jù)處理模塊、通信接口以及數(shù)據(jù)庫模塊,實現(xiàn)了智能家居網(wǎng)關(guān)應(yīng)用的基本功能。軟件系統(tǒng)界面友好,操作方便。系統(tǒng)只需要在嵌入式設(shè)備中非常流行的中低端ARM平臺上即可運行,并且功能模塊可根據(jù)需要進行裁剪,成本可控制。因此這種遠程智能家居網(wǎng)關(guān)管理軟件設(shè)計具有較高的應(yīng)用前景。

    [1]Ricquebourg V,Menga D,Durand D,et al.The Smart Home Concept:our immediate future[C]//Proceedings of the 2006 1st IEEE International Conference on ELearning in Industrial Electronics.Hammamet,Tunisia,2006:23~28

    [2]Papadopoulos N,Meliones A,Economou D,et al.A Connected Home Platform and Development Framework for smart home control applications[C]//Proceedings of the 2009 7th IEEE International Conference on Industrial Informatics.Cardiff,UK,2009:402~409

    [3]唐偉,周祖德.嵌入式智能家居系統(tǒng)網(wǎng)關(guān)設(shè)計[J].武漢理工大學(xué)學(xué)報(信息與管理工程版),2009,31(3):391~393

    [4]W.Richard Stevens.Advanced Programming in the UNIX Environment[M].Addison Wesley,2005:403~478

    [5]胡偉.SQLite在嵌入式系統(tǒng)上的實現(xiàn)研究[J].計算機與數(shù)字工程,2009,37(2):158~163

    [6]Lv Junyan,Xu Shiguo,Li Yijie.Application Research of Embedded Database SQLite[C]//Proceedings of 2009.IFITA InternationalForum on Information Technology and Applications,Volume 2.Chengdu,China,2009:539~543

    [7]劉昌盛,郭勇,謝習(xí)華.嵌入式Linux環(huán)境下MiniGUI的研究與移植[J].哈爾濱理工大學(xué)學(xué)報,2009(1):23~28

    [8]魯艷,馬旭東,問治國,等.基于 Linux-MiniGUI嵌入式系統(tǒng)監(jiān)控管理軟件開發(fā)[J].計算機技術(shù)與發(fā)展,2008(6):179~184

    猜你喜歡
    圖形用戶界面網(wǎng)關(guān)進程
    基于改進RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計
    債券市場對外開放的進程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    圖形用戶界面外觀設(shè)計專利保護問題探析——以“奇虎訴江民案”為例
    淺談圖形用戶界面(GUI)技術(shù)專利現(xiàn)狀
    電子測試(2018年9期)2018-06-26 06:46:34
    圖形用戶界面法律保護問題與對策
    LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
    移動通信(2015年18期)2015-08-24 07:45:08
    應(yīng)對氣候變化需要打通“網(wǎng)關(guān)”
    太陽能(2015年7期)2015-04-12 06:49:50
    一種實時高效的伺服控制網(wǎng)關(guān)設(shè)計
    社會進程中的新聞學(xué)探尋
    我國高等教育改革進程與反思
    东山县| 宁南县| 山阴县| 上犹县| 漳平市| 天全县| 阿荣旗| 璧山县| 博客| 遂川县| 乌鲁木齐县| 临安市| 万盛区| 舟曲县| 泽州县| 洛浦县| 手机| 澎湖县| 广灵县| 西乌珠穆沁旗| 莲花县| 大余县| 绥芬河市| 南漳县| 喀喇沁旗| 大兴区| 塔城市| 莫力| 长武县| 靖安县| 尖扎县| 瓮安县| 衡阳市| 抚松县| 虹口区| 宁蒗| 堆龙德庆县| 高密市| 通道| 慈利县| 洪洞县|