Web服務(wù)在TM1300上的實(shí)現(xiàn)
假定用戶在HTTP消息中帶有消息體,那么首先要找到一個(gè)空白行(即:Cache-Control:no-cache后面一行),因?yàn)樗窍Ⅲw和HTTP頭信息的分界線。接下來需要分析消息主體的內(nèi)容。這方面的工作非常簡單,就是根據(jù)字符‘&’將文本串分為三部分,即:xsize=352,ysize=288,submit=%CC%E1%BD%BB。然后根據(jù)字符‘=’進(jìn)一步區(qū)分參數(shù)的名稱和對(duì)應(yīng)的值。通過分析知道參數(shù)xsize的值為352,ysize的值為288。
通過對(duì)HTTP消息的解析,可以確定用戶需要完成的操作及操作所需要的參數(shù),進(jìn)而可以對(duì)底層的硬件或軟件進(jìn)行控制,以完成用戶的請(qǐng)求。
由此可以看出,服務(wù)器程序的核心工作就是對(duì)HTTP數(shù)據(jù)包解析,決定下一步的處理。針對(duì)上面的例子,Web服務(wù)程序首先要對(duì)視頻輸入輸出接口進(jìn)行控制,改變輸入輸出圖像的尺寸;接下來還要輸出HTTP數(shù)據(jù)包送給IE瀏覽器,圖3給出了Web服務(wù)程序產(chǎn)生的HTTP數(shù)據(jù)包及用戶看到的界面。 本文引用地址:http://www.ex-cimer.com/article/86570.htm
圖3(a)是服務(wù)器回送給IE瀏覽器的HTTP消息。第一行HTTP/1.1200OK通知IE瀏覽器,剛才的請(qǐng)求已經(jīng)被服務(wù)器處理。下面一行是服務(wù)器的處理時(shí)間。Content-type:text/html這一行通知IE瀏覽器HTTP消息主體部分傳送的內(nèi)容是純文本格式的HTML網(wǎng)頁。后面的空行是HTTP頭信息與HTTP消息主體的分界線。當(dāng)IE瀏覽器獲取HTTP頭信息后,就可以根據(jù)消息主體的格式調(diào)用對(duì)應(yīng)的HTML解析器對(duì)內(nèi)容進(jìn)行解析,并將解析的結(jié)果顯示在瀏覽器的窗口中。
3Web服務(wù)進(jìn)程與其他進(jìn)程間的通信
由于多媒體處理平臺(tái)需要同時(shí)進(jìn)行音頻、視頻處理及網(wǎng)絡(luò)通信,即在同一個(gè)時(shí)刻需要有多個(gè)任務(wù)同時(shí)運(yùn)行,并且這些任務(wù)之間需要進(jìn)行通信,例如:當(dāng)用戶改變了系統(tǒng)編碼參數(shù)后,Web服務(wù)器需要通知視頻編碼進(jìn)程,讓它們?cè)诤罄m(xù)的編碼過程中采用新的參數(shù)。由于TM1300運(yùn)行pSOS系統(tǒng),而pSOS只有進(jìn)程,沒有線程,因此Web服務(wù)程序作為一個(gè)單獨(dú)的進(jìn)程來運(yùn)行。當(dāng)需要與其他任務(wù)通信時(shí),采用了信號(hào)量方法。圖4以Web服務(wù)進(jìn)程和視頻編碼進(jìn)程之間的通信為例,給出了系統(tǒng)實(shí)現(xiàn)進(jìn)程間通信的過程。
首先在Flash中開辟一塊區(qū)域,專門用來存儲(chǔ)所需修改的參數(shù)。當(dāng)Web服務(wù)器接收到客戶端提交的修改參數(shù)的請(qǐng)求時(shí),采用以下步驟進(jìn)行處理:(1)Web服務(wù)進(jìn)程將信號(hào)量鎖定;(2)Web服務(wù)進(jìn)程將用戶提交的參數(shù)寫入到參數(shù)區(qū);(3)Web服務(wù)器進(jìn)程釋放信號(hào)量;(4)Web服務(wù)進(jìn)程向視頻處理進(jìn)程發(fā)送信號(hào)[3],通知視頻編碼進(jìn)程讀取參數(shù);(5)視頻處理進(jìn)程將信號(hào)量鎖定;(6)視頻處理進(jìn)程讀取參數(shù);(7)視頻處理信號(hào)釋放信號(hào)量。經(jīng)過一系列操作后,Web服務(wù)器進(jìn)程和視頻編碼進(jìn)程間的通信結(jié)束,完成了一次參數(shù)的修改。Web服務(wù)進(jìn)程與音頻編碼進(jìn)程間的通信與上述過程類似。
本文重點(diǎn)探討了在TM1300上實(shí)現(xiàn)嵌入式Web服務(wù)器的方法與具體實(shí)現(xiàn)中的一些關(guān)鍵問題。通過在現(xiàn)有的多媒體處理平臺(tái)中增加Web服務(wù),用戶可以采用Web頁面的方式來監(jiān)控硬件的運(yùn)行狀態(tài),并能對(duì)系統(tǒng)運(yùn)行參數(shù)進(jìn)行在線修改,降低了系統(tǒng)的使用難度,提高了交互的友好性,進(jìn)而增強(qiáng)了系統(tǒng)的功能和可用性。目前,筆者開發(fā)的Web服務(wù)已經(jīng)在TM1300上穩(wěn)定運(yùn)行,下一步工作主要是擴(kuò)充其功能,并提供網(wǎng)管功能。
參考文獻(xiàn)
1RFC822.StandardforARPAInternetTextMessages[s].1982
2RFC2616.HypertextTransferProtocol----HTTP/1.1[s].1999
3W.RichardStevens著,尤晉元譯.UNIX環(huán)境高級(jí)編程.北京:機(jī)械工業(yè)出版社,2000
評(píng)論