基于LINUX的嵌入式瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)
摘要:嵌入式瀏覽器可以廣泛應(yīng)用于各種信息電器和便攜式網(wǎng)絡(luò)終端中,在工業(yè)控制領(lǐng)域也有著非常廣闊的應(yīng)用前景。本文提出了一種基于LINUX的嵌入式瀏覽器,介紹了實(shí)現(xiàn)方法和主要功能特點(diǎn)。該瀏覽器基于現(xiàn)有的嵌入式GUI,利用系統(tǒng)的HTEP函數(shù)庫(kù)實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn),根據(jù)文檔類型定義和層疊式樣式表規(guī)范,解析HTML文件和排版顯示。此系統(tǒng)在MiniGUI下已成功實(shí)現(xiàn)。
本文引用地址:http://www.ex-cimer.com/article/149189.htm0引言隨著Intemet普及率的迅猛增長(zhǎng),瀏覽器成為獲取信息的標(biāo)準(zhǔn)工具,并且已經(jīng)為廣大Intemet用戶所接受。與瀏覽器相配合的各類軟件,如視頻、音頻的Plug-in,都十分豐富。Intemet上產(chǎn)生了大量的可瀏覽資源,也證明了瀏覽器這種方式的正確性,瀏覽器將成為網(wǎng)絡(luò)生活中的核心。另一方面,消費(fèi)電子、計(jì)算機(jī)、通信(3C)一體化趨勢(shì)日趨明顯,嵌入式技術(shù)成為研究熱點(diǎn),機(jī)頂盒、信息家電等新產(chǎn)品的出現(xiàn)讓人們開(kāi)始關(guān)注嵌入式系統(tǒng),嵌入式瀏覽器也隨之浮出水面。嵌入式瀏覽器可以廣泛應(yīng)用于Intenet-Tv、iDVD、Web終端、數(shù)字電視機(jī)頂盒、掌上電腦等各種信息電器和便攜式網(wǎng)絡(luò)終端中,在工業(yè)控制領(lǐng)域也有著非常廣闊的應(yīng)用前景。
本文提出了一種基于I腫D(系統(tǒng)的嵌入式瀏覽器,并介紹了該瀏覽器的設(shè)計(jì)實(shí)現(xiàn)方法。
1系統(tǒng)基本原理1。1嵌入式瀏覽器的基本工作流程輸入U(xiǎn)RL,通過(guò)網(wǎng)絡(luò)讀取對(duì)應(yīng)HTML文件:交給HTML的解析器進(jìn)行解析,在解析的過(guò)程中如果發(fā)現(xiàn)新的URL(主要是圖片、樣式單以及Jscript。外部代碼),提交給網(wǎng)絡(luò)部分去讀取;在解析的過(guò)程中形成DOM樹(shù)和Render樹(shù);最后利用解析結(jié)果生成對(duì)應(yīng)控件并排版顯示。層次關(guān)系如圖1所示。
1。2嵌入式LINUX系統(tǒng)對(duì)嵌入式應(yīng)用環(huán)境下的LINUX系統(tǒng),要求代碼空間小,運(yùn)行速度快,資源需求少??梢酝ㄟ^(guò)對(duì)通用I刪JX系統(tǒng)的配置和功能代碼精簡(jiǎn)得到,也可采用商業(yè)的嵌入式LINUX。
1。3嵌入式GUIGUI(圖形用戶接口)是瀏覽器的運(yùn)行平臺(tái),并提供了窗口編程的接口函數(shù)。嵌入式GUI必須運(yùn)行效率高,功能精干。常用的嵌入式GUI有MicroWindows、OpenGUI、QT/Enbedded、MiniGui等。
1。4網(wǎng)絡(luò)訪問(wèn)網(wǎng)絡(luò)訪問(wèn)通過(guò)HTTP(超文本傳輸協(xié)議)實(shí)現(xiàn)瀏覽器與Web服務(wù)器之間的通信,H'ITP規(guī)定了發(fā)送和處理請(qǐng)求的標(biāo)準(zhǔn)方式,規(guī)定了瀏覽器和服務(wù)器之間傳輸?shù)南⒏袷郊案鞣N控制信息。
1。5DTDDTD(文檔類型定義)定義了HTML文件中所有的標(biāo)簽和屬性,及標(biāo)簽的嵌套關(guān)系和屬性的取值范圍。它是解析HTML文件的基礎(chǔ)。
1。6DOMDOM(文檔對(duì)象模型)是HTML,文件解析的結(jié)果。它的內(nèi)容包括了當(dāng)前HTML文件中所有的元素、元素的子元素、元素的屬性、元素的樣式、元素的事件等。
1。7RENDER樹(shù)RENDER樹(shù)供排版輸出程序使用。RENDER.樹(shù)結(jié)構(gòu)與DOM樹(shù)類似,HTML解析器生成DOM樹(shù)的同時(shí)生成RENDER樹(shù)。RENDER樹(shù)的內(nèi)容定義了實(shí)際顯示區(qū)域的嵌套關(guān)系。
2系統(tǒng)設(shè)計(jì)概要2。1HTML解析HTML解析主要功能是分析取得的HTML文件,辨認(rèn)出標(biāo)簽、屬性和內(nèi)容,并根據(jù)DTD定義校驗(yàn)元素結(jié)構(gòu)關(guān)系。解析結(jié)果形成DOM樹(shù)和RENDER樹(shù),供輸出引擎排版顯示。如圖2所示。
圖2瀏覽器基本工作流程HTML解析可分為以下幾個(gè)子模塊:2。1。1DTD構(gòu)建。
DTD定義了HTMl。的語(yǔ)法規(guī)范。根據(jù)應(yīng)用需要可選擇TransitionalDTD、FIarIlesetDTD及StrictDTD。依據(jù)DTD規(guī)范說(shuō)明,可以建立啪表格,每一個(gè)DTD表格記錄定義一種標(biāo)簽的基本信息,包括元素ID、元素名、子元素列表、屬性列表等。解析HTML.必須首先構(gòu)建DTD表格。
2。1。2語(yǔ)法分析HTML文件語(yǔ)法分析的主要思路是:讀HTMI。緩存區(qū)。如是起始標(biāo)簽,分析標(biāo)簽內(nèi)的標(biāo)簽名、屬性和屬性值,根據(jù)[riD定義判斷此標(biāo)簽是否能被棧頂標(biāo)簽包容(為判斷元素的嵌套關(guān)系。建立的一個(gè)棧表),如合法,生成DOM節(jié)點(diǎn),如果此標(biāo)簽需有結(jié)束標(biāo)簽,此標(biāo)簽入棧;如包含關(guān)系不正確,放棄此標(biāo)簽,繼續(xù)讀緩存。如是結(jié)束標(biāo)簽,從棧頂向下查找有否對(duì)應(yīng)起始標(biāo)簽,如有,將對(duì)應(yīng)起始標(biāo)簽以上的棧元素出棧;如沒(méi)有,放棄此標(biāo)簽,繼續(xù)讀緩存。如是標(biāo)簽間的文本,則放至文本緩沖區(qū),直到讀到標(biāo)簽時(shí),生成文本DOM節(jié)點(diǎn),插入到DOM樹(shù)中。在生成DOM節(jié)點(diǎn)時(shí),生成對(duì)應(yīng)的RENDER節(jié)點(diǎn)(DOM節(jié)點(diǎn)與RENDER節(jié)點(diǎn)不一定對(duì)應(yīng))。每個(gè)RENDER節(jié)點(diǎn)代表一矩形區(qū)域,RENDER類型指明該矩形區(qū)域的特性,可分為:BlockBOX、InlineBOX、LineBOX、AnonymousBlockBOX等。在后面排版顯示中將介紹各類RENDER的使用。
2。1。3CSS的應(yīng)用作用于標(biāo)簽的CSS可分為三類:標(biāo)簽的缺省樣式、從上層標(biāo)簽繼承的樣式、標(biāo)簽屬性中定義的樣式。它們從小到大的應(yīng)用優(yōu)先級(jí)是:缺省樣式、繼承上層標(biāo)簽的樣式、標(biāo)簽屬性中定義的樣式。在生成DOM節(jié)點(diǎn)時(shí),分析以上三類樣式定義.得到當(dāng)前元素的應(yīng)用樣式單。樣式的數(shù)據(jù)結(jié)構(gòu)與屬性類似。
2。2排版顯示排版輸出模塊利用對(duì)HTML文件解析的結(jié)果DOM樹(shù)和RENDER樹(shù),生成瀏覽器窗口及相應(yīng)的控件,并在屏幕上排版顯示。排版是基于CSS2的規(guī)范進(jìn)行的。
排版顯示基本原理:所有的HTML元素在屏幕上都表示為矩形區(qū)域(Box)。排版實(shí)際上就是把這些Box擺到正確的位置上。Box主要可分為InlineBox、BlockBox。BlockBox代表一個(gè)矩形容器框,Linlinebox表現(xiàn)為文字、圖片等具體內(nèi)容形成的矩形區(qū)域。一個(gè)BlockBox的直系兒子要么全是Block,要么全是Inline。若一個(gè)BlockBox的兒子中,既有Block又有Inline,就要包裝一層.即把inlinebox用一個(gè)BlockBox包起來(lái)。這個(gè)自動(dòng)產(chǎn)生的BlockBox就是所謂的AnonymousBlockBox。若一個(gè)Lnline:Box有BlockLeve的兒子,那么它自己也應(yīng)轉(zhuǎn)為Blocklevel。即InlineBox不可能有BlockBox做兒子。(Blockbox和Inlinebox的包含關(guān)系要求的實(shí)現(xiàn)在前面生成RENDER節(jié)點(diǎn)時(shí)解決)一個(gè)Box可以在三種定位方式下進(jìn)行排版:常規(guī)定位、絕對(duì)定位、浮動(dòng)定位。通過(guò)元索的屬性position和float可以設(shè)置定位方式。
2。3網(wǎng)絡(luò)訪問(wèn)利用LINUX系統(tǒng)的HTTP函數(shù)庫(kù),實(shí)現(xiàn)瀏覽器與WEB服務(wù)器的通訊。為了管理多個(gè)通訊請(qǐng)求,需要建立任務(wù)隊(duì)列。請(qǐng)求得到響應(yīng)后,響應(yīng)結(jié)果放在緩沖區(qū),發(fā)送消息回對(duì)應(yīng)控件,由控件的處理函數(shù)分析響應(yīng)內(nèi)容。原理如圖3所示。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評(píng)論