《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng)設(shè)計(jì)
嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng)設(shè)計(jì)
現(xiàn)代電子技術(shù)
張忠亮,傅志中,張翰進(jìn),張 冉
摘要: 對(duì)信息發(fā)布系統(tǒng)現(xiàn)狀進(jìn)行研究,結(jié)合嵌入式互聯(lián)網(wǎng)技術(shù),提出一種嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng)的解決方案,并介紹了信息發(fā)布管理平臺(tái)和嵌入式終端的軟件設(shè)計(jì)。信息發(fā)布管理平臺(tái)基于Web開(kāi)發(fā),通過(guò)管理平臺(tái)可以對(duì)每個(gè)終端
Abstract:
Key words :

摘要:對(duì)信息發(fā)布系統(tǒng)現(xiàn)狀進(jìn)行研究,結(jié)合嵌入式互聯(lián)網(wǎng)技術(shù),提出一種嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng)的解決方案,并介紹了信息發(fā)布管理平臺(tái)和嵌入式終端的軟件設(shè)計(jì)。信息發(fā)布管理平臺(tái)基于Web開(kāi)發(fā),通過(guò)管理平臺(tái)可以對(duì)每個(gè)終端進(jìn)行實(shí)時(shí)監(jiān)控。數(shù)據(jù)存儲(chǔ)服務(wù)器是相對(duì)獨(dú)立的,主要用于存儲(chǔ)發(fā)布的數(shù)據(jù)信息,并最終根據(jù)終端的要求將信息推送到終端上。執(zhí)行終端采用嵌入式芯片,為了節(jié)約硬件系統(tǒng)資源的開(kāi)銷(xiāo),在嵌入式芯片上移植μC/OS-Ⅱ操作系統(tǒng),并且定制HTTP超文本傳輸協(xié)議。
關(guān)鍵詞:信息發(fā)布;嵌入式;互聯(lián)網(wǎng)技術(shù);Web

0 引言
    隨著信息時(shí)代、數(shù)字時(shí)代的到來(lái),尤其是互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)設(shè)備與系統(tǒng)體現(xiàn)出高效、靈活、可移植性強(qiáng)的特點(diǎn)。嵌入式技術(shù)也有著飛速的發(fā)展,從硬件方面來(lái)看,嵌入式微處理器的性能提升到了一個(gè)新的高度。從軟件方面來(lái)看,它已經(jīng)擁有了高效的操作系統(tǒng),方便開(kāi)發(fā)人員進(jìn)行軟件個(gè)性化設(shè)計(jì)。嵌入式系統(tǒng)在的實(shí)踐過(guò)程中,具有體積小,攜帶方便,便于安裝調(diào)試和價(jià)格低廉等優(yōu)點(diǎn),從而使嵌入式系統(tǒng)滿(mǎn)足了多數(shù)的消費(fèi)電子、通信、工業(yè)控制等領(lǐng)域的要求。
    為了實(shí)現(xiàn)面向公眾的信息傳遞,人們采用了告機(jī)、單宣傳畫(huà)、工控廣機(jī)廣告機(jī)等方式。但這些信息發(fā)布方式,存在著信息量局限,成本高,更換內(nèi)容困難等缺點(diǎn)?;趯?duì)市場(chǎng)的理解,并結(jié)合先進(jìn)的嵌入式互聯(lián)網(wǎng)視頻技術(shù),本文介紹了一種嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng),闡述了服務(wù)器、數(shù)據(jù)庫(kù)和嵌入式終端解決方案,以及服務(wù)器與數(shù)據(jù)庫(kù)的交互、服務(wù)器與終端的通信協(xié)議等關(guān)鍵單元技術(shù),并詳細(xì)介紹終端的軟件設(shè)計(jì)思想。

1 系統(tǒng)組成
    該系統(tǒng)分為網(wǎng)絡(luò)信息發(fā)布管理平臺(tái)和遠(yuǎn)程嵌入式終端兩部分。系統(tǒng)的軟硬件部署,主要分為三個(gè)部分:嵌入式終端,發(fā)布系統(tǒng)服務(wù)器和內(nèi)容服務(wù)器。其中,在實(shí)際應(yīng)用中,發(fā)布系統(tǒng)服務(wù)器和內(nèi)容服務(wù)器可以合并為同一臺(tái)服務(wù)器,如圖1所示。

