基于linux的嵌入式浏览器的设计与实现
随着 intemet普及率的迅猛增长,浏览器成为获取信息的标准工具,并且已经为广大 intemet用户所接受。与浏览器相配合的各类软件,如视频、音频的 plug-in,都十分丰富。 intemet上产生了大量的可浏览资源,也证明了浏览器这种方式的正确性,浏览器将成为网络生活中的核心。另一方面,消费电子、计算机、通信 (3c)一体化趋势日趋明显,嵌入式技术成为研究热点,机顶盒、信息家电等新产品的出现让人们开始关注嵌入式系统,嵌入式浏览器也随之浮出水面。嵌入式浏览器可以广泛应用于 intenet-tv、idvd、web终端、数字电视机顶盒、掌上电脑等各种信息电器和便携式网络终端中,在工业控制领域也有着非常广阔的应用前景。
本文提出了一种基于 i肿 d(系统的嵌入式浏览器,并介绍了该浏览器的设计实现方法。 1系统基本原理
1.1嵌入式浏览器的基本工作流程输入 url,通过网络读取对应 html文件:交给 html的解析器进行解析,在解析的过程中如果发现新的 url(主要是图片、样式单以及 jscript外部代码 ),提交给网络部分去读取;在解析的过程中形成 dom树和 render树;最后利用解析结果生成对应控件并排版显层次关系如图 1所示。
1.2嵌入式 linux系统
对嵌入式应用环境下的 linux系统,要求代码空间小,运行速度快,资源需求少。可以通过对通用 i删 jx系统的配置和功能代码精简得到,也可采用商业的嵌入式 linux。
1.3嵌入式 gui
gui(图形用户接口)是浏览器的运行平台,并提供了窗口编程的接口函数。嵌入式 gui必须运行效率高,功能精干。常用的嵌入式 gui有 microwindows、opengui、qt/enbedded、 minigui等。
1.4网络访问
网络访问通过 http(超文本传输协议)实现浏览器与 web服务器之间的通信,hitp规定了发送和处理请求的标准方式,规定了浏览器和服务器之间传输的消息格式及各种控制信息。
1.5 dtd
dtd(文档类型定义)定义了 html文件中所有的标签和属性,及标签的嵌套关系和属性的取值范围。它是解析 html文件的基础。
1.6 dom
dom(文档对象模型)是 html,文件解析的结果。它的内容包括了当前 html文件中所有的元素、元素的子元素、元素的属性、元素的样式、元素的事件等。
1.7 render树
render树供排版输出程序使用。 render.树结构与 dom树类似,html解析器生成 dom树的同时生成 render树。render树的内容定义了实际显示区域的嵌套关系。
2系统设计概要
2.1 html解析
html解析主要功能是分析取得的 html文件,辨认出标签、属性和内容,并根据 dtd定义校验元素结构关系。解析结果形成 dom树和 render树,供输出引擎排版显示。如图 2所示。
html解析可分为以下几个子模块:
2.1.1 dtd构建。
dtd定义了 html。的语法规范。根据应用需要可选择 transitional dtd、fiarileset dtd及 strict dtd。依据 dtd规范说明,可以建立啪表格,每一个 dtd表格记录定义一种标签的基本信息,包括元素 id、元素名、子元素列表、属性列表等。解析 html.必须首先构建 dtd表格。
2.1.2语法分析 html文件
语法分析的主要思路是:读 htmi。缓存区。如是起始标签,分析标签内的标签名、属性和属性值,根据 [rid定义判断此标签是否能被栈顶标签包容 (为判断元素的嵌套关系。建立的一个栈表),如合法,生成 dom节点,如果此标签需有结束标签,此标签入栈;如包含关系不正确,放弃此标签,继续读缓存。如是结束标签,从栈顶向下查找有否对应起始标签,如有,将对应起始标签以上的栈元素出栈;如没有,放弃此标签,继续读缓存。如是标签间的文本,则放至文本缓冲区,直到读到标签时,生成文本 dom节点,插入到 dom树中。在生成 dom节点时,生成对应的 render节点(dom节点与 render节点不一定对应)。每个 render节点代表一矩形区域,render类型指明该矩形区域的特性,可分为: blockbox、inlinebox、linebox、anonymous blockbox等。在后面排版显示中将介绍各类 render的使用。
2.1.3 css的应用
作用于标签的 css可分为三类:标签的缺省样式、从上层标签继承的样式、标签属性中定义的样式。它们从小到大的应用优先级是:缺省样式、继承上层标签的样式、标签属性中定义的样式。在生成 dom节点时,分析以上三类样式定义.得到当前元素的应用样式单。样式的数据结构与属性类似。
2.2排版显示排版输出模块利用对 html文件解析的结果 dom树和 render树,生成浏览器窗口及相应的控件,并在屏幕上排版显示。排版是基于 css2的规范进行的。
排版显示基本原理:所有的 html元素在屏幕上都表示为矩形区域 (box)。排版实际上就是把这些 box摆到正确的位置上。 box主要可分为 inlinebox、blockbox。blockbox代表一个矩形容器框,linline box表现为文字、图片等具体内容形成的矩形区域。一个 block box的直系儿子要么全是 block,要么全是 inline。若一个 block box的儿子中,既有 block又有 inline,就要包装一层.即把 inline box用一个 block box包起来。这个自动产生的 block box就是所谓的 anonymous block box。若一个 lnline:box有 block leve的儿子,那么它自己也应转为 block level。即 inline box不可能有 block box做儿子。 (block box和 inline box的包含关系要求的实现在前面生成 render节点时解决)一个 box可以在三种定位方式下进行排版:常规定位、绝对定位、浮动定位。通过元索的属性 position和 float可以设置定位方式。
2.3网络访问
利用 linux系统的 http函数库,实现浏览器与 web服务器的通讯。为了管理多个通讯请求,需要建立任务队列。请求得到响应后,响应结果放在缓冲区,发送消息回对应控件,由控件的处理函数分析响应内容。原理如图 3所示。
主要接口函数: addjobtbqueue(struct job*job):加入新任务到任务队列 gethtmlfile();利用 http函数实现任务队列的头个任务 networkcontml():任务调度
3系统功能特点及实现情况此系统设计实现了浏览器的基本功能,能够满足一般嵌入式环境的需要。在优秀的嵌入式 gui上开发项目,可以借用最新的科研成果,加快开发进度。系统结构简单,易于实现。代码量较小,资源占用较少。在国产著名自由软件 minigui下已成功实现。
4结语
本文的创新点是基于现有的嵌入式 gui,利用系统的 htep函数库实现网络访问,根据文档类型定义和层叠式样式表规范,解析 html文件和排版显示。设计与实现了基于 linux系统的嵌入式浏览器的基本功能,满足一般嵌入式环境的需要。其次,本系统简单,易于实现,代码较小,资源占有较少。
参考文献
[1] paul tranblett,王伯欣译 .j2me无线 java应用开发 [m].人民邮电出版社 ,2002.
[2]王楠, 邓依群 . 嵌入式 internet的实现技术与安全问题分析 . [j].微计算机信息 , 2006, 9-2:
12-15.
[3]白小明, 邱桃荣.基于 linux的嵌入式实时操作系统的研究 [j]. 微计算机信息, 2006,2-2: 78-79、40.
[4]张科. 多接口嵌入式 web服务器的设计与实现 [d].南京理工大学 ,2007.7
主动红外入侵探测器的安装环境_主动红外探测器的安装注意事项
联通上线5G升级包 9.9元即可畅享5G流量
嵌入式状态监测与故障诊断装置设计
智能硬件创新设计行业走势及战略布局
基于LINUX的嵌入式浏览器的设计与实现
华为史上最好看手机今天发布 叫板iPhone7
带鱼屏+升降镜头?颜值超高,但看到处理器?再见?
适用于传输少量数据的蓝牙低能耗技术
IBM助力客户斩获多项IDC中国未来企业大奖
三种write mode,你真的理解吗?
主动红外入侵探测器的安装环境_主动红外探测器的安装注意事项
联通上线5G升级包 9.9元即可畅享5G流量
嵌入式状态监测与故障诊断装置设计
智能硬件创新设计行业走势及战略布局
基于LINUX的嵌入式浏览器的设计与实现
华为史上最好看手机今天发布 叫板iPhone7
带鱼屏+升降镜头?颜值超高,但看到处理器?再见?
适用于传输少量数据的蓝牙低能耗技术
IBM助力客户斩获多项IDC中国未来企业大奖
三种write mode,你真的理解吗?