嵌入式網(wǎng)絡(luò )信息發(fā)布系統設計
2 信息發(fā)布系統的單元交互
嵌入式網(wǎng)絡(luò )信息發(fā)布系統單元之間的通信可以分為兩層:服務(wù)器與數據庫交互、服務(wù)器與遠程終端通信。
2.1 服務(wù)器與數據庫交互層
該系統的服務(wù)器具有遠程監控服務(wù)功能,包括Web服務(wù)器、文件服務(wù)器、本地控制服務(wù)器。其中,Web服務(wù)器提供信息網(wǎng)絡(luò )發(fā)布系統的用戶(hù)交互界面和業(yè)務(wù)邏輯處理模塊的運行環(huán)境;文件服務(wù)器主要提供系統管理的視頻、圖像等多媒體信息的存取服務(wù);本地控制服務(wù)器主要管理轄區內所有顯示終端的通信分發(fā)。
在服務(wù)器上編寫(xiě)了具有人機交互功能的JSP靜態(tài)管理平臺界面,用戶(hù)可以通過(guò)該界面方便地進(jìn)行圖形化操作,并將終端反饋的信息顯示在該界面,方便用戶(hù)獲取終端的運行情況,還為用戶(hù)提供有用戶(hù)權限管理、內容管理、播放控制等模塊的監控頁(yè)面。用戶(hù)只需登錄該管理平臺界面,即可通過(guò)網(wǎng)絡(luò )對遠程終端進(jìn)行監控。
服務(wù)器對數據庫的訪(fǎng)問(wèn)采用JDBC兩層模型方法。JDBC是一種用于執行SQL語(yǔ)句的Java API,利用這種方法可以方便地與數據庫建立連接,發(fā)送操作數據庫的語(yǔ)句,并處理結果。兩層模型可使得Java Applet或應用程序將直接與數據庫進(jìn)行交互。
服務(wù)器與數據庫服務(wù)器的數據交互主要用于存取終端基本狀態(tài)信息。例如:網(wǎng)絡(luò )連接是否正常,連接在同一個(gè)服務(wù)器的各個(gè)終端ID號,終端硬盤(pán)的空間大小,硬盤(pán)中的內容等。指令的生成依賴(lài)于該模塊在數據庫中所查詢(xún)到的終端狀態(tài)標志位。當服務(wù)器對某終端進(jìn)行相應的控制操作時(shí),首先從數據庫中讀取出該終端當前的狀態(tài)標志位,根據這些標志位進(jìn)行邏輯判斷,生成本次控制操作所需要發(fā)送的XML文本指令。
2.2 服務(wù)器與遠程終端通信層
服務(wù)器與遠程終端的通信采用HTTP超文本傳輸協(xié)議,終端定時(shí)(初定8 s)發(fā)送請求到服務(wù)器。服務(wù)器接受到請求后,將相應的XML文本語(yǔ)言形式的控制操作指令發(fā)送到連接的網(wǎng)絡(luò )端口,遠程終端讀取端口的數據進(jìn)行解析,完成本次控制操作。如果一定時(shí)間內(初定1 min)沒(méi)有收到終端的消息,可斷定出現網(wǎng)絡(luò )異常(終端離線(xiàn))。
終端系統正常啟動(dòng)之后,系統將自動(dòng)分配一段內存空間,一部分用來(lái)存儲請求信息和控制指令,一部分作為消息隊列。然后,終端的狀態(tài)信息作為請求信息循環(huán)向指定IP地址(服務(wù)器)的端口(初定80端口)發(fā)送。終端請求成功后,服務(wù)器讀取端口接收的請求信息,將請求信息解析后作為終端的當前狀態(tài)信息,更新數據庫中的狀態(tài)標志位。同時(shí),服務(wù)器也可以通過(guò)HTTP傳輸協(xié)議發(fā)送XML語(yǔ)言結構的文本指令給終端,終端接收到指令后進(jìn)行解析,并對終端進(jìn)行相應的控制操作。
3 信息發(fā)布系統的關(guān)鍵技術(shù)
嵌入式硬件的系統頻率、存儲空間、緩存大小、編碼和解碼等性能已經(jīng)達到了較高的技術(shù)水平。那么,對于嵌入式芯片在不同領(lǐng)域中的應用更依靠于操作系統和靈活的軟件設計思想來(lái)實(shí)現。
在該系統的設計中,服務(wù)器的設計需要考慮服務(wù)器與數據庫和終端的交互協(xié)議,當通過(guò)服務(wù)器控制多臺終端的時(shí)候,對于指令分發(fā)、數據包傳輸、以及數據庫的更新都存在著(zhù)時(shí)序和邏輯問(wèn)題。為了節省系統內存的開(kāi)銷(xiāo),也要保證系統的實(shí)時(shí)性和可靠性,所以終端的操作系統選擇μC/OS-Ⅱ。該操作系統沒(méi)有集成網(wǎng)絡(luò )協(xié)議,所以結合其性能條件定制適合它的網(wǎng)絡(luò )傳輸協(xié)議。
3.1 終端網(wǎng)絡(luò )程序的設計
遠程終端的執行效果只有到現場(chǎng)才可以觀(guān)察,那么,保證終端接收指令和對指令響應的可靠性是十分必要的。HTTP協(xié)議是一種文本協(xié)議,文本協(xié)議通常是用ASCII符集編碼,具有理解簡(jiǎn)單,擴展擴充方便,容錯性較強,可靠性高等優(yōu)點(diǎn)。開(kāi)發(fā)人員可以方便地進(jìn)行協(xié)議的定制,節省了軟件調試時(shí)間,大大縮短了開(kāi)發(fā)周期。因此,在該系統的操作系統中定制了HTTP超文本傳輸協(xié)議。
μC/OS-Ⅱ操作系統中創(chuàng )建一個(gè)系統網(wǎng)絡(luò )的入口函數,在此函數中創(chuàng )建一個(gè)網(wǎng)絡(luò )后臺任務(wù),該任務(wù)的主要功能是請求網(wǎng)絡(luò )連接,并接收來(lái)自服務(wù)器的指令。當終端系統初始化后,進(jìn)入網(wǎng)絡(luò )后臺任務(wù),循環(huán)向服務(wù)器發(fā)送HTTP請求,請求成功后,終端反饋信息到服務(wù)器。
系統軟件使用C語(yǔ)言編程,將HTTP協(xié)議封裝在結構體中,用結構體屬性字段來(lái)表示。
網(wǎng)絡(luò )端口的所有數據項,包括HTTP協(xié)議頭、控制指令、lP地址、端口號、端口信號量鎖等。HTTP協(xié)議的結構體如下:

