摘要:對信息發(fā)布系統(tǒng)現(xiàn)狀進行研究,結(jié)合嵌入式互聯(lián)網(wǎng)技術(shù),提出一種嵌入式網(wǎng)絡信息發(fā)布系統(tǒng)的解決方案,并介紹了信息發(fā)布管理平臺和嵌入式終端的軟件設(shè)計。信息發(fā)布管理平臺基于Web開發(fā),通過管理平臺可以對每個終端進行實時監(jiān)控。數(shù)據(jù)存儲服務器是相對獨立的,主要用于存儲發(fā)布的數(shù)據(jù)信息,并最終根據(jù)終端的要求將信息推送到終端上。執(zhí)行終端采用嵌入式芯片,為了節(jié)約硬件系統(tǒng)資源的開銷,在嵌入式芯片上移植μC/OS-Ⅱ操作系統(tǒng),并且定制HTTP超文本傳輸協(xié)議。
關(guān)鍵詞:信息發(fā)布;嵌入式;互聯(lián)網(wǎng)技術(shù);Web
0 引言
隨著信息時代、數(shù)字時代的到來,尤其是互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡設(shè)備與系統(tǒng)體現(xiàn)出高效、靈活、可移植性強的特點。嵌入式技術(shù)也有著飛速的發(fā)展,從硬件方面來看,嵌入式微處理器的性能提升到了一個新的高度。從軟件方面來看,它已經(jīng)擁有了高效的操作系統(tǒng),方便開發(fā)人員進行軟件個性化設(shè)計。嵌入式系統(tǒng)在的實踐過程中,具有體積小,攜帶方便,便于安裝調(diào)試和價格低廉等優(yōu)點,從而使嵌入式系統(tǒng)滿足了多數(shù)的消費電子、通信、工業(yè)控制等領(lǐng)域的要求。
為了實現(xiàn)面向公眾的信息傳遞,人們采用了告機、單宣傳畫、工控廣機廣告機等方式。但這些信息發(fā)布方式,存在著信息量局限,成本高,更換內(nèi)容困難等缺點?;趯κ袌龅睦斫?,并結(jié)合先進的嵌入式互聯(lián)網(wǎng)視頻技術(shù),本文介紹了一種嵌入式網(wǎng)絡信息發(fā)布系統(tǒng),闡述了服務器、數(shù)據(jù)庫和嵌入式終端解決方案,以及服務器與數(shù)據(jù)庫的交互、服務器與終端的通信協(xié)議等關(guān)鍵單元技術(shù),并詳細介紹終端的軟件設(shè)計思想。
1 系統(tǒng)組成
該系統(tǒng)分為網(wǎng)絡信息發(fā)布管理平臺和遠程嵌入式終端兩部分。系統(tǒng)的軟硬件部署,主要分為三個部分:嵌入式終端,發(fā)布系統(tǒng)服務器和內(nèi)容服務器。其中,在實際應用中,發(fā)布系統(tǒng)服務器和內(nèi)容服務器可以合并為同一臺服務器,如圖1所示。
1.1 硬件方面
1.1.1 管理平臺硬件環(huán)境
一臺Windows操作系統(tǒng)的計算機,配置Java開發(fā)運行環(huán)境,并且裝有Apache Tomcat 6.0服務器和MySQL5.1數(shù)據(jù)庫等軟件。
1.1.2 嵌入式硬件環(huán)境
嵌入式芯片需滿足多媒體開發(fā)和網(wǎng)絡開發(fā)的基本要求。
(1)支持視頻格式、音頻格式、圖片格式的編碼和解碼;
(2)支持視頻圖像和音頻輸出接口;
(3)支持USB接口;
(4)支持HTTP協(xié)議;
(5)支持10 M/100 M網(wǎng)卡。
1.2 軟件方面
在這種系統(tǒng)軟件設(shè)計中,信息發(fā)布管理平臺基于Web開發(fā),采用了目前常用的Java+Struts+Hibernate方法。struts框架定義了管理平臺系統(tǒng)的結(jié)構(gòu)(表示層)和頁面之間流轉(zhuǎn)的規(guī)則(業(yè)務層)。Hibernate將數(shù)據(jù)庫連接抽象化,使得開發(fā)過程中對數(shù)據(jù)庫的使用更加簡潔方便,同時,Hibernate降低了更換不同類型數(shù)據(jù)庫所用的開發(fā)時間?;贘ava語言編寫服務端代碼,開發(fā)效率高,面向?qū)ο蟮脑O(shè)計方法提高了代碼的可維護性。該模塊還使用了較多的JS代碼和基于Ajax的技術(shù)來提高客戶端頁面刷新和頁面功能;數(shù)據(jù)庫服務器的設(shè)計使用瑞典MySQL AB公司開發(fā)的小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL5.1,它為Java語言提供了豐富的API,方便Java應用程序?qū)ζ湓L問。
嵌入式終端操作系統(tǒng)采用μC/OS-Ⅱ操作系統(tǒng)。μC/OS-Ⅱ是一個源碼開放的搶占式實時操作系統(tǒng)。它的內(nèi)核短小精悍、可裁減、執(zhí)行時間確定。系統(tǒng)大部分代碼采用C語言編寫,與硬件有關(guān)的部分都集中在固定的文件中,移植相當方便,可應用于目前大多數(shù)型號的CPU。但是,沒有集成網(wǎng)絡協(xié)議,所以,開發(fā)人員使用該操作系統(tǒng)進行網(wǎng)絡程序開發(fā)時,需要自行定制網(wǎng)絡協(xié)議。
2 信息發(fā)布系統(tǒng)的單元交互
嵌入式網(wǎng)絡信息發(fā)布系統(tǒng)單元之間的通信可以分為兩層:服務器與數(shù)據(jù)庫交互、服務器與遠程終端通信。
2.1 服務器與數(shù)據(jù)庫交互層
該系統(tǒng)的服務器具有遠程監(jiān)控服務功能,包括Web服務器、文件服務器、本地控制服務器。其中,Web服務器提供信息網(wǎng)絡發(fā)布系統(tǒng)的用戶交互界面和業(yè)務邏輯處理模塊的運行環(huán)境;文件服務器主要提供系統(tǒng)管理的視頻、圖像等多媒體信息的存取服務;本地控制服務器主要管理轄區(qū)內(nèi)所有顯示終端的通信分發(fā)。
在服務器上編寫了具有人機交互功能的JSP靜態(tài)管理平臺界面,用戶可以通過該界面方便地進行圖形化操作,并將終端反饋的信息顯示在該界面,方便用戶獲取終端的運行情況,還為用戶提供有用戶權(quán)限管理、內(nèi)容管理、播放控制等模塊的監(jiān)控頁面。用戶只需登錄該管理平臺界面,即可通過網(wǎng)絡對遠程終端進行監(jiān)控。
服務器對數(shù)據(jù)庫的訪問采用JDBC兩層模型方法。JDBC是一種用于執(zhí)行SQL語句的Java API,利用這種方法可以方便地與數(shù)據(jù)庫建立連接,發(fā)送操作數(shù)據(jù)庫的語句,并處理結(jié)果。兩層模型可使得Java Applet或應用程序?qū)⒅苯优c數(shù)據(jù)庫進行交互。
服務器與數(shù)據(jù)庫服務器的數(shù)據(jù)交互主要用于存取終端基本狀態(tài)信息。例如:網(wǎng)絡連接是否正常,連接在同一個服務器的各個終端ID號,終端硬盤的空間大小,硬盤中的內(nèi)容等。指令的生成依賴于該模塊在數(shù)據(jù)庫中所查詢到的終端狀態(tài)標志位。當服務器對某終端進行相應的控制操作時,首先從數(shù)據(jù)庫中讀取出該終端當前的狀態(tài)標志位,根據(jù)這些標志位進行邏輯判斷,生成本次控制操作所需要發(fā)送的XML文本指令。
2.2 服務器與遠程終端通信層
服務器與遠程終端的通信采用HTTP超文本傳輸協(xié)議,終端定時(初定8 s)發(fā)送請求到服務器。服務器接受到請求后,將相應的XML文本語言形式的控制操作指令發(fā)送到連接的網(wǎng)絡端口,遠程終端讀取端口的數(shù)據(jù)進行解析,完成本次控制操作。如果一定時間內(nèi)(初定1 min)沒有收到終端的消息,可斷定出現(xiàn)網(wǎng)絡異常(終端離線)。
終端系統(tǒng)正常啟動之后,系統(tǒng)將自動分配一段內(nèi)存空間,一部分用來存儲請求信息和控制指令,一部分作為消息隊列。然后,終端的狀態(tài)信息作為請求信息循環(huán)向指定IP地址(服務器)的端口(初定80端口)發(fā)送。終端請求成功后,服務器讀取端口接收的請求信息,將請求信息解析后作為終端的當前狀態(tài)信息,更新數(shù)據(jù)庫中的狀態(tài)標志位。同時,服務器也可以通過HTTP傳輸協(xié)議發(fā)送XML語言結(jié)構(gòu)的文本指令給終端,終端接收到指令后進行解析,并對終端進行相應的控制操作。
3 信息發(fā)布系統(tǒng)的關(guān)鍵技術(shù)
嵌入式硬件的系統(tǒng)頻率、存儲空間、緩存大小、編碼和解碼等性能已經(jīng)達到了較高的技術(shù)水平。那么,對于嵌入式芯片在不同領(lǐng)域中的應用更依靠于操作系統(tǒng)和靈活的軟件設(shè)計思想來實現(xiàn)。
在該系統(tǒng)的設(shè)計中,服務器的設(shè)計需要考慮服務器與數(shù)據(jù)庫和終端的交互協(xié)議,當通過服務器控制多臺終端的時候,對于指令分發(fā)、數(shù)據(jù)包傳輸、以及數(shù)據(jù)庫的更新都存在著時序和邏輯問題。為了節(jié)省系統(tǒng)內(nèi)存的開銷,也要保證系統(tǒng)的實時性和可靠性,所以終端的操作系統(tǒng)選擇μC/OS-Ⅱ。該操作系統(tǒng)沒有集成網(wǎng)絡協(xié)議,所以結(jié)合其性能條件定制適合它的網(wǎng)絡傳輸協(xié)議。
3.1 終端網(wǎng)絡程序的設(shè)計
遠程終端的執(zhí)行效果只有到現(xiàn)場才可以觀察,那么,保證終端接收指令和對指令響應的可靠性是十分必要的。HTTP協(xié)議是一種文本協(xié)議,文本協(xié)議通常是用ASCII符集編碼,具有理解簡單,擴展擴充方便,容錯性較強,可靠性高等優(yōu)點。開發(fā)人員可以方便地進行協(xié)議的定制,節(jié)省了軟件調(diào)試時間,大大縮短了開發(fā)周期。因此,在該系統(tǒng)的操作系統(tǒng)中定制了HTTP超文本傳輸協(xié)議。
μC/OS-Ⅱ操作系統(tǒng)中創(chuàng)建一個系統(tǒng)網(wǎng)絡的入口函數(shù),在此函數(shù)中創(chuàng)建一個網(wǎng)絡后臺任務,該任務的主要功能是請求網(wǎng)絡連接,并接收來自服務器的指令。當終端系統(tǒng)初始化后,進入網(wǎng)絡后臺任務,循環(huán)向服務器發(fā)送HTTP請求,請求成功后,終端反饋信息到服務器。
系統(tǒng)軟件使用C語言編程,將HTTP協(xié)議封裝在結(jié)構(gòu)體中,用結(jié)構(gòu)體屬性字段來表示。
網(wǎng)絡端口的所有數(shù)據(jù)項,包括HTTP協(xié)議頭、控制指令、lP地址、端口號、端口信號量鎖等。HTTP協(xié)議的結(jié)構(gòu)體如下:
其中:http_Request[REQUEST_SIZE為HTTP協(xié)議頭字符串;http_Response為服務器發(fā)給終端的控制指令;httpWait為信號量。用信號量來實現(xiàn)網(wǎng)絡端口的互斥訪問。
在系統(tǒng)中,網(wǎng)絡管理平臺控制多個嵌入式終端時,通過網(wǎng)絡端口與每個終端進行網(wǎng)絡連接通信。網(wǎng)絡端口是獨占性的端口,所以,選擇信號量機制對網(wǎng)絡端口的訪問進行互斥鎖處理。
HTTPTcpConnection_t為網(wǎng)絡端口連接信息,它也是一個結(jié)構(gòu)體,屬性字段包括服務器的IP地址、網(wǎng)絡端口號、以及終端請求信息等。代碼如下:
3.2 多任務間通信
μC/OS-Ⅱ是多任務機制操作系統(tǒng),最多可支持64個任務,任務優(yōu)先級從0~63,對這樣的多任務操作系統(tǒng)來說,任務間的通信是必不可少的。μC/OS-Ⅱ中提供了4種通信對象,分別是信號量、郵箱、消息隊列和事件。所有這些同步對象都有創(chuàng)建、等待、發(fā)送、查詢的接口用于實現(xiàn)任務間的通信。
消息機制是創(chuàng)建一個消息隊列,一個任務將消息發(fā)送到該消息隊列中,另一個任務在隊列的另一端接收此消息。消息隊列是在消息的傳輸過程中保存消息的容器,它的主要目的是為消息的傳遞提供路徑;如果發(fā)送消息時接收者沒有響應,消息隊列會保留消息,直到可以成功地傳遞給接收者。
消息機制具有靈活性、可擴展性和異步性等優(yōu)點。因此,該系統(tǒng)采用消息隊列的方式實現(xiàn)UI/User層程序和應用程序之間的通信,如圖2所示。
消息的結(jié)構(gòu)體如下:
在消息結(jié)構(gòu)體中:
app_id:接受此消息的應用程序或樁函數(shù)。
msg_type:消息類型。系統(tǒng)中的消息設(shè)計有兩種類型。一是命令消息,應用程序接收到來自UI/User程序的命令消息后,對其進行解析,然后,逐個執(zhí)行消息中的命令集合,并反饋執(zhí)行結(jié)果;二是通知消息,用來通知UI/User命令在應用程序中得到響應。
msg_id:消息的ID號。
msg_value:消息的參數(shù),存放指針的地址。
下面以命令消息處理過程為例,介紹消息的發(fā)送、接收和消息相應操作過程,如圖3所示。其中,應用程序管理器是一個消息處理中心,它為UI/User層提供了一些API函數(shù),用來為應用程序接受輸入命令和分發(fā)命令。同時,它還接收來自應用程序的命令執(zhí)行結(jié)果和通知消息,并把這些消息發(fā)送給相應的消息處理函數(shù)。
4 結(jié)語
現(xiàn)場調(diào)試中發(fā)現(xiàn),工控機信息發(fā)布系統(tǒng)的故障率為5%,而本文設(shè)計的嵌入式信息發(fā)布系統(tǒng)的故障率為8%。從價格上進行比較,工控機信息發(fā)布系統(tǒng)價格是嵌入式信息發(fā)布系統(tǒng)價格的10倍左右。顯然,該系統(tǒng)具有更好的性價比,且使用簡單,操作方便。隨著嵌入式系統(tǒng)軟件的PC化,它將成為一種理想的信息發(fā)布系統(tǒng),有著十分誘人的應用前景。