版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用基于ARMCortex-A8和Linux第九章與第十章
嵌入式系統(tǒng)高級(jí)應(yīng)用第九章與第十章嵌入式系統(tǒng)高級(jí)應(yīng)用第九章、QT圖形界面應(yīng)用程序開(kāi)發(fā)基礎(chǔ)QT/QT和SQLite第十章、嵌入式數(shù)據(jù)庫(kù)嵌入式數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)/SQLite關(guān)鍵技術(shù)VDBE/SQLite安裝與接口測(cè)試第9章QT圖形界面應(yīng)用程序開(kāi)發(fā)基礎(chǔ)與普通GUI不同的是,嵌入式GUI的要求是輕量級(jí)的,如在嵌入式linux中使用的圖形界面系統(tǒng)。同時(shí)嵌入式GUI還具有可定制,高可靠性,可裁減性等特點(diǎn)。嵌入式GUI的開(kāi)發(fā)系統(tǒng)主要有XWindow、MiniGUI、OpenGL、Qt等。按不同的版本發(fā)行:Qt商業(yè)版:提供給商業(yè)軟件開(kāi)發(fā)。它們提供傳統(tǒng)商業(yè)軟件發(fā)行版并且提供在協(xié)議有效期內(nèi)的免費(fèi)升級(jí)和技術(shù)支持服務(wù)。Qt開(kāi)源版:僅僅為了開(kāi)發(fā)自由和開(kāi)放源碼軟件,提供了和商業(yè)版本同樣的功能。GNU通用公共許可證下,它是免費(fèi)的。2009年3月發(fā)布的Qt4.5起,諾基亞為Qt增添開(kāi)源LGPL授權(quán)選擇。QtQt是一個(gè)跨平臺(tái)應(yīng)用程序和圖形用戶界面GUI開(kāi)發(fā)框架。使用Qt只需一次性開(kāi)發(fā)應(yīng)用程序,無(wú)須重新編寫(xiě)源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應(yīng)用程序。信號(hào)與插槽機(jī)制信號(hào)和插槽用于兩個(gè)對(duì)象之間的通信,信號(hào)和插槽(signal/slot)機(jī)制是Qt的核心特征,信號(hào)和插槽在Qt程序中,利用信號(hào)(signal)和插槽(slot)機(jī)制進(jìn)行對(duì)象間的通信signal和slot機(jī)制真正實(shí)現(xiàn)了封裝的概念,slot除了接收signal之外和其它的成員函數(shù)沒(méi)有什么不同,而且signal和slot之間也不是一一對(duì)應(yīng)的。事件處理的方式也是回調(diào)
當(dāng)對(duì)象狀態(tài)發(fā)生改變的時(shí)候,發(fā)出signal通知所有的slot接收signal,盡管它并不知道哪些函數(shù)定義了slot,而slot也同樣不知道要接收怎樣的signal下面舉例來(lái)說(shuō)明信號(hào)/插槽機(jī)制。
#include<QObject>classCounter:publicQObject{Q_OBJECTpublic:Counter(){m_value=0;}intvalue()const{returnm_value;}publicslots:voidsetValue(intvalue);signals:voidvalueChanged(intnewValue);private:intm_value;};在聲明信號(hào)/插槽后,使用connect()函數(shù)將它們關(guān)聯(lián)起來(lái)。Connect函數(shù)原型如下:boolQObject::connect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*slot)[static]下面給出一個(gè)例子予以說(shuō)明。Countera,b;QObject::connect(&a,&Counter::valueChanged,&b,&Counter::setValue);a.setValue(18);//a.value()==18,b.value()==18b.setValue(42);//a.value()==18,b.value()==42Counter類通過(guò)發(fā)射信號(hào)valueChanged來(lái)通知其他對(duì)象它的狀態(tài)發(fā)生了變化,同時(shí)該類還具有一個(gè)插槽setValue,其他對(duì)象可以發(fā)信號(hào)給這個(gè)插槽。插槽setValue的定義如下:voidCounter::setValue(intvalue){if(value!=m_value){m_value=value;emitvalueChanged(value);}}當(dāng)信號(hào)與插槽沒(méi)有必要繼續(xù)保持關(guān)聯(lián)時(shí),用戶可以使用disconnect()函數(shù)來(lái)斷開(kāi)連接。其定義如下所示:boolQObject::disconnect(constQObject*sender,constchar*signal,constObject*receiver,constchar*slot)[static]這個(gè)函數(shù)斷開(kāi)發(fā)射者中的信號(hào)與接收者中的插槽函數(shù)之間的關(guān)聯(lián)。9.4.1Helloworld程序新建一個(gè)helloworld項(xiàng)目,該項(xiàng)目使用的類信息中將基類選擇為QDialog。項(xiàng)目構(gòu)成如下圖所示。圖9-4helloworld項(xiàng)目構(gòu)成在源文件Main.cpp中輸入源碼,如下:#include<qapplication.h>#include<qlabel.h>intmain(intargc,char**argv){QApplicationa(argc,argv);//創(chuàng)建了一個(gè)QApplication類的對(duì)象aQLabel*hello=newQLabel("Helloworld!",0);//創(chuàng)建了一個(gè)靜態(tài)文本,將label設(shè)置為“Helloworld!”hello->show();//調(diào)用show()方法使窗口部件可見(jiàn)returna.exec();//exec()中qt接收并處理用戶和系統(tǒng)的事件,并且把它們傳遞給適當(dāng)?shù)拇翱诓考Qt數(shù)據(jù)庫(kù)應(yīng)用Qt中的QtSql模塊提供了對(duì)數(shù)據(jù)庫(kù)的支持,該模塊中的眾多類基本上可以分為三層,分別是驅(qū)動(dòng)層、SQL接口層和用戶接口層。除了QSqlQuery類外,Qt還提供了三種用于訪問(wèn)數(shù)據(jù)庫(kù)的高層SQL模型,如表9-3所示。Qt中使用了這些模型來(lái)避免使用SQL語(yǔ)句,為用戶提供了更簡(jiǎn)便的可視化數(shù)據(jù)庫(kù)操作及數(shù)據(jù)顯示模型,有效的減了開(kāi)發(fā)工作量。(本節(jié)有微課)SQL模型第10章SQLite數(shù)據(jù)庫(kù)嵌入式數(shù)據(jù)庫(kù)系統(tǒng)是指支持移動(dòng)計(jì)算或某種特定計(jì)算模式的數(shù)據(jù)庫(kù)管理系統(tǒng),它通常與操作系統(tǒng)和具體應(yīng)用集成在一起,運(yùn)行在智能型嵌入式設(shè)備或移動(dòng)設(shè)備上。由于嵌入式數(shù)據(jù)庫(kù)系統(tǒng)總是與移動(dòng)計(jì)算相結(jié)合,所以通常情況下嵌入式數(shù)據(jù)庫(kù)也被稱為嵌入式移動(dòng)數(shù)據(jù)庫(kù)。嵌入式數(shù)據(jù)庫(kù)系統(tǒng)具備了如下主要特點(diǎn):(1)嵌入性(2)移植性(3)安全性(4)實(shí)時(shí)性(5)可靠性(6)主動(dòng)性嵌入式數(shù)據(jù)庫(kù)的分類方法很多,根據(jù)其嵌入的對(duì)象不同分為:面向軟件的嵌入式數(shù)據(jù)庫(kù)、面向設(shè)備的嵌入式數(shù)據(jù)庫(kù)、內(nèi)存數(shù)據(jù)庫(kù)等。也可以根據(jù)其應(yīng)用的不同分為:普通嵌入式數(shù)據(jù)庫(kù)、嵌入式移動(dòng)數(shù)據(jù)庫(kù)、小型架構(gòu)數(shù)據(jù)庫(kù)等。在眾多的數(shù)據(jù)庫(kù)中,如何選擇適用于嵌入式系統(tǒng)的數(shù)據(jù)庫(kù)呢?嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境決定了其對(duì)數(shù)據(jù)庫(kù)需求的要素:(1)體積較小(2)功能齊備(3)代碼開(kāi)源(4)性能可靠嵌入式數(shù)據(jù)庫(kù)的系統(tǒng)結(jié)構(gòu)嵌入式數(shù)據(jù)庫(kù)通常與操作系統(tǒng)和具體應(yīng)用集成在一起,而嵌入式操作系統(tǒng)種類繁多、系統(tǒng)特點(diǎn)不一,從而導(dǎo)致嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用環(huán)境也復(fù)雜多樣。因此,嵌入式數(shù)據(jù)庫(kù)沒(méi)有一個(gè)比較固定的模式,其結(jié)構(gòu)和采用的技術(shù)也因?yàn)椴煌男枨蠖喾N多樣??偟膩?lái)說(shuō),嵌入式數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)可以分為外部接口和內(nèi)部處理兩大模塊,嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)除了具備傳統(tǒng)數(shù)據(jù)庫(kù)功能外,一個(gè)嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)管理系統(tǒng)還具有以下特點(diǎn):(1)數(shù)據(jù)庫(kù)狀態(tài)的確定性(2)事務(wù)和數(shù)據(jù)都具有時(shí)限性
(3)高效的實(shí)時(shí)壓縮算法(4)系統(tǒng)的可定制性嵌入式移動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)Oracle
Lite
SQLiteSQLite是一個(gè)開(kāi)源的、內(nèi)嵌式的關(guān)系型數(shù)據(jù)庫(kù)。它是D.RichardHipp采用C語(yǔ)言開(kāi)發(fā)出來(lái)的完全獨(dú)立的,不具有外部依賴性的嵌入式數(shù)據(jù)庫(kù)引擎。SQLite工具命令行Shell(CommandLineShellForSQLite)數(shù)據(jù)分析器(Sqlite3_analyzer)RBU(ResumableBulkUpdate)數(shù)據(jù)庫(kù)文件比較程序(SQLiteDatabaseDiff)數(shù)據(jù)庫(kù)哈希(DatabaseHash,Dbhash)FossilSQLite存檔程序(SQLiteArchiver)SQLite的體系結(jié)構(gòu)Sqlite主要由核心(core),后端(backend)和附件(accessories)三個(gè)子系統(tǒng)組成。SQLite通過(guò)利用虛擬機(jī)(也叫虛擬數(shù)據(jù)庫(kù)引擎(VDBE)),使調(diào)試、修改和擴(kuò)展SQLite的核心變得更加方便。虛擬數(shù)據(jù)庫(kù)引擎(VDBE)VDBE程序執(zhí)行原理及實(shí)例研究我們可以通過(guò)使用sqlite命令行工具看到VDBE程序:首先使用sqlite在一個(gè)空的數(shù)據(jù)庫(kù)中創(chuàng)建表;然后改變sqlite的輸出格式,使用.explain命令導(dǎo)出VDBE程序;最后,輸入上文的insert語(yǔ)句,并在語(yǔ)句前面加上explain關(guān)鍵字,關(guān)鍵字explain使得只打印出VDBE程序,但并不執(zhí)行。SQLite安裝安裝例子從功能的角度來(lái)區(qū)分,SQLite的API可分為兩類:核心API和擴(kuò)充API。核心API主要包括連接數(shù)據(jù)庫(kù)、執(zhí)行SQL和遍歷結(jié)果集和一些功能函數(shù)。擴(kuò)充API提供不同的方法來(lái)擴(kuò)展SQLite,它向用戶提供創(chuàng)建自定義的SQL擴(kuò)展,并與SQLite本身的SQL相集成等功能。SQLiteC++接口及測(cè)試程序請(qǐng)查看本節(jié)微課本課小結(jié)Qt5是功能強(qiáng)大地新一代圖形界面設(shè)計(jì)程序。Qt5包含眾多的模塊、工具和插件,可以完成不同領(lǐng)域不同目的的設(shè)計(jì)要求。本課只介紹了Qt的基本概念和數(shù)據(jù)庫(kù)相關(guān)的知識(shí)。同時(shí)本課也介紹了嵌入式數(shù)據(jù)庫(kù)的功能,特點(diǎn)和SQLite數(shù)據(jù)庫(kù)的相關(guān)情況。當(dāng)前嵌入式系統(tǒng)軟件開(kāi)發(fā)的重要環(huán)節(jié)之一就是對(duì)各種數(shù)據(jù)的管理,而嵌入式數(shù)據(jù)庫(kù)是實(shí)現(xiàn)該目標(biāo)的重要手段。SQLite數(shù)據(jù)庫(kù)的特點(diǎn)十分適合嵌入式產(chǎn)品開(kāi)發(fā),而且完全免費(fèi)開(kāi)源。值得在日常學(xué)習(xí)中多實(shí)踐多研究。本課實(shí)踐練習(xí)本課重難點(diǎn)學(xué)習(xí)內(nèi)容是Qt和SQLite的應(yīng)用,請(qǐng)安裝SQLite后在ARM開(kāi)發(fā)板上按照以下要求編寫(xiě)程序并移植。編寫(xiě)C程序,包含了創(chuàng)建數(shù)據(jù)庫(kù)、表、插入、查詢、刪除操作。要求如下:創(chuàng)建sqlite型數(shù)據(jù)庫(kù)db,建立含有3個(gè)屬性的person表,屬性分別為ID,firstname,lastname,主鍵為ID,請(qǐng)插入5條記錄,查詢ID=3的記錄輸出,刪除第五條記錄。第11章嵌入式系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)案例目錄11.1嵌入式系統(tǒng)設(shè)計(jì)方法介紹11.2基于ARM的嵌入式WEB服務(wù)器設(shè)計(jì)11.3物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)實(shí)例11.4智能無(wú)人值守實(shí)驗(yàn)室監(jiān)控系統(tǒng)設(shè)計(jì)實(shí)例
嵌入式系統(tǒng)設(shè)計(jì)方法介紹PartOne11.111.1.1傳統(tǒng)的嵌入式
系統(tǒng)設(shè)計(jì)方法在對(duì)目標(biāo)嵌入式系統(tǒng)提出系統(tǒng)定義方案后,要對(duì)系統(tǒng)實(shí)現(xiàn)進(jìn)行可行性分析和需求分析。在經(jīng)過(guò)嚴(yán)格分析論證后,進(jìn)入到系統(tǒng)總體設(shè)計(jì)方案階段,該階段除提出系統(tǒng)總體框架以外,還需進(jìn)行軟硬件劃分、處理器選型、操作系統(tǒng)選擇、開(kāi)發(fā)環(huán)境選擇等諸多工作。通常硬件和軟件的選擇包括:處理器、硬件部件、操作系統(tǒng)、編程語(yǔ)言、軟件開(kāi)發(fā)工具、硬件調(diào)試工具、軟件組件等。設(shè)計(jì)者在選擇處理器時(shí)要考慮的主要因素有以下幾個(gè):處理性能:技術(shù)指標(biāo):功耗:軟件支持工具:除此之外,硬件選擇要考慮的因素主要還包括:首先是需要考慮的是生產(chǎn)規(guī)模其次是需要考慮開(kāi)發(fā)的市場(chǎng)目標(biāo)最后只要可能,盡量選擇使用普通的硬件。嵌入式軟件的開(kāi)發(fā)主要采用的是“宿主機(jī)-目標(biāo)機(jī)”的交叉開(kāi)發(fā)模式。常見(jiàn)的軟件開(kāi)發(fā)步驟如下所示:(1)配置開(kāi)發(fā)環(huán)境及BSP開(kāi)發(fā)。選擇合適的開(kāi)發(fā)工具,針對(duì)嵌入式的硬件環(huán)境對(duì)操作系統(tǒng)進(jìn)行設(shè)置剪裁,另外增加BSP支持。(2)編寫(xiě)用戶程序和簡(jiǎn)單仿真調(diào)試。建立交叉編譯開(kāi)發(fā)環(huán)境,開(kāi)發(fā)用戶用戶程序,將其下載到目標(biāo)板上調(diào)試,應(yīng)用程序開(kāi)發(fā)完畢后,和文件系統(tǒng)一起次年改成文件系統(tǒng)的鏡像文件,然后通過(guò)仿真工具對(duì)系統(tǒng)進(jìn)行仿真和調(diào)試。(3)系統(tǒng)的下載和脫機(jī)運(yùn)行。當(dāng)仿真完成后,評(píng)價(jià)系統(tǒng)功能,如果達(dá)到開(kāi)發(fā)目標(biāo),則可把最終形成的文件下載并運(yùn)行。系統(tǒng)的集成測(cè)試是將開(kāi)發(fā)的硬件系統(tǒng)、軟件系統(tǒng)和其他相關(guān)因素綜合起來(lái),對(duì)整個(gè)產(chǎn)品進(jìn)行的全面測(cè)試。常見(jiàn)的測(cè)試方法有離線單板硬件測(cè)試和綜合測(cè)試兩種方法。11.1.2協(xié)同設(shè)計(jì)”概念的嵌入式系統(tǒng)設(shè)計(jì)方法軟硬件協(xié)同設(shè)計(jì)有如下一些基本要求:統(tǒng)一的軟硬件描述方式。這要求軟硬件支持統(tǒng)一的設(shè)計(jì)和分析工具及技術(shù),并允許在一個(gè)集成環(huán)境中仿真和評(píng)估系統(tǒng)軟硬件設(shè)計(jì),并且支持系統(tǒng)任務(wù)在軟硬件之間相互移植。交互式軟硬件劃分技術(shù)。這要求允許不同的軟硬件劃分設(shè)計(jì)進(jìn)行仿真和比較,并需要輔助最優(yōu)化決策及應(yīng)用實(shí)施。
完整的軟硬件模型基礎(chǔ)。這要求設(shè)計(jì)過(guò)程的每個(gè)階段都必須支持評(píng)價(jià),并支持階梯式的開(kāi)發(fā)方法與軟硬件整合。正確的驗(yàn)證方法。
基于ARM的嵌入式WEB服務(wù)器設(shè)計(jì)PartTwo11.2Web服務(wù)器本質(zhì)是一個(gè)軟件,通常在PC機(jī)或者工作站上運(yùn)行。嵌入式Web服務(wù)器是指將Web服務(wù)器引入到現(xiàn)場(chǎng)測(cè)試和控制設(shè)備中,在相應(yīng)的硬件平臺(tái)和軟件系統(tǒng)的支持下,使傳統(tǒng)的測(cè)試和控制設(shè)備轉(zhuǎn)變?yōu)橐缘讓油ㄐ艆f(xié)議,Web技術(shù)為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)測(cè)試和控制設(shè)備。嵌入式Web服務(wù)器采用的是B/S(Browser/Server)結(jié)構(gòu)?;贏RM的嵌入式WEB服務(wù)器的設(shè)計(jì)方案采用了三星公司的ARMcortexA8芯片S5PV210作為核心搭建嵌入式Web服務(wù)器硬件平臺(tái),在此基礎(chǔ)上進(jìn)行了嵌入式Linux內(nèi)核的移植和相關(guān)設(shè)備的驅(qū)動(dòng)程序開(kāi)發(fā),完成了嵌入式Web服務(wù)器的軟硬件環(huán)境搭建。然后在該系統(tǒng)平臺(tái)上實(shí)現(xiàn)了Boa服務(wù)器的移植,以及基于CGI(公共網(wǎng)關(guān)接口)的數(shù)據(jù)動(dòng)態(tài)交互等功能。11.2.1系統(tǒng)環(huán)境搭建系統(tǒng)平臺(tái)的搭建主要進(jìn)行了兩方面的工作:一是基于ARM的嵌入式硬件平臺(tái)的構(gòu)。二是嵌入式軟件平臺(tái)的構(gòu)建。這部分工作主要分為三個(gè)部分:①移植開(kāi)發(fā)bootloader作為系統(tǒng)引導(dǎo)程序,這里使用的是superboot作為本系統(tǒng)的bootloader;②移植Linux內(nèi)核到硬件平臺(tái),采用Linux內(nèi)核版本為L(zhǎng)inux-3.0.8;③開(kāi)發(fā)移植嵌入式平臺(tái)上各外設(shè)驅(qū)動(dòng)。ARMcortexA8核心板模塊框圖1.嵌入式硬件平臺(tái)介紹2.移植開(kāi)發(fā)bootloader-superboot的燒寫(xiě)11.2.2Web服務(wù)器原理從功能上來(lái)講,Web服務(wù)器監(jiān)聽(tīng)用戶端的服務(wù)請(qǐng)求,根據(jù)用戶請(qǐng)求的類型提供相應(yīng)的服務(wù)。用戶端使用Web瀏覽器和Web服務(wù)器通信,Web服務(wù)器在接收到用戶端的請(qǐng)求后,處理用戶請(qǐng)求并返回需要的數(shù)據(jù),這些數(shù)據(jù)通常以格式固定、含有文本和圖片的頁(yè)面出現(xiàn)在用戶端瀏覽器中,瀏覽器處理這些數(shù)據(jù)并提供給用戶。1.HTTP協(xié)議HTTP(超文本傳輸協(xié)議)協(xié)議是Web服務(wù)器與瀏覽器通信的協(xié)議,HTTP協(xié)議規(guī)定了發(fā)送和處理請(qǐng)求的標(biāo)準(zhǔn)方式,規(guī)定了瀏覽器和服務(wù)器之間傳輸?shù)南⒏袷郊案鞣N控制信息,從而定義了所有Web通信的基本框架。一個(gè)完整的HTTP事務(wù)由以下4個(gè)階段組成:(1)客戶與服務(wù)器建立TCP連接;(2)客戶向服務(wù)器發(fā)送請(qǐng)求;(3)如果請(qǐng)求被接受,則由服務(wù)器發(fā)送應(yīng)答,在應(yīng)答中包括狀態(tài)碼和所要的文件(一般是HTML文檔);(4)客戶與服務(wù)器關(guān)閉連接。2.CGI原理CGI(通用網(wǎng)關(guān)接口)規(guī)定了Web服務(wù)器調(diào)用其他可執(zhí)行程序(CGI程序)的接口協(xié)議標(biāo)準(zhǔn)。Web服務(wù)器通過(guò)調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,也就是CGI程序接受Web瀏覽器發(fā)送給Web服務(wù)器的信息并進(jìn)行處理,然后將響應(yīng)結(jié)果再回送給Web服務(wù)器及Web瀏覽器。CGI程序一般完成Web網(wǎng)頁(yè)中表單(Form)數(shù)據(jù)的處理、數(shù)據(jù)庫(kù)查詢和實(shí)現(xiàn)與傳統(tǒng)應(yīng)用系統(tǒng)的集成等工作。11.2.3嵌入式WEB服務(wù)器設(shè)計(jì)1.嵌入式WEB服務(wù)器的工作流程一個(gè)經(jīng)典的嵌入式WEB服務(wù)器系統(tǒng)軟件主要由HTTPWEBServer守護(hù)任務(wù)模塊、CGI程序和外部通信模塊3部分組成。2.嵌入式WEB服務(wù)器選擇ARM+Linux下主要有三個(gè)Web服務(wù)器:httpd、thttpd和boa。Httpd是最簡(jiǎn)單的一個(gè)Web服務(wù)器,它的功能最弱,不支持認(rèn)證,不支持CGI。Thttpd和boa都支持認(rèn)證,都支持CGI等,但是boa的功能更全,應(yīng)用范圍更廣。因此這里通過(guò)移植boaWeb服務(wù)器來(lái)實(shí)現(xiàn)嵌入式Web服務(wù)器功能。CGI程序通常分為以下兩部分:--根據(jù)POST方法或GET方法從提交的表單中接收數(shù)據(jù)。--用printf()函數(shù)來(lái)產(chǎn)生HTML源代碼,并將經(jīng)過(guò)解碼后的數(shù)據(jù)正確地返回給瀏覽器。3.CGI程序設(shè)計(jì)客戶端與服務(wù)器通過(guò)CGI標(biāo)準(zhǔn)接口通信示意圖CGI程序主要分為以下幾部分:(1)接收客戶端提交的數(shù)據(jù)。以GET方法提交數(shù)據(jù),則客戶端提交的數(shù)據(jù)被保存在QUERY_STRING環(huán)境變量中,通過(guò)調(diào)用函數(shù)getenv("QUERY_STRING")來(lái)讀取數(shù)據(jù)。(2)URL編碼的解碼。解碼即編碼的逆過(guò)程。在程序中,只要對(duì)于由①所述方法提取的數(shù)據(jù)進(jìn)行URL編碼逆操作,就可以得到客戶端傳過(guò)來(lái)的數(shù)據(jù)。最后將解析出來(lái)的name/value保存在一個(gè)自定義的結(jié)構(gòu)體中。(3)根據(jù)上一部分解析出來(lái)的變量/值對(duì),判斷客戶端請(qǐng)求的含義,利用Linux下進(jìn)程間通信機(jī)制傳送消息給相應(yīng)的應(yīng)用程序主進(jìn)程,4.Web服務(wù)器的配置boa服務(wù)器的移植流程物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)實(shí)例PartThree11.311.3.1背景介紹-環(huán)境監(jiān)測(cè)系統(tǒng)平臺(tái)整體架構(gòu)
系統(tǒng)總體方案主要采用分層設(shè)計(jì)方法,自下而上分為數(shù)據(jù)采集層、通信層、異構(gòu)數(shù)據(jù)信息層、統(tǒng)一化應(yīng)用接口層和多用戶管理層。數(shù)據(jù)采集層主要由分布在被測(cè)濕地環(huán)境中的眾多ZigBee終端節(jié)點(diǎn)組成,測(cè)量終端攜帶有水溫、濁度、PH值、溶氧等多種傳感器,能夠?qū)崟r(shí)不間斷的監(jiān)測(cè)濕地各種關(guān)鍵參數(shù),它們和網(wǎng)關(guān)節(jié)點(diǎn)一起組成了具備高動(dòng)態(tài)自組網(wǎng)絡(luò)模式的監(jiān)測(cè)體系。該檢測(cè)體系具備較小的網(wǎng)絡(luò)開(kāi)銷,可實(shí)現(xiàn)網(wǎng)絡(luò)快速構(gòu)建和數(shù)據(jù)端到端的實(shí)時(shí)傳輸。整個(gè)系統(tǒng)采用的是查詢和中斷相結(jié)合的模式,大多數(shù)情況下,系統(tǒng)中的大部分硬件處于睡眠模式,當(dāng)濕地環(huán)境發(fā)生異常時(shí),ZigBee終端節(jié)點(diǎn)會(huì)被喚醒,將檢測(cè)環(huán)境數(shù)據(jù)和自己的節(jié)點(diǎn)信息如節(jié)點(diǎn)ID、電池狀況等經(jīng)路由計(jì)算后發(fā)送到網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)預(yù)處理工作,并將數(shù)據(jù)通過(guò)GPRS發(fā)送到用戶終端或者監(jiān)控中心數(shù)據(jù)庫(kù),由監(jiān)控中心數(shù)據(jù)庫(kù)產(chǎn)生數(shù)據(jù)分析圖表和報(bào)表輸出。用戶可通過(guò)INTERNET訪問(wèn)監(jiān)控中心數(shù)據(jù)庫(kù)圖表系統(tǒng)獲取實(shí)時(shí)信息。管理者也可通過(guò)GPRS模塊和網(wǎng)關(guān)主動(dòng)查詢節(jié)點(diǎn)測(cè)量數(shù)據(jù)和控制節(jié)點(diǎn)功用。通信層完成監(jiān)測(cè)系統(tǒng)內(nèi)數(shù)據(jù)的傳輸,主要涵蓋三個(gè)層次的傳輸任務(wù):(1)ZigBee協(xié)調(diào)器建立和維護(hù)ZigBee網(wǎng)絡(luò)的運(yùn)行,從監(jiān)測(cè)終端節(jié)點(diǎn)接收實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù),并發(fā)送到網(wǎng)關(guān)節(jié)點(diǎn)單元;(2)工作于濕地環(huán)境中的網(wǎng)關(guān)節(jié)點(diǎn)通過(guò)GPRS網(wǎng)絡(luò)與監(jiān)控中心服務(wù)器實(shí)現(xiàn)信息交互,,能夠通過(guò)ZigBee協(xié)調(diào)器與眾多終端節(jié)點(diǎn)構(gòu)成網(wǎng)絡(luò)開(kāi)銷小,結(jié)構(gòu)動(dòng)態(tài)可變化的無(wú)線自組網(wǎng)絡(luò)。(3)監(jiān)控中心服務(wù)器對(duì)接收到的數(shù)據(jù)主要進(jìn)行存儲(chǔ)、處理和分析等工作,把接收的終端監(jiān)測(cè)信息存儲(chǔ)到數(shù)據(jù)庫(kù)并可產(chǎn)生相應(yīng)圖表或者報(bào)表,另一方面亦可偵聽(tīng)來(lái)自因特網(wǎng)網(wǎng)絡(luò)上客戶端的連接,并與客戶端建立套接關(guān)系;同時(shí)亦可與移動(dòng)終端設(shè)備通過(guò)WIFI,3G網(wǎng)絡(luò)完成監(jiān)測(cè)數(shù)據(jù)實(shí)時(shí)通信。11.3.2.網(wǎng)關(guān)節(jié)點(diǎn)硬件設(shè)計(jì)方案(1)主控制器
根據(jù)網(wǎng)關(guān)節(jié)點(diǎn)的可靠性、數(shù)據(jù)處理能力等要求,網(wǎng)關(guān)節(jié)點(diǎn)主控制器采用了Samsung公司基于ARMCortex-A8處理器核的S5PV210處理器。在實(shí)際設(shè)計(jì)過(guò)程中,采用了“核心板+擴(kuò)展板”的模式進(jìn)行硬件平臺(tái)構(gòu)建。嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)的極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形用戶界面及標(biāo)準(zhǔn)化瀏覽器等。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟件固化以及應(yīng)用的專用性等方面有突出的特點(diǎn)。低端應(yīng)用以單片機(jī)或?qū)S糜?jì)算機(jī)為核心所構(gòu)成的可編程控制器的形式存在,一般沒(méi)有操作系統(tǒng)的支持,具有監(jiān)控、伺服、設(shè)備指示等功能,帶有明顯的電子系統(tǒng)設(shè)計(jì)特點(diǎn)。(2)ZigBee協(xié)調(diào)器Zigbee節(jié)點(diǎn)主要分為協(xié)調(diào)器(通用節(jié)點(diǎn))和傳感器節(jié)點(diǎn)兩種?;诔杀竞褪褂梅奖愕目紤],系統(tǒng)采用了DRF1601作為ZigBee協(xié)調(diào)器,它的主芯片是TI公司CC2530F256芯片
CC2530核心板協(xié)調(diào)器(通用節(jié)點(diǎn))和傳感器節(jié)點(diǎn)實(shí)物圖11.3.3系統(tǒng)軟件設(shè)計(jì)1.概述該網(wǎng)關(guān)系統(tǒng)的應(yīng)用程序分為兩大塊:運(yùn)行在ARM-Linux平臺(tái)上的上的嵌入式WEB服務(wù)器程序和運(yùn)行在模塊上的程序。本網(wǎng)關(guān)使用的嵌入式Web服務(wù)器包括核心部分和可裁減部分,核心部分包括HTTP請(qǐng)求解析器和模塊分析器。HTTP請(qǐng)求解析器負(fù)責(zé)接收客戶發(fā)送的HTTP請(qǐng)求報(bào)文,獲得客戶端信息,并把解析出來(lái)的結(jié)果保存到請(qǐng)求結(jié)構(gòu)中;模塊分析器根據(jù)配置信息調(diào)度其他模塊。模塊主要分為系統(tǒng)功能模塊和用戶功能模塊,一旦配置了系統(tǒng)功能模塊,該模塊就對(duì)服務(wù)器收到的請(qǐng)求進(jìn)行處理。系統(tǒng)功能模塊主要分為3個(gè)部分:文件系統(tǒng)訪問(wèn)模塊(針對(duì)靜態(tài)網(wǎng)頁(yè))、CGI處理模塊(針對(duì)動(dòng)態(tài)網(wǎng)頁(yè))、賦值處理(針對(duì)用戶控制作用)。Zigbee模塊程序也分為兩個(gè)部分:協(xié)調(diào)器程序部分和終端節(jié)點(diǎn)程序部分。這兩部分也被定義為zigbee網(wǎng)絡(luò)的上位機(jī)程序部分和下位機(jī)程序部分。11.3.4數(shù)據(jù)庫(kù)建設(shè)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)庫(kù)基礎(chǔ)信息數(shù)據(jù)庫(kù)監(jiān)測(cè)相關(guān)數(shù)據(jù)庫(kù)Office數(shù)據(jù)庫(kù)設(shè)備信息數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)部分實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)監(jiān)測(cè)相關(guān)數(shù)據(jù)基礎(chǔ)信息數(shù)據(jù)設(shè)備狀態(tài)數(shù)據(jù)異構(gòu)數(shù)據(jù)采集控制單元規(guī)范化、標(biāo)準(zhǔn)化處理中間件統(tǒng)一化應(yīng)用接口軟件app接口數(shù)據(jù)共享接口用戶管理接口實(shí)時(shí)數(shù)據(jù)歷史數(shù)據(jù)基礎(chǔ)信息聚類分析評(píng)估辦公信息自動(dòng)化應(yīng)用灰關(guān)聯(lián)及層次分析系統(tǒng)二次開(kāi)發(fā)服務(wù)查詢管理監(jiān)控服務(wù)幫助服務(wù)分配異構(gòu)數(shù)據(jù)信息層多用戶管理層中心服務(wù)器視圖移動(dòng)終端設(shè)備視圖相關(guān)監(jiān)測(cè)管理子系統(tǒng)設(shè)備管理子系統(tǒng)策略分析管理子系統(tǒng)Office管理子系統(tǒng)實(shí)時(shí)監(jiān)測(cè)信息管理子系統(tǒng)設(shè)備狀態(tài)其他數(shù)據(jù)環(huán)境參數(shù)其他參數(shù)PH值電導(dǎo)率溶氧溫度濁度污染指標(biāo)電源狀態(tài)網(wǎng)關(guān)狀態(tài)傳感器狀態(tài)網(wǎng)絡(luò)狀態(tài)地理信息臨時(shí)數(shù)據(jù)歷史數(shù)據(jù)輔助參數(shù)根據(jù)監(jiān)測(cè)數(shù)據(jù)信息量的大小,冗余性和安全性的考慮,這里將數(shù)據(jù)庫(kù)建設(shè)分為兩個(gè)部分:一是監(jiān)控中心數(shù)據(jù)庫(kù)建設(shè),要求服務(wù)器具有較
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)體員工勞動(dòng)合同樣本(三篇)
- 產(chǎn)業(yè)園裝修合同終止范例
- 大數(shù)據(jù)中心居間合同
- 醫(yī)藥代表傭金居間合同
- 化工原料居間服務(wù)合同模板
- 圖書(shū)快遞批量運(yùn)輸合同樣本
- 服裝面料物流采購(gòu)協(xié)議
- 服裝店裝修合同樣本及清單
- 便捷電子元器件居間協(xié)議
- 公寓裝修保修協(xié)議樣本
- 2023年大唐尿素投標(biāo)文件
- GB/T 6682-2008分析實(shí)驗(yàn)室用水規(guī)格和試驗(yàn)方法
- 《鋼鐵是怎樣煉成的》名著閱讀(精講課件) 初中語(yǔ)文名著導(dǎo)讀
- 縮窄性心包炎課件
- 《工程電磁場(chǎng)》配套教學(xué)課件
- 遼寧省錦州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 職位管理手冊(cè)
- IPQC首檢巡檢操作培訓(xùn)
- 東南大學(xué) 固體物理課件
- 行政人事助理崗位月度KPI績(jī)效考核表
- 紀(jì)檢監(jiān)察機(jī)關(guān)派駐機(jī)構(gòu)工作規(guī)則全文詳解PPT
評(píng)論
0/150
提交評(píng)論