其中:http_Request[REQUEST_SIZE為HTTP協(xié)議頭字符串;http_Response為服務(wù)器發(fā)給終端的控制指令;httpWait為信號量。用信號量來(lái)實(shí)現網(wǎng)絡(luò )端口的互斥訪(fǎng)問(wèn)。
在系統中,網(wǎng)絡(luò )管理平臺控制多個(gè)嵌入式終端時(shí),通過(guò)網(wǎng)絡(luò )端口與每個(gè)終端進(jìn)行網(wǎng)絡(luò )連接通信。網(wǎng)絡(luò )端口是獨占性的端口,所以,選擇信號量機制對網(wǎng)絡(luò )端口的訪(fǎng)問(wèn)進(jìn)行互斥鎖處理。本文引用地址:http://dyxdggzs.com/article/150731.htm
HTTPTcpConnection_t為網(wǎng)絡(luò )端口連接信息,它也是一個(gè)結構體,屬性字段包括服務(wù)器的IP地址、網(wǎng)絡(luò )端口號、以及終端請求信息等。代碼如下:
3.2 多任務(wù)間通信
μC/OS-Ⅱ是多任務(wù)機制操作系統,最多可支持64個(gè)任務(wù),任務(wù)優(yōu)先級從0~63,對這樣的多任務(wù)操作系統來(lái)說(shuō),任務(wù)間的通信是必不可少的。μC/OS-Ⅱ中提供了4種通信對象,分別是信號量、郵箱、消息隊列和事件。所有這些同步對象都有創(chuàng )建、等待、發(fā)送、查詢(xún)的接口用于實(shí)現任務(wù)間的通信。
評論