a.jpg

1.1 硬件方面
1.1.1 管理平臺(tái)硬件環(huán)境
    一臺(tái)Windows操作系統(tǒng)的計(jì)算機(jī),配置Java開(kāi)發(fā)運(yùn)行環(huán)境,并且裝有Apache Tomcat 6.0服務(wù)器和MySQL5.1數(shù)據(jù)庫(kù)等軟件。
1.1.2 嵌入式硬件環(huán)境
    嵌入式芯片需滿(mǎn)足多媒體開(kāi)發(fā)和網(wǎng)絡(luò)開(kāi)發(fā)的基本要求。
    (1)支持視頻格式、音頻格式、圖片格式的編碼和解碼;
    (2)支持視頻圖像和音頻輸出接口;
    (3)支持USB接口;
    (4)支持HTTP協(xié)議;
    (5)支持10 M/100 M網(wǎng)卡。
1.2 軟件方面
    在這種系統(tǒng)軟件設(shè)計(jì)中,信息發(fā)布管理平臺(tái)基于Web開(kāi)發(fā),采用了目前常用的Java+Struts+Hibernate方法。struts框架定義了管理平臺(tái)系統(tǒng)的結(jié)構(gòu)(表示層)和頁(yè)面之間流轉(zhuǎn)的規(guī)則(業(yè)務(wù)層)。Hibernate將數(shù)據(jù)庫(kù)連接抽象化,使得開(kāi)發(fā)過(guò)程中對(duì)數(shù)據(jù)庫(kù)的使用更加簡(jiǎn)潔方便,同時(shí),Hibernate降低了更換不同類(lèi)型數(shù)據(jù)庫(kù)所用的開(kāi)發(fā)時(shí)間?;贘ava語(yǔ)言編寫(xiě)服務(wù)端代碼,開(kāi)發(fā)效率高,面向?qū)ο蟮脑O(shè)計(jì)方法提高了代碼的可維護(hù)性。該模塊還使用了較多的JS代碼和基于Ajax的技術(shù)來(lái)提高客戶(hù)端頁(yè)面刷新和頁(yè)面功能;數(shù)據(jù)庫(kù)服務(wù)器的設(shè)計(jì)使用瑞典MySQL AB公司開(kāi)發(fā)的小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL5.1,它為Java語(yǔ)言提供了豐富的API,方便Java應(yīng)用程序?qū)ζ湓L問(wèn)。
    嵌入式終端操作系統(tǒng)采用μC/OS-Ⅱ操作系統(tǒng)。μC/OS-Ⅱ是一個(gè)源碼開(kāi)放的搶占式實(shí)時(shí)操作系統(tǒng)。它的內(nèi)核短小精悍、可裁減、執(zhí)行時(shí)間確定。系統(tǒng)大部分代碼采用C語(yǔ)言編寫(xiě),與硬件有關(guān)的部分都集中在固定的文件中,移植相當(dāng)方便,可應(yīng)用于目前大多數(shù)型號(hào)的CPU。但是,沒(méi)有集成網(wǎng)絡(luò)協(xié)議,所以,開(kāi)發(fā)人員使用該操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)程序開(kāi)發(fā)時(shí),需要自行定制網(wǎng)絡(luò)協(xié)議。

2 信息發(fā)布系統(tǒng)的單元交互
    嵌入式網(wǎng)絡(luò)信息發(fā)布系統(tǒng)單元之間的通信可以分為兩層:服務(wù)器與數(shù)據(jù)庫(kù)交互、服務(wù)器與遠(yuǎn)程終端通信。
