基于LINUX的嵌入式瀏覽器的設計與實(shí)現
摘要:嵌入式瀏覽器可以廣泛應用于各種信息電器和便攜式網(wǎng)絡(luò )終端中,在工業(yè)控制領(lǐng)域也有著(zhù)非常廣闊的應用前景。本文提出了一種基于LINUX的嵌入式瀏覽器,介紹了實(shí)現方法和主要功能特點(diǎn)。該瀏覽器基于現有的嵌入式GUI,利用系統的HTEP函數庫實(shí)現網(wǎng)絡(luò )訪(fǎng)問(wèn),根據文檔類(lèi)型定義和層疊式樣式表規范,解析HTML文件和排版顯示。此系統在MiniGUI下已成功實(shí)現。
本文引用地址:http://dyxdggzs.com/article/149189.htm0引言隨著(zhù)Intemet普及率的迅猛增長(cháng),瀏覽器成為獲取信息的標準工具,并且已經(jīng)為廣大Intemet用戶(hù)所接受。與瀏覽器相配合的各類(lèi)軟件,如視頻、音頻的Plug-in,都十分豐富。Intemet上產(chǎn)生了大量的可瀏覽資源,也證明了瀏覽器這種方式的正確性,瀏覽器將成為網(wǎng)絡(luò )生活中的核心。另一方面,消費電子、計算機、通信(3C)一體化趨勢日趨明顯,嵌入式技術(shù)成為研究熱點(diǎn),機頂盒、信息家電等新產(chǎn)品的出現讓人們開(kāi)始關(guān)注嵌入式系統,嵌入式瀏覽器也隨之浮出水面。嵌入式瀏覽器可以廣泛應用于Intenet-Tv、iDVD、Web終端、數字電視機頂盒、掌上電腦等各種信息電器和便攜式網(wǎng)絡(luò )終端中,在工業(yè)控制領(lǐng)域也有著(zhù)非常廣闊的應用前景。
本文提出了一種基于I腫D(系統的嵌入式瀏覽器,并介紹了該瀏覽器的設計實(shí)現方法。
1系統基本原理1。1嵌入式瀏覽器的基本工作流程輸入URL,通過(guò)網(wǎng)絡(luò )讀取對應HTML文件:交給HTML的解析器進(jìn)行解析,在解析的過(guò)程中如果發(fā)現新的URL(主要是圖片、樣式單以及Jscript。外部代碼),提交給網(wǎng)絡(luò )部分去讀??;在解析的過(guò)程中形成DOM樹(shù)和Render樹(shù);最后利用解析結果生成對應控件并排版顯示。層次關(guān)系如圖1所示。

1。2嵌入式LINUX系統對嵌入式應用環(huán)境下的LINUX系統,要求代碼空間小,運行速度快,資源需求少??梢酝ㄟ^(guò)對通用I刪JX系統的配置和功能代碼精簡(jiǎn)得到,也可采用商業(yè)的嵌入式LINUX。
1。3嵌入式GUIGUI(圖形用戶(hù)接口)是瀏覽器的運行平臺,并提供了窗口編程的接口函數。嵌入式GUI必須運行效率高,功能精干。常用的嵌入式GUI有MicroWindows、OpenGUI、QT/Enbedded、MiniGui等。
1。4網(wǎng)絡(luò )訪(fǎng)問(wèn)網(wǎng)絡(luò )訪(fǎng)問(wèn)通過(guò)HTTP(超文本傳輸協(xié)議)實(shí)現瀏覽器與Web服務(wù)器之間的通信,H'ITP規定了發(fā)送和處理請求的標準方式,規定了瀏覽器和服務(wù)器之間傳輸的消息格式及各種控制信息。
1。5DTDDTD(文檔類(lèi)型定義)定義了HTML文件中所有的標簽和屬性,及標簽的嵌套關(guān)系和屬性的取值范圍。它是解析HTML文件的基礎。
1。6DOMDOM(文檔對象模型)是HTML,文件解析的結果。它的內容包括了當前HTML文件中所有的元素、元素的子元素、元素的屬性、元素的樣式、元素的事件等。
1。7RENDER樹(shù)RENDER樹(shù)供排版輸出程序使用。RENDER.樹(shù)結構與DOM樹(shù)類(lèi)似,HTML解析器生成DOM樹(shù)的同時(shí)生成RENDER樹(shù)。RENDER樹(shù)的內容定義了實(shí)際顯示區域的嵌套關(guān)系。
2系統設計概要2。1HTML解析HTML解析主要功能是分析取得的HTML文件,辨認出標簽、屬性和內容,并根據DTD定義校驗元素結構關(guān)系。解析結果形成DOM樹(shù)和RENDER樹(shù),供輸出引擎排版顯示。如圖2所示。

圖2瀏覽器基本工作流程HTML解析可分為以下幾個(gè)子模塊:2。1。1DTD構建。
DTD定義了HTMl。的語(yǔ)法規范。根據應用需要可選擇TransitionalDTD、FIarIlesetDTD及StrictDTD。依據DTD規范說(shuō)明,可以建立啪表格,每一個(gè)DTD表格記錄定義一種標簽的基本信息,包括元素ID、元素名、子元素列表、屬性列表等。解析HTML.必須首先構建DTD表格。
2。1。2語(yǔ)法分析HTML文件語(yǔ)法分析的主要思路是:讀HTMI。緩存區。如是起始標簽,分析標簽內的標簽名、屬性和屬性值,根據[riD定義判斷此標簽是否能被棧頂標簽包容(為判斷元素的嵌套關(guān)系。建立的一個(gè)棧表),如合法,生成DOM節點(diǎn),如果此標簽需有結束標簽,此標簽入棧;如包含關(guān)系不正確,放棄此標簽,繼續讀緩存。如是結束標簽,從棧頂向下查找有否對應起始標簽,如有,將對應起始標簽以上的棧元素出棧;如沒(méi)有,放棄此標簽,繼續讀緩存。如是標簽間的文本,則放至文本緩沖區,直到讀到標簽時(shí),生成文本DOM節點(diǎn),插入到DOM樹(shù)中。在生成DOM節點(diǎn)時(shí),生成對應的RENDER節點(diǎn)(DOM節點(diǎn)與RENDER節點(diǎn)不一定對應)。每個(gè)RENDER節點(diǎn)代表一矩形區域,RENDER類(lèi)型指明該矩形區域的特性,可分為:BlockBOX、InlineBOX、LineBOX、AnonymousBlockBOX等。在后面排版顯示中將介紹各類(lèi)RENDER的使用。
2。1。3CSS的應用作用于標簽的CSS可分為三類(lèi):標簽的缺省樣式、從上層標簽繼承的樣式、標簽屬性中定義的樣式。它們從小到大的應用優(yōu)先級是:缺省樣式、繼承上層標簽的樣式、標簽屬性中定義的樣式。在生成DOM節點(diǎn)時(shí),分析以上三類(lèi)樣式定義.得到當前元素的應用樣式單。樣式的數據結構與屬性類(lèi)似。
2。2排版顯示排版輸出模塊利用對HTML文件解析的結果DOM樹(shù)和RENDER樹(shù),生成瀏覽器窗口及相應的控件,并在屏幕上排版顯示。排版是基于CSS2的規范進(jìn)行的。
排版顯示基本原理:所有的HTML元素在屏幕上都表示為矩形區域(Box)。排版實(shí)際上就是把這些Box擺到正確的位置上。Box主要可分為InlineBox、BlockBox。BlockBox代表一個(gè)矩形容器框,Linlinebox表現為文字、圖片等具體內容形成的矩形區域。一個(gè)BlockBox的直系兒子要么全是Block,要么全是Inline。若一個(gè)BlockBox的兒子中,既有Block又有Inline,就要包裝一層.即把inlinebox用一個(gè)BlockBox包起來(lái)。這個(gè)自動(dòng)產(chǎn)生的BlockBox就是所謂的AnonymousBlockBox。若一個(gè)Lnline:Box有BlockLeve的兒子,那么它自己也應轉為Blocklevel。即InlineBox不可能有BlockBox做兒子。(Blockbox和Inlinebox的包含關(guān)系要求的實(shí)現在前面生成RENDER節點(diǎn)時(shí)解決)一個(gè)Box可以在三種定位方式下進(jìn)行排版:常規定位、絕對定位、浮動(dòng)定位。通過(guò)元索的屬性position和float可以設置定位方式。
2。3網(wǎng)絡(luò )訪(fǎng)問(wèn)利用LINUX系統的HTTP函數庫,實(shí)現瀏覽器與WEB服務(wù)器的通訊。為了管理多個(gè)通訊請求,需要建立任務(wù)隊列。請求得到響應后,響應結果放在緩沖區,發(fā)送消息回對應控件,由控件的處理函數分析響應內容。原理如圖3所示。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論