用于網(wǎng)頁模塊的Web服務(wù)器及其輸出控制或輸入更新方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于Web服務(wù)器技術(shù)領(lǐng)域,涉及一種Web服務(wù)器,特別是涉及一種用于網(wǎng)頁 模塊的Web服務(wù)器及其輸入更新或輸出控制方法。
【背景技術(shù)】
[0002] 如圖1所示,基于串口的嵌入式網(wǎng)頁模塊(以下稱網(wǎng)頁模塊)是一個(gè)電子器件。該 網(wǎng)頁模塊一端通過串口(一般是UART)可以與用戶的微控制器(簡稱MCU)的UART連接,另 一端通過有線以太網(wǎng)或無線wifi可以連接到網(wǎng)絡(luò)上。用戶(電子開發(fā)者)購買此網(wǎng)頁模塊 后,可以將該網(wǎng)頁模塊集成到用戶電路板上使用。
[0003] 用戶的微控制器MCU通過UART和網(wǎng)頁模塊通信。當(dāng)需要通過網(wǎng)頁模塊控制外部 設(shè)備時(shí),網(wǎng)頁模塊會(huì)發(fā)送串口指令給MCU,MCU接收到串口指令后通過控制總線進(jìn)行輸出控 制信令給外部設(shè)備。例如:用戶在計(jì)算機(jī)或手機(jī)上的瀏覽器地址欄中輸入網(wǎng)頁模塊的地址, 如192. 168. 1.200,即可打開網(wǎng)頁。即網(wǎng)頁模塊內(nèi)部有一個(gè)小型的Web服務(wù)器,Web服務(wù)器 內(nèi)部也存儲(chǔ)有網(wǎng)頁。當(dāng)用戶在網(wǎng)頁上點(diǎn)擊按鈕完成控制指令時(shí),網(wǎng)頁模塊將所述控制指令 通過串口輸出給MCU,MCU根據(jù)所述控制指令對(duì)外部設(shè)備進(jìn)行輸出控制。
[0004] 同時(shí),MCU也會(huì)將傳感器采集到的新的數(shù)據(jù)發(fā)送給網(wǎng)頁模塊,所述采集數(shù)據(jù)可以在 用戶打開瀏覽器瀏覽網(wǎng)頁時(shí)被看到。例如:打開或關(guān)閉繼電器。當(dāng)MCU需要發(fā)送數(shù)據(jù)給網(wǎng) 頁模塊時(shí),MCU首先利用輸入傳感器采集數(shù)據(jù),然后將采集到的數(shù)據(jù)通過UART發(fā)送給網(wǎng)頁 模塊,網(wǎng)頁模塊根據(jù)接收到的數(shù)據(jù)更新瀏覽器中的顯示內(nèi)容。
[0005] 上述網(wǎng)頁模塊是一款開發(fā)網(wǎng)頁應(yīng)用的電子元器件,具有廣泛的應(yīng)用前景。一般來 說,網(wǎng)頁模塊中的網(wǎng)頁是可以由用戶自行設(shè)計(jì)下載的。目前實(shí)現(xiàn)網(wǎng)頁模塊的普通方法是通 過瀏覽器支持的ActiveX或Java applet應(yīng)用和網(wǎng)頁模塊建立一個(gè)TCP或UDP連接然后發(fā) 送和接收數(shù)據(jù)的。
[0006] 如圖2所示,普通的網(wǎng)頁模塊內(nèi)部實(shí)際有2個(gè)程序,一個(gè)是Web服務(wù)器,另一個(gè)是 TCP或UDP轉(zhuǎn)串口程序。計(jì)算機(jī)或手機(jī)上的瀏覽器首先通過HTTP協(xié)議和網(wǎng)頁模塊中的Web 服務(wù)器通信,獲得網(wǎng)頁所需的文件,以便顯示在瀏覽器窗口中。其中,網(wǎng)頁所需的文件除了 htm類型網(wǎng)頁文本、圖片外還包含一個(gè)應(yīng)用程序文件。所述應(yīng)用程序文件可以是ActiveX或 者Java applet程序。ActiveX是微軟公司推出的能夠在瀏覽器中執(zhí)行的可執(zhí)行程序,如果 需要ActiveX,首先要從Web服務(wù)器下載ActiveX的代碼,然后安裝在瀏覽器中才能夠使用。 如網(wǎng)銀控件、密碼輸入控件等都是常見的ActiveX控件。Java applet也是類似ActiveX的 可執(zhí)行程序,但是它是用Java編寫的,可以被瀏覽器所運(yùn)行,但是必須在瀏覽器上事先安 裝sun公司的Java虛擬機(jī)才能夠使用。無論是ActiveX控件還是Java applet都可以嵌 入到htm文件中,并在瀏覽器的一個(gè)區(qū)域中顯示出來,可以被認(rèn)為是一個(gè)網(wǎng)頁程序。
[0007] 以ActiveX控件為例,圖2的實(shí)現(xiàn)方法是讓ActiveX控件創(chuàng)建一個(gè)TCP或UDP網(wǎng) 絡(luò)套接字(socket連接),然后和網(wǎng)頁模塊中運(yùn)行的TCP或UDP轉(zhuǎn)串口程序建立TCP或IP通 信鏈路。其中,TCP或UDP轉(zhuǎn)串口程序負(fù)責(zé)將ActiveX控件的數(shù)據(jù)發(fā)往串口,將串口的數(shù)據(jù) 轉(zhuǎn)發(fā)給Active控件。ActiveX在瀏覽器的顯示界面上可以顯示收到的數(shù)據(jù)(比如采集的溫 度數(shù)據(jù)),同時(shí)用戶點(diǎn)擊ActiveX程序界面上的按鈕可以讓ActiveX發(fā)送指令數(shù)據(jù)給串口。
[0008] 圖2所示的通信方法存在以下缺陷:
[0009] 1)購買網(wǎng)頁模塊的電子設(shè)計(jì)者因可能有不同的應(yīng)用需求,需要開發(fā)不同的 ActiveX控件,但是ActiveX控件的開發(fā)本身專業(yè)性很強(qiáng),用戶開發(fā)不容易。
[0010] 2) ActiveX需要安裝到瀏覽器中,但是對(duì)于計(jì)算機(jī)或者手機(jī),出于安全考慮,來自 未知開發(fā)者的ActiveX控件是不允許安裝的,如果安裝則需要降低安全等級(jí)。Java applet 則需要安裝Java虛擬機(jī),這個(gè)也給用戶帶來不便。
[0011] 3)ActiveX控件方法只能夠在瀏覽器的一個(gè)區(qū)域中顯示,不能夠做到HTLM標(biāo)準(zhǔn)控 件(如按鈕)也能夠?qū)崿F(xiàn)串口控制。網(wǎng)頁顯示的范圍被限定了。
[0012] 4)ActiveX或者java applect -般都是一個(gè)可執(zhí)行程序,需要放到網(wǎng)頁模塊內(nèi)部 供瀏覽器打開時(shí)下載。ActiveX或者java applect程序相對(duì)于htm文本方式的網(wǎng)頁,大小 要大很多,這樣就需要增加網(wǎng)頁模塊的存儲(chǔ)空間,增加了網(wǎng)頁模塊成本。
【發(fā)明內(nèi)容】
[0013] 鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種用于網(wǎng)頁模塊的Web 服務(wù)器及其輸出控制或輸入更新方法,用于解決現(xiàn)有網(wǎng)頁模塊使用方法復(fù)雜不便的問題。
[0014] 為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種用于網(wǎng)頁模塊的Web服務(wù)器的 輸出控制方法,所述用于網(wǎng)頁模塊的Web服務(wù)器的輸出控制方法包括:所述Web服務(wù)器接收 瀏覽器基于HTTP協(xié)議發(fā)送的POST指令;所述POST指令包括控件名稱;所述Web服務(wù)器查 找預(yù)定義的控件名稱與輸出指令對(duì)應(yīng)表,確定與所述POST指令中的控件名稱對(duì)應(yīng)的串口 輸出指令;所述Web服務(wù)器將所述串口輸出指令通過串口輸出。
[0015] 優(yōu)選地,所述POST指令包括瀏覽器當(dāng)前提交的表單;所述表單包括至少一個(gè)控件 名稱。
[0016] 優(yōu)選地,所述控件名稱分為特定控件名稱和普通控件名稱;所述預(yù)定義的控件名 稱與輸出指令對(duì)應(yīng)表中的控件名稱為特定控件名稱;所述Web服務(wù)器查找與所述POST指令 中特定控件名稱對(duì)應(yīng)的串口輸出指令。
[0017] 優(yōu)選地,所述POST指令還包括與每個(gè)控件名稱對(duì)應(yīng)的控件值;按照HTTP協(xié)議,控 件值和控件名稱一起通過POST指令被發(fā)給所述Web服務(wù)器;所述Web服務(wù)器將與控件名稱 對(duì)應(yīng)的串口輸出指令和與控件名稱對(duì)應(yīng)的控件值一同通過串口輸出。
[0018] 優(yōu)選地,所述POST指令是用戶通過瀏覽器點(diǎn)擊網(wǎng)頁上的控件觸發(fā)的;所述瀏覽器 根據(jù)標(biāo)準(zhǔn)的HTML和HTTP協(xié)議生成所述POST指令;所述控件為HTML的標(biāo)準(zhǔn)控件,包括按 鈕、輸入框、下拉框、或/和選擇框。
[0019] 本發(fā)明還提供一種用于網(wǎng)頁模塊的Web服務(wù)器的輸入更新方法,所述用于網(wǎng)頁模 塊的Web服務(wù)器的輸入更新方法包括:所述Web服務(wù)器通過串口接收修改命令;所述修改 命令包括修改的文件名、修改的文件偏移量、修改的數(shù)據(jù)內(nèi)容和大?。凰鯳eb服務(wù)器找到 與所述修改的文件名對(duì)應(yīng)的網(wǎng)頁文件,在所述網(wǎng)頁文件中與所述修改的文件偏移量對(duì)應(yīng)的 偏移位置寫入所述修改的數(shù)據(jù)內(nèi)容,形成更新后的網(wǎng)頁文件。
[0020] 優(yōu)選地,所述修改命令是用戶微控制器在發(fā)現(xiàn)采集數(shù)據(jù)發(fā)生變化并需要更新到所 述用于網(wǎng)頁模塊的Web服務(wù)器時(shí)通過串口發(fā)送的。
[0021] 優(yōu)選地,當(dāng)用戶通過瀏覽器刷新或重新打開所述網(wǎng)頁文件時(shí),會(huì)獲得更新后的網(wǎng) 頁文件。
[0022] 本發(fā)明還提供一種用于網(wǎng)頁模塊的Web服務(wù)器,所述用于網(wǎng)頁模塊的Web服務(wù)器 包括:網(wǎng)絡(luò)數(shù)據(jù)接收模塊,接收瀏覽器基于HTTP協(xié)議發(fā)送的POST指令;所述POST指令包括 控件名稱和控件值;存儲(chǔ)模塊,存儲(chǔ)有預(yù)定義的控件名稱與輸出指令對(duì)應(yīng)表;查找模塊,與 所述接收模塊和存儲(chǔ)模塊分別相連,查找預(yù)定義的控件名稱與輸出指令對(duì)應(yīng)表,確定與所 述POST指令中的控件名稱對(duì)應(yīng)的串口輸出指令;串口發(fā)送模塊,與所述查找模塊相連,將 所述串口輸出指令通過串口輸出;串口接收模塊,通過串口接收修改命令;所述修改命令 包括修改的文件名、修改的文件偏移量、修改的數(shù)據(jù)內(nèi)容和大?。恍薷哪K,與所述串口接 收模塊和存儲(chǔ)模塊分別相連,在存儲(chǔ)模塊中找到與所述修改的文件名對(duì)應(yīng)的網(wǎng)頁文件,在 所述網(wǎng)頁文件中與所述修改的文件偏移量對(duì)應(yīng)的偏移位置寫入所述修改的數(shù)據(jù)內(nèi)容,形成 更新后的網(wǎng)頁文件。
[0023] 優(yōu)選地,所述用于網(wǎng)頁模塊的Web服務(wù)器還包括:網(wǎng)絡(luò)數(shù)據(jù)發(fā)送模塊,與所述存儲(chǔ) 模塊相連,在用戶通過瀏覽器刷新或重新打開所述網(wǎng)頁文件時(shí),將更新后的網(wǎng)頁文件發(fā)送 給瀏覽器顯示。
[0024] 如上所述,本發(fā)明所述的用于網(wǎng)頁模塊的Web服務(wù)器及其輸出控制或輸入更新方 法,具有以下有益效果:
[0025] 本發(fā)明所述的Web服務(wù)器執(zhí)行的程序不是通用的如IIS、Appach等現(xiàn)有Web服務(wù) 器程序,而是特殊定制的,其通過HTML網(wǎng)頁中的控件名稱來識(shí)別這個(gè)控件是否需要進(jìn)行串 口輸出,并通過串口命令修改網(wǎng)頁文件來實(shí)現(xiàn)網(wǎng)頁顯示內(nèi)容的刷新,不但解決了傳統(tǒng)網(wǎng)頁 模塊使用方法復(fù)雜不便的問題,