2.1 服務(wù)器與數(shù)據(jù)庫(kù)交互層
    該系統(tǒng)的服務(wù)器具有遠(yuǎn)程監(jiān)控服務(wù)功能,包括Web服務(wù)器、文件服務(wù)器、本地控制服務(wù)器。其中,Web服務(wù)器提供信息網(wǎng)絡(luò)發(fā)布系統(tǒng)的用戶(hù)交互界面和業(yè)務(wù)邏輯處理模塊的運(yùn)行環(huán)境;文件服務(wù)器主要提供系統(tǒng)管理的視頻、圖像等多媒體信息的存取服務(wù);本地控制服務(wù)器主要管理轄區(qū)內(nèi)所有顯示終端的通信分發(fā)。
    在服務(wù)器上編寫(xiě)了具有人機(jī)交互功能的JSP靜態(tài)管理平臺(tái)界面,用戶(hù)可以通過(guò)該界面方便地進(jìn)行圖形化操作,并將終端反饋的信息顯示在該界面,方便用戶(hù)獲取終端的運(yùn)行情況,還為用戶(hù)提供有用戶(hù)權(quán)限管理、內(nèi)容管理、播放控制等模塊的監(jiān)控頁(yè)面。用戶(hù)只需登錄該管理平臺(tái)界面,即可通過(guò)網(wǎng)絡(luò)對(duì)遠(yuǎn)程終端進(jìn)行監(jiān)控。
    服務(wù)器對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)采用JDBC兩層模型方法。JDBC是一種用于執(zhí)行SQL語(yǔ)句的Java API,利用這種方法可以方便地與數(shù)據(jù)庫(kù)建立連接,發(fā)送操作數(shù)據(jù)庫(kù)的語(yǔ)句,并處理結(jié)果。兩層模型可使得Java Applet或應(yīng)用程序?qū)⒅苯优c數(shù)據(jù)庫(kù)進(jìn)行交互。
    服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)交互主要用于存取終端基本狀態(tài)信息。例如:網(wǎng)絡(luò)連接是否正常,連接在同一個(gè)服務(wù)器的各個(gè)終端ID號(hào),終端硬盤(pán)的空間大小,硬盤(pán)中的內(nèi)容等。指令的生成依賴(lài)于該模塊在數(shù)據(jù)庫(kù)中所查詢(xún)到的終端狀態(tài)標(biāo)志位。當(dāng)服務(wù)器對(duì)某終端進(jìn)行相應(yīng)的控制操作時(shí),首先從數(shù)據(jù)庫(kù)中讀取出該終端當(dāng)前的狀態(tài)標(biāo)志位,根據(jù)這些標(biāo)志位進(jìn)行邏輯判斷,生成本次控制操作所需要發(fā)送的XML文本指令。
2.2 服務(wù)器與遠(yuǎn)程終端通信層
    服務(wù)器與遠(yuǎn)程終端的通信采用HTTP超文本傳輸協(xié)議,終端定時(shí)(初定8 s)發(fā)送請(qǐng)求到服務(wù)器。服務(wù)器接受到請(qǐng)求后,將相應(yīng)的XML文本語(yǔ)言形式的控制操作指令發(fā)送到連接的網(wǎng)絡(luò)端口,遠(yuǎn)程終端讀取端口的數(shù)據(jù)進(jìn)行解析,完成本次控制操作。如果一定時(shí)間內(nèi)(初定1 min)沒(méi)有收到終端的消息,可斷定出現(xiàn)網(wǎng)絡(luò)異常(終端離線)。
    終端系統(tǒng)正常啟動(dòng)之后,系統(tǒng)將自動(dòng)分配一段內(nèi)存空間,一部分用來(lái)存儲(chǔ)請(qǐng)求信息和控制指令,一部分作為消息隊(duì)列。然后,終端的狀態(tài)信息作為請(qǐng)求信息循環(huán)向指定IP地址(服務(wù)器)的端口(初定80端口)發(fā)送。終端請(qǐng)求成功后,服務(wù)器讀取端口接收的請(qǐng)求信息,將請(qǐng)求信息解析后作為終端的當(dāng)前狀態(tài)信息,更新數(shù)據(jù)庫(kù)中的狀態(tài)標(biāo)志位。同時(shí),服務(wù)器也可以通過(guò)HTTP傳輸協(xié)議發(fā)送XML語(yǔ)言結(jié)構(gòu)的文本指令給終端,終端接收到指令后進(jìn)行解析,并對(duì)終端進(jìn)行相應(yīng)的控制操作。

