正文 基於ARM9的嵌入式Web服務器數據動態顯示的實現(2 / 3)

2.2 BOA源碼分析及安裝

Web服務器采用BOA文件生成,它能按照順序完成用戶請求,支持認證、CGI程序,其可執行代碼約60 KB。BOA服務器的編譯與移植如下[7]:進入boa-0.94-13文件夾的src目錄,運行configure配置安裝文件,根據Makefile.in 生成Makefile文件進行修改,再執行make,生成可執行程序boa後修改/etc/boa.conf,對boa進行配置編譯,與虛擬機etc目錄下mine.types一起拷貝到目標板var目錄,執行./boa,Web服務器在目標板上即可運行。

3 數據動態顯示的實現

通過上位機實時顯示傳感器節點發送給網關的數據是一個難點,一般采用手動或自動刷新來實現數據更新,但都無法實現數據的實時動態顯示。本設計以采集溫度數據為例,在網頁中嵌入JavaScript,采用Ajax技術實現溫度信息的動態實時顯示,節約了CPU資源。

3.1 軟件流程

在嵌入式網關中,通過串口采集溫度信號,每個溫度數據前麵帶有設備號字符,將不同傳感器節點采集的溫度信息分別存儲在txt文檔中,上位機通過Internet訪問嵌入式網關讀取txt文檔信息,並在網頁上動態顯示。采用txt文檔存儲數據,一方麵有利於在現場直接從網關SD卡中讀取信息;另一方麵有利於上位機編程讀取數據。

3.2 溫度信息處理

協調器將傳感器節點采集的溫度值通過串口傳送到嵌入式網關,需定義傳感器節點的設備號,以實現不同節點采集的溫度值在txt文檔中存儲,數據格式如表1所列。

把編寫好的串口C程序在宿主機編譯後生成的temper文件,並將temper、CGI程序和js程序拷貝到ARM板服務器WWW目錄下,執行temper,在服務器WWW目錄下生成3個txt文檔,實現了溫度數據的存儲。

3.3 數據的讀取及顯示

為了實現溫度的動態顯示,在溫度顯示網頁中采用javaScript(js)程序[8],通過加入定時器每隔一段時間調用CGI程序以獲取txt文檔的溫度值。由於采樣數據不斷存儲到txt文檔,CGI程序采用倒序方法首先讀取txt文檔最後一行獲取最新數據,從而在網頁上動態顯示溫度。

4 結果分析

在IE瀏覽器中輸入目標機的IP地址,登錄係統進入到溫度顯示頁麵,點擊獲取按鈕,溫度值將顯示在頁麵上,設置溫度數據5秒更新一次,當改變溫度傳感器采集的溫度時,網頁顯示數據也同時更新,溫度顯示頁麵,當采集溫度數據發生變化時,頁麵顯示溫度值也隨之改變,實現了傳感器節點采樣數據的動態顯示。

5 結 語

本文通過構建ARM-Linux嵌入式網關,利用BOA服務器、運用JavaScript、CGI、Ajax技術及HTML語言實現了傳感器節點采集的溫度在上位機網頁的動態顯示,與傳統的手動或自動刷新網頁相比,該係統占用服務器CPU資源少,縮短了用戶等待時間,實現了下位機采集的現場數據在上位機實時動態顯示。

參 考 文 獻

[1]張喜民,張建國,周利華.微嵌入式係統Web服務器技術[J].西安電子科技大學學報:自然科學版,2005,32 (2):116-121.

[2]高守瑋,吳燦陽.ZigBee技術實踐教程[M].北京:北京航空航天大學出版社,2009.

[3]馮承金.基於ZigBee和ARM9的智能家居係統的研究與設計[D].武漢:武漢理工大學,2010.