XMLHttP對象在嵌入式Web實時系統中的應用
由于Web頁中可能有多個不同按鈕要發送不同的控制命令,為簡化程序設計且便于管理對象,可將每一按鈕調用該函數創建的xMLHttp對象統一保存到全局對象數組ObjArray中。對象數組ObjArray由Web頁中的Javascript腳本定義,即:
script language=“Javascript”>
var ObjArray=new Array;……
(2)mReadyCallBack()
它是Send_Control_CMD函數所創建的保存于對象數組ObjArray中的每個XMLHttp對象的異步回調函數,通過該函數可統一異步處理服務器回應數據。函數具體實現如下:

當ObjArray中的任意一個XMLHttp對象的就緒狀態變化時,將觸發對mReadyCallBack函數的異步調用,該函數將通過for循環掃描對象數組ObjArray,對HTTP服務器當前回應的對象進行處理。通過XMLHttp對象的responseText屬性可獲取服務器回應信息,通過Web容器的inner HTML屬性可將回應信息顯示到Web頁中。在處理完當前XMLHttp對象以后,mReadyCallBack最終將用delete釋放該對象所占用的資源。如果調用Send_control_CMD函數時第2個參數為空,則表示發出控制命令后不需要處理服務器回應文本信息,回調函數僅僅需要釋放該對象所占用的資源。
1.1.3 實現客戶端實時監測功能的函數
(1)RealTime_Monitoring()
該函數專門用于實時監測動態數據,它由Web頁面加載事件onLoad觸發調用,通過所創建的xMLHttp對象向服務器請求動態文件Status.cgi,以獲取監測數據。

其中xmlhttp定義為全局變量。
(2)aReadyCallBack()
該函數是實時監測系統外設數據函數RealTime_Monitoring所創建的XMLHttp對象的專用回調函數,它在處理HTTP服務器回應時將返回的動態監測數據顯示在ID為“txtStatus”的Web容器中,譬如span id=“txtStatus”>…/span>,所返回的內容將替換其中的“…”。函數具體實現如下:


回調函數aReadyCallBack與回調函數mReadyCallBack的差別在于:它釋放已經處理回應的XMLHttp對象(置為null)以后,接著執行了一項重要工作,即調用實時監測函數RealTime_Monitoring()。通過創建新的XMLhttp對象,將動態請求與顯示刷新“接力”進行下去,從而使實時監測無限延續。
顯然,通過XMLHttp對象所實現的實時監測,其效果遠遠優于傳統的Web請求與響應操作模式下所使用的通過在網頁頭部加入meta http-equiv=“refresh”content=“定時長度”>,或者使用Javascript的setTimeout函數設置超時值,使客戶端自動按固定時間間隔請求服務器刷新顯示動態信息的方法。
1.2 客戶端Web與嵌入式HTTP服務器的交互操作
有了上述以XMLHttp對象為中心的函數定義,完成客戶端Web與嵌入式HTTP服務器之間的交互操作就很容易了,例如:
①通過Web頁按鈕啟動電機.可有input type=“button”onClick=“Send_Ctrl_CMD(’0?1=MOTOR’,’)”value=“運行”>。按鈕事件觸發對Send_Control_CMD的調用,它通過XMLHttp對象在“后臺”發送命令串“O?1=MOTOR”,提交給嵌入式系統HTTP服務器處理,控制電機啟動,實現遠程控制功能。
②實時監測嵌入式系統外設狀態,可有body onLoad=“ReaITime Monitoring();”>。Web頁面加載事件onLoad觸發對RealTime_Monit oring的函數調用,它同樣也通過XMLHttp對象訪問嵌入式系統HTTP服務器,不同的是它所請求的是動態文件status.cgi?,F假設所訪問的動態文件主要內容如下:
td width=“150”>%02/td>
td width=“200”>LED1:%00 LED2:%01/td>
td width=“168”>%10/td>
嵌入式系統HTTP服務器程序將從MPFS文件系統讀取該動態文件并將其發往客戶端。在發送過程中,HTTP服務器將對所遇到的形如“%xx”的變量碼進行解析處理。例如“%02”被定義為測試電路中AN0通道的A/D值,“%00”“%01”被定義為兩個外接LED的開關狀態,“%10”被定義為所控制的直流電機的啟/停狀態。經過HTTP服務器處理后的變量值將被系統當前實際的外設狀態值所替換并返回到客戶端。
由于RealTime_Monitoring函數與aReadyCallBack函數配合實現了XMLHttp對象的創建、請求、異步響應、釋放,再創建、再請求、再異步響應、再釋放等,從而借助XMLHttp對象在“后臺”實現了理想的實時監測功能。由于監測結果實時刷新顯示在Web中的特定容器位置,不會導致全頁刷新問題,這也為用戶操作帶來了良好體驗。
解決了客戶端通過XMLHttp塒象在“后臺”與HTTP服務器進行交互、發送控制命令及異步處理回應、實現實時監測功能的問題以后,接著要解決的是HTTP服務器端如何處理客戶端XMLHttp對象所發送的控制命令,以及如何處理并返回客戶端XMLHttp對象所請求的動態文件。 linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
tcp/ip相關文章:tcp/ip是什么
評論