3 信息發(fā)布系統(tǒng)的關(guān)鍵技術(shù)
    嵌入式硬件的系統(tǒng)頻率、存儲(chǔ)空間、緩存大小、編碼和解碼等性能已經(jīng)達(dá)到了較高的技術(shù)水平。那么,對(duì)于嵌入式芯片在不同領(lǐng)域中的應(yīng)用更依靠于操作系統(tǒng)和靈活的軟件設(shè)計(jì)思想來(lái)實(shí)現(xiàn)。
    在該系統(tǒng)的設(shè)計(jì)中,服務(wù)器的設(shè)計(jì)需要考慮服務(wù)器與數(shù)據(jù)庫(kù)和終端的交互協(xié)議,當(dāng)通過(guò)服務(wù)器控制多臺(tái)終端的時(shí)候,對(duì)于指令分發(fā)、數(shù)據(jù)包傳輸、以及數(shù)據(jù)庫(kù)的更新都存在著時(shí)序和邏輯問(wèn)題。為了節(jié)省系統(tǒng)內(nèi)存的開(kāi)銷(xiāo),也要保證系統(tǒng)的實(shí)時(shí)性和可靠性,所以終端的操作系統(tǒng)選擇μC/OS-Ⅱ。該操作系統(tǒng)沒(méi)有集成網(wǎng)絡(luò)協(xié)議,所以結(jié)合其性能條件定制適合它的網(wǎng)絡(luò)傳輸協(xié)議。
3.1 終端網(wǎng)絡(luò)程序的設(shè)計(jì)
    遠(yuǎn)程終端的執(zhí)行效果只有到現(xiàn)場(chǎng)才可以觀察,那么,保證終端接收指令和對(duì)指令響應(yīng)的可靠性是十分必要的。HTTP協(xié)議是一種文本協(xié)議,文本協(xié)議通常是用ASCII符集編碼,具有理解簡(jiǎn)單,擴(kuò)展擴(kuò)充方便,容錯(cuò)性較強(qiáng),可靠性高等優(yōu)點(diǎn)。開(kāi)發(fā)人員可以方便地進(jìn)行協(xié)議的定制,節(jié)省了軟件調(diào)試時(shí)間,大大縮短了開(kāi)發(fā)周期。因此,在該系統(tǒng)的操作系統(tǒng)中定制了HTTP超文本傳輸協(xié)議。
    μC/OS-Ⅱ操作系統(tǒng)中創(chuàng)建一個(gè)系統(tǒng)網(wǎng)絡(luò)的入口函數(shù),在此函數(shù)中創(chuàng)建一個(gè)網(wǎng)絡(luò)后臺(tái)任務(wù),該任務(wù)的主要功能是請(qǐng)求網(wǎng)絡(luò)連接,并接收來(lái)自服務(wù)器的指令。當(dāng)終端系統(tǒng)初始化后,進(jìn)入網(wǎng)絡(luò)后臺(tái)任務(wù),循環(huán)向服務(wù)器發(fā)送HTTP請(qǐng)求,請(qǐng)求成功后,終端反饋信息到服務(wù)器。
    系統(tǒng)軟件使用C語(yǔ)言編程,將HTTP協(xié)議封裝在結(jié)構(gòu)體中,用結(jié)構(gòu)體屬性字段來(lái)表示。
    網(wǎng)絡(luò)端口的所有數(shù)據(jù)項(xiàng),包括HTTP協(xié)議頭、控制指令、lP地址、端口號(hào)、端口信號(hào)量鎖等。HTTP協(xié)議的結(jié)構(gòu)體如下:
    b.jpg
    其中:http_Request[REQUEST_SIZE為HTTP協(xié)議頭字符串;http_Response為服務(wù)器發(fā)給終端的控制指令;httpWait為信號(hào)量。用信號(hào)量來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)端口的互斥訪問(wèn)。
    在系統(tǒng)中,網(wǎng)絡(luò)管理平臺(tái)控制多個(gè)嵌入式終端時(shí),通過(guò)網(wǎng)絡(luò)端口與每個(gè)終端進(jìn)行網(wǎng)絡(luò)連接通信。網(wǎng)絡(luò)端口是獨(dú)占性的端口,所以,選擇信號(hào)量機(jī)制對(duì)網(wǎng)絡(luò)端口的訪問(wèn)進(jìn)行互斥鎖處理。

    HTTPTcpConnection_t為網(wǎng)絡(luò)端口連接信息,它也是一個(gè)結(jié)構(gòu)體,屬性字段包括服務(wù)器的IP地址、網(wǎng)絡(luò)端口號(hào)、以及終端請(qǐng)求信息等。代碼如下:
    c.jpg
    d.jpg
3.2 多任務(wù)間通信
    μC/OS-Ⅱ是多任務(wù)機(jī)制操作系統(tǒng),最多可支持64個(gè)任務(wù),任務(wù)優(yōu)先級(jí)從0~63,對(duì)這樣的多任務(wù)操作系統(tǒng)來(lái)說(shuō),任務(wù)間的通信是必不可少的。μC/OS-Ⅱ中提供了4種通信對(duì)象,分別是信號(hào)量、郵箱、消息隊(duì)列和事件。所有這些同步對(duì)象都有創(chuàng)建、等待、發(fā)送、查詢(xún)的接口用于實(shí)現(xiàn)任務(wù)間的通信。
    消息機(jī)制是創(chuàng)建一個(gè)消息隊(duì)列,一個(gè)任務(wù)將消息發(fā)送到該消息隊(duì)列中,另一個(gè)任務(wù)在隊(duì)列的另一端接收此消息。消息隊(duì)列是在消息的傳輸過(guò)程中保存消息的容器,它的主要目的是為消息的傳遞提供路徑;如果發(fā)送消息時(shí)接收者沒(méi)有響應(yīng),消息隊(duì)列會(huì)保留消息,直到可以成功地傳遞給接收者。
    消息機(jī)制具有靈活性、可擴(kuò)展性和異步性等優(yōu)點(diǎn)。因此,該系統(tǒng)采用消息隊(duì)列的方式實(shí)現(xiàn)UI/User層程序和應(yīng)用程序之間的通信,如圖2所示。

f.jpg


    消息的結(jié)構(gòu)體如下:
    g.jpg
    在消息結(jié)構(gòu)體中:
    app_id:接受此消息的應(yīng)用程序或樁函數(shù)。
    msg_type:消息類(lèi)型。系統(tǒng)中的消息設(shè)計(jì)有兩種類(lèi)型。一是命令消息,應(yīng)用程序接收到來(lái)自UI/User程序的命令消息后,對(duì)其進(jìn)行解析,然后,逐個(gè)執(zhí)行消息中的命令集合,并反饋執(zhí)行結(jié)果;二是通知消息,用來(lái)通知UI/User命令在應(yīng)用程序中得到響應(yīng)。
    msg_id:消息的ID號(hào)。
    msg_value:消息的參數(shù),存放指針的地址。
    下面以命令消息處理過(guò)程為例,介紹消息的發(fā)送、接收和消息相應(yīng)操作過(guò)程,如圖3所示。其中,應(yīng)用程序管理器是一個(gè)消息處理中心,它為UI/User層提供了一些API函數(shù),用來(lái)為應(yīng)用程序接受輸入命令和分發(fā)命令。同時(shí),它還接收來(lái)自應(yīng)用程序的命令執(zhí)行結(jié)果和通知消息,并把這些消息發(fā)送給相應(yīng)的消息處理函數(shù)。



4 結(jié)語(yǔ)
    現(xiàn)場(chǎng)調(diào)試中發(fā)現(xiàn),工控機(jī)信息發(fā)布系統(tǒng)的故障率為5%,而本文設(shè)計(jì)的嵌入式信息發(fā)布系統(tǒng)的故障率為8%。從價(jià)格上進(jìn)行比較,工控機(jī)信息發(fā)布系統(tǒng)價(jià)格是嵌入式信息發(fā)布系統(tǒng)價(jià)格的10倍左右。顯然,該系統(tǒng)具有更好的性?xún)r(jià)比,且使用簡(jiǎn)單,操作方便。隨著嵌入式系統(tǒng)軟件的PC化,它將成為一種理想的信息發(fā)布系統(tǒng),有著十分誘人的應(yīng)用前景。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。