




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第18卷第1期牡丹江大學學報Vol.18No.12009年1月JournalofMudanjiangUniversityJan.2009文章編號:1008-8717(2009)01-0107-03IPTV機頂盒嵌入式瀏覽器的設計與實現李美(牡丹江大學,黑龍江牡丹江157011)摘要:本文主要是根據嵌入式瀏覽器的需求,對嵌入式瀏覽器系統進行設計與實現。根據嵌入式瀏覽器的系統設計,把瀏覽器分為網絡通訊模塊、JavaScript解析模塊和GUI模塊。網絡通訊模塊負責瀏覽器與網絡的數據交互。JavaScript解析模塊負責解析網頁。Layout模塊負責對解析出來的數據進行布局。GUI模塊負責調用圖形庫函數,將生成的數據在屏幕上顯示出來。對嵌入式瀏覽器的測試結果表明,整個系統達到了預期的所有功能,對JavaScript的支持良好,顯示效果與主流桌面瀏覽器相差不大。關鍵詞:IPTV;嵌入式瀏覽器;網頁解析;JavaScrip;中圖分類號:TP39文獻標識碼:A一、引言近幾年,隨著數字電視的發展,機頂盒市場迅速崛起。現在的機頂盒系統已經從接收數字電視信號這一單一的功能向具備上網、Flash游戲、電子節目指南等多功能的方向發展。而隨著網絡技術的迅猛發展,嵌入式瀏覽器將成為機頂盒系統必不可少的一部分。目前,大部分機頂盒系統都不具備上網功能,而將嵌入式瀏覽器集成在機頂盒系統中,可以解決這一問題。IPTV機頂盒系統就是集成了嵌入式瀏覽器的機頂盒系統,它提供了上網功能,解決了用戶通過電視機就可以上網的問題。本論文目的在于著眼于IPTV行業的發展趨勢。IPTV行業的巨大發展潛力,使得其主要接受解碼終端IPTV機頂盒也得到巨大的發展空間。現在,隨著網絡的發展,網絡用戶在不斷增多。用戶遨游網絡世界,離不開瀏覽器。但是針對于普通的用戶來說,為了上網而配備一臺電腦是不合適的。而對于這種現狀,IPTV行業的發展則提供了很好的解決辦法,在IPTV機頂盒中集成嵌入式瀏覽器,提供上網功能。家庭用戶購買了IPTV機頂盒設備,成本比購買一臺電腦要小得多,卻使得普通用戶可以通過電視機上網。在集成了嵌入式瀏覽器后,用戶收看電視不再是被動的觀看,而是可以按自身意愿選擇自己愿意觀看的節目,這充分體現了集成了嵌入式瀏覽器的IPTV機頂盒的互動性。因此,研制與開發IPTV機頂盒嵌入式瀏覽器,具有重要的實際應用意義。二、解析JavaScript技術在嵌入式瀏覽器的項目開發中,對于JavaScript的收稿日期:2008-09-07支持也是必不可少的。JavaScript就是適應動態網頁制作的需要而誕生的一種新的編程語言,如今越來越廣泛地使用于Internet網頁制作上。Javascript是由Netscape公司開發的一種腳本語言(scriptinglanguage),或者稱為描述語言。在HTML基礎上,使用Javascript可以開發交互式Web網頁。Javascript的出現使得網頁和用戶之間實現了一種實時性的、動態的、交互性的關系,使網頁包含更多活躍的元素和更加精彩的內容。(一)JavaScript簡介JavaScript是一種基于對象和事件驅動并具有安全性能的腳本語言,有了JavaScript,可使網頁變得生動。使用它的目的是與HTML超文本標識語言一起實現在一個網頁中鏈接多個對象,與網絡客戶交互作用,從而可以開發客戶端的應用程序。它是通過嵌入或調入在標準的HTML語言中實現的。JavaScript具有很多優點:(1)簡單性,JavaScript是一種腳本編寫語言,它采用小程序段的方式實現編程,像其它腳本語言一樣,JavaScript同樣已是一種解釋性語言,它提供了一個簡易的開發過程。(2)動態性,JavaScript是動態的,它可以直接對用戶或客戶輸入做出響應,無須經過Web服務程序。(3)跨平臺性,JavaScript是依賴于瀏覽器本身,與操作環境無關,只要能運行瀏覽器的計算機,并支持JavaScript的瀏覽器就可以正確執行。JavaScript加入網頁有兩種方法:1.直接加入HTML文檔這是最常用的方法,大部分含有JavaScript的網頁107都采用這種方法,如:<scriptlanguage="Javascript">document.write("這是Javascript!采用直接插入的方法!");</script>在這個例子中,我們可看到一個新的標簽:<script>……</script>,而<scriptlanguage="Javascript">用來告訴瀏覽器這是用JavaScript編寫的程序,需要調動相應的解釋程序進行解釋。在標簽<scripr>和</scripr>中的程序就是我們所需要的JavaScript語句。另外一點需要注意的是,<script>……</script>的位置并不是固定的,可以包含在<head></head>或<body></body>中的任何地方。2.引用方式如果已經存在一個Javascript源文件(以js為擴展名),則可以采用這種引用的方式,以提高程序代碼的利用率。其基本格式如:<scriptsrc=urllanguage="Javascript"></script>其中的Url就是程序文件的地址。同樣的,這樣的語句可以放在HTML文檔頭部或主體的任何部分。如果要實現“直接插入方式”中所舉例子的效果,可以首先創建一個Javascript源代碼文件“Script.js”,其內容如下:document.writeln("這是Javascript!采用直接插入的方法!");在網頁中可以這樣調用程序:<scriptsrc="Script.js"language="Javascript"></script>。(二)解析JavaScript技術在分析JavaScript語句的語法結構時發現,嵌入的JavaScript語句都是由用戶自定義函數或者采用已經定義好的函數,以及一些變量聲明和賦值來組成。而用戶自定義函數都是由“function”來定義的。所以在解析過程中,我們把自定義函數的函數名和函數體一起處理,而將另外一些單獨的JavaScript語句另外處理。在解析完成后,交由JavaScript引擎處理JavaScript語句,然后JavaScript引擎返回的結果交由JavaScript解析模塊處理。在本文中,采用的JavaScript引擎是由Mozilla的SpiderMonkeyJavaScript引擎改進而來的。SpiderMonkey是用C語言實現的JavaScript引擎,功能十分強大,并且對外公開源代碼。雖然目前沒有針對嵌入式系統的版本,但是針對我們的嵌入式系統對SpiderMonkey進行改造移植,得到了可運行在本文中的嵌入式瀏覽器中的JavaScript引擎。三、JavaScript解釋器設計(一)JavaScript解釋器概述JavaScript解釋器(下文簡稱JS解釋器)主要用于解析HTML文件中嵌入的JavaScript腳本語言,實現與用戶的交互功能。JavaScript解釋器是瀏覽器解析模塊功能的擴展,由HTML解析器調用,當HTML解析器在108結構體名序號123成員HTML頁面中遇到<script>標簽時,即從HTML文檔中把JavaScript腳本分離出來,再調用JavaScript解釋器對腳本進行解釋和執行。在本文中實現對JavaScript的支持,主要是JavaScriptParser模塊調用JavaScript引擎的API函數來進行解釋、執行。在本文中,采用的JavaScript引擎是由Mozilla的SpiderMonkeyJavaScript引擎改進而來的。SpiderMonkey是用C語言實現的JavaScript引擎,功能十分強大,并且對外公開源代碼。雖然目前沒有針對嵌入式系統的版本,但是針對我們的嵌入式系統對SpiderMonkey進行改造移植,得到了可運行在本文中的嵌入式瀏覽器中的JavaScript引擎。(二)JavaScript解釋器設計的重點JavaScript解釋器的設計重點是如何使用JavaScript引擎解釋執行JS語句。一般來說,要在程序中使用JS引擎,首先要在C程序中加入“#includejsapi.h”來確保編譯器知道有哪些引擎的API可以調用。然后在應用程序中提供支持結構和變量聲明。使用jsapi.h中定義的JS數據類型來聲明結構和變量。最后是在程序代碼中嵌入合適的JS引擎API調用和變量引用,包括初始化內置JS對象,和創建組成任何應用程序要用的自定義對象。要讓應用程序能解釋JavaScript,必須遵循某些JSAPI嵌入習慣。大部分情況下,這些函數的插入順序是很重要的。例如,在調用其他JSAPI之前必須初始化JSRunTime,同樣在終止程序之前必須釋放JSRunTime。大多數JS引擎調用都會返回一個值。如果這個值是零或者空,它通常表示一個錯誤的情況發生了。如果值非零,它一般表示成功;在這些情況下,返回的值常常會是你的程序需要使用的指針,或者存起來留以后引用。很重要的是,你的程序至少應該每次檢查JS調用返回的值。(三)JavaScript解釋器主要數據結構設計關于JS函數的數據結構如表2-1所示。表2-1JS函數數據結構表parse_js_function說明char*js_function_name保存JS函數的函數名char*js_function_body保存JS函數的函數體structparse_js_function*next這樣,在頁面有事件觸發時,根據相應執行的函數名,從parse_js_function中找到一個js_function_name相符的屬性,其js_function_body屬性即為要執行的JS函數的函數體。至此就實現了從Js函數名到Js函數體的映射。(四)JavaScript解釋器的設計HTML解釋器共分為兩個功能子模塊:解析JS語句子模塊、處理JS語句子模塊。解析標簽子模塊主要是負責解析嵌入網頁中的JS語句,將JS語句存儲到恰當數據結構中。處理JS語句子模塊主要負責將解析出來JS語句交給JS庫進行處理。JS解釋器結構圖如圖2-1所示。創建一個JSPropertySpec數據類型,并把它和屬性的信息組裝成對象的屬性,包括參數的獲取(get)和設置(set)方法的名稱。創建一個JSFunctionSpec數據類型,并把它和方法的信息組裝成對象使用的方法。創建一個實際的C函數用來處理對象的方法調用。調用JS_NewObject或者JS_ConstructObject來實例化這個對象。調用JS_DefineFunctions來創建這個對象的方法。調用JS_DefineProperties來創建這個對象的屬性。(七)JavaScript解釋器主要函數設計1.parse_js_function*parse_js(void)函數。本函數負責解析JavaScript語句,并將其保存在JS數據結構中。2.parse_js_clean_string(char*string)函數。本函數負責清除字符串中多余的空格字符。3.parse_js_function*parse_js_alloc_function(char*name,char*body)函數。本函數負責存儲函數的函數名和函數體。4.parse_js_call_jsengine(char*script)函數。本函數負責解釋執行JavaScript語句。5.parse_get_jsfunction(structparse_js_function*jsp,char*name)函數。本函數負責根據相應函數名來獲取其對應函數體。四、JavaScript解釋器的實現(一)JS解釋器的實現JS圖2-1JS解釋器結構圖(五)JavaScript解釋器解析JS語句子模塊的設計在分析JavaScript語句的語法結構時發現,在嵌入的JavaScript語句都是由用戶自定義函數或者采用已經定義好的函數,以及一些變量聲明和賦值來組成。而用戶自定義函數都是由“function”來定義的。所以在解析時,本文把自定義函數的函數名和函數體存儲到一定的數據結構中,在HTML標簽中有事件觸發這個函數時,將從此數據結構中查找對應的函數。然后交由JS語句處理模塊進行處理。而另外一些單獨的JavaScript語句將存儲到一個字符數組中,然后直接交給JS語句處理模塊處理。(六)JavaScript解釋器處理JS語句子模塊的設計這個模塊主要是調用JavaScript引擎的API函數來對JS語句進行解釋、執行的。要解釋執行JS語句,必須按照下面的順序調用API函數:1.在瀏覽器程序中聲明全局JS變量,包括RunTimc、一個Context和一個全局對象。2.調用JS_NewRuntime函數API創建并初始化一個JSRunTime(運行時),瀏覽器應用程序使用的變量、對象和上下文都保存在JSRunTime中,JavaScript解釋器利用它來管理上下文、對象和與JS函數及腳本相關的變量。3.調用JS_NewContext函數APl創建并初始化一個上下文(Context),并將其與JSRunTimc關聯起來,一個上下文代表一個腳本,引擎傳遞上下文信息給運行腳本的線程。4.調用JS_NewObject函數API創建并初始化一個全局對象。5.調用JS_InitStandardClasses函數API實例化內置對象和全局對象。6.調用JS_EvaluateScript函數API,將在HTML文檔中得到的JavaScript字符串作為參數進行解釋執行。7.以上所說的RunTime,Context以及各種對象等,在JavaScript腳本解釋執行完后,都需要調用JavaScript引擎的API來進行釋放。這樣就可以解析JS語句了。當然為了實現更多功能,在本文中將創建自定義的對象。采用的具體方法如下所示:圖3-1JS解釋器實現流程圖當HTML解析器在HTML頁面中遇到<script>標簽時,即從HTML文檔中把JavaScript腳本(下轉114頁)109就成“死譯”了。例如:Insomeautomatedplantselectroniccomputerscontroltheentireproductionline.在某些自動化工廠,電子計算機控制整個生產線。(直譯)Manganesehasthesameeffectonthestrengthofsteelassilicon.錳有同樣的影響在強度的鋼上像硅。(死譯)很明顯,后句既不忠實原意,又不符合漢語的表達方式。因此,必須運用詞類轉換、成分轉換和語序調整等手段使譯文通順。改譯為:錳像硅一樣會影響鋼的強度。而涉及到具體的翻譯實踐的時候,科技英語中又有一些具體的翻譯方法:1.對于像計量單位、科技發明、材料、化學品名稱等這樣的技術術語,比如:ohm(歐姆),calorie(卡路里),joule(焦耳),nylon(尼龍),Vaseline(凡士林),micabond(米卡邦德〈一種絕緣材料〉),sonar(聲納),quark(夸克),logic(邏輯),等等采用音譯法。2.對于有些技術術語來說,它們既有意譯名,又有音譯名,二者同時使用。但是我們也可以發現意譯逐漸取代著音譯。例如:vitamin:維生素(意)/維他命(音)penicillin:青霉素/盤尼西林microphone:話筒/麥克風combine:聯合收割機/康拜因3.有些技術術語在翻譯中,部分使用音譯,部分使(上接109頁)分離出來,JS解釋器獲取JS語句。然后判斷是否為函數,如果是的話存儲函數到JS數據結構中,生成JS鏈表等待有調用函數的事件發生時,執行函數。如果不是的話存儲單獨得JS語句,調用JS引擎解釋執行JS語句。五、結論IPTV機頂盒嵌入式瀏覽器為了適應機頂盒網絡化的轉變,根據客戶需要提供上網這一服務。本文主要完成了IPTV機頂盒嵌入式瀏覽器系統設計與實現,分析了嵌入式瀏覽器系統的需求,針對需求對嵌入式瀏覽器系統進行了系統設計、系統功能設計、系統流程設計、網絡通訊模塊的設計、HTML解釋器的設計、JavaScript解釋器的設計、JavaScript解釋器實現了嵌入式瀏覽器對JavaScript的支持,在現今的網頁中嵌入了大量JS語句,通過JavaScript的支持,可以實現網頁中更多的功能。GUI模塊實現了將網頁顯示出來的作用,GUI界面是直接和用戶進行交互的,用戶就是通過它來使用瀏覽器的各種功能的。所以GUI針對不同的用戶要提供一個友好、易于操作的界面。這些特點和優點使本文中的嵌入式瀏覽器已經達到市場上流行的嵌入式瀏覽器的水平。而且作為自主研發的嵌入式瀏覽器,在嵌入機頂盒時不必再去購買別的公司的瀏覽器,使得成本大大降低,在機頂盒市場具備了很強的競爭力。但作為一個新產品,本文在實現中還存114用意譯,二者兼顧。例如:topology:拓撲學motorcycle:摩托車ampere2meter:安培表tannic2acid:丹寧酸neonsign:霓虹燈Franklinantenna:弗蘭克林天線總之,在科技文體的翻譯中,我們應認識到這種特殊文體的特殊性,靈活應變,切不可和普通英語的翻譯同一而論。作為翻譯者,平時要多注意補充這方面的詞匯,了解特殊領域的知識,這將更有利于英漢翻譯的順利進行。參考文獻:[1]方夢之.科技翻譯理論研究:十年評述與展望[J].中國翻譯,1992,(2).[2]黃澄紫.科技英語詞匯的統計特征[J].同濟大學學報(社會科學版),2002.[3]王泉水.科技英語翻譯技巧[M].天津:天津科學出版社,199
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國后骨架行業投資前景及策略咨詢研究報告
- 2025年快餐項目可行性研究報告
- 2025年中國鋁粉市場研究與未來發展趨勢報告
- 2025年甾體藥物項目規劃申請報告
- 2025年等離子體沉積和刻蝕設備項目提案報告
- 2025年住房金融項目提案報告模板
- 2025年半(全)自動打包機項目投資可行性研究分析報告
- 2025年規劃重點-頂蓋項目建議書(立項報告)
- 2024-2025公司廠級安全培訓考試試題含答案【達標題】
- 2025項目管理人員年度安全培訓考試試題含答案AB卷
- 公出單(標準模版)
- 教師師德考核表
- 物流專線合作協議書
- 企業價值評估2課件
- 盆腔器官脫垂的中國診治指南(2023年)
- 如何做好醫患溝通
- 江蘇省南師附中、天一中學、海門中學、海安中學2022-2023學年高二下學期6月四校聯考化學試題
- 食品安全責任保險課件
- 國開電大《應用寫作(漢語)》形考任務1-6答案
- 兒童腦癱康復課件
- 施工現場建筑垃圾處置方案
評論
0/150
提交評論