基于SX52的嵌入式Web服務器的快速實現(xiàn)
除了用JavaApplet實現(xiàn)動態(tài)網頁外,利用post方法也可與服務器交互。例如通過IE瀏覽器用復選框按鈕控制并顯示一組燈的開與關的基本Web控制,其HTML網頁的提交表單FORM內應該包含有的類似語句,其中0~n為欲控制燈的編號,name的取值為一位數(shù)字或字符,有利于節(jié)省SX52的查詢匹配程序空間,E2File程序將網頁中如下顯示燈的狀態(tài)的HTML超鏈接語句中的?編號為非ASCII字符#$f0~#$fn等下載存儲到服務器的EEPROM中。當n用POST方法發(fā)送數(shù)據給服務器時,SX52服務器計算兩個空格間的abs_path形式的URI的ASCII字符之和后到相應EEPROM中,用上述下載網頁的計算方法找到該網頁的地址后,跳過HTTP的請求頭匹配l=0…l=n表示復選框被選中的數(shù)據并對相應編號的燈開關后,返回該網頁給IE時會根據實際燈的狀態(tài)將EEPROM中存儲網頁的非ASCII字符#$f0~#$fn退換為ASCII字符n或f。這樣IE就能正確地通過超鏈接再次與服務器交互(GET方法),下載顯示ledon.gif或ledof.gif顯示實際燈的狀態(tài)了。而要在IE上正確顯示現(xiàn)場某個控制變量的值時,同樣可以將n位顯示數(shù)值編號為非ASCII字符#$f0#$fl…#$fn的形式存儲到服務器中,SX52服務器端先將實際的數(shù)值轉換為BCD碼后再用對應的ASCII字符將#Sf0#$f1…#$fn替換返回,從而能在瀏覽器端顯示服務器端控制變量的變化。國內用戶使用的北京革新提供的開發(fā)演示板程序較充分地提供了常用的Intemet網絡協(xié)議軟件虛擬模塊,也提供了一個基本可實際應用的Web演示控制,只要做較少改動就可以用于實際控制中。不過它只能一次控制一個燈的開關,且任何人都可以輕易地更改?,F(xiàn)要求一次能控制所有的燈,但需要在IE瀏覽器上輸入密碼123abc方可生效。程序修改如下:
![](http://uphotos.eepw.com.cn/fetch/20130729/149200_2_0.jpg)
(5)在模塊TcpAppRxData的分支:lookforl的開頭增加以下語句:
![](http://uphotos.eepw.com.cn/fetch/20130729/149200_2_1.jpg)
![](http://uphotos.eepw.com.cn/fetch/20130729/149200_2_2.jpg)
當然以上密碼通過IE仍以明文傳送,不安全,但是它可以通過常用的IE瀏覽器操作,不需要專用的客戶端軟件。這適用于大企業(yè),它們有局域網,電腦上只能用固定的幾種軟件。當然編寫客戶端軟件加入加密解密算法來適應各種應用環(huán)境也是容易實現(xiàn)的。用SX52構建各種小型的現(xiàn)場控制Web服務器只要合理利用相應的網絡協(xié)議軟件虛擬模塊,參照演示板的做法在應用子模塊TcpAppTxBytes、TcpAppRxData中對發(fā)送及接收數(shù)據按照自己特定的要求做處理即可。它還可以通過UDP的方式同時與客戶端軟件傳送語音或視頻數(shù)據流,只要增加很少的外圍接口電路并改動相應的UDP處理模塊UDPProcPktIn即可。而如果未來協(xié)議的更新也只要下載最新的程序替換即可,開發(fā)人員單獨修改特定協(xié)議模塊的一些實現(xiàn)方式如增加滑動窗口的TCP/IP等也比重新編寫一個完整的協(xié)議族遠為輕松。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論