首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式 linux 智能设备应用中 web 支持的实现(2)

嵌入式 linux 智能设备应用中 web 支持的实现(2)

清单 1. MainWindow 构造函数的代码段
                                 QWebView* view = new QWebView ( this );  // 设置窗体左上角的坐标以及长宽 view -> setGeometry( 50 , 50 , 400 , 300 );  view -> show();  view -> load( QUrl("http://www.google.com") ); 设备网络配置好之后,运行程序,我们就可以看到在窗体中有一个区域显示出 google 的主页(编译的时候要注意在项目的 pro 文件中包含 WebKit 的头文件路径和动态库)。可见,Qt 已经将 WebKit 做了很好的封装,子应用程序中加入网页浏览功能是非常方便的。
如果希望能知道网页加载的进度,可以通过如下的代码来实现:
首先实现槽函数的定义:
清单 2. 槽函数的定义
                                 Private slot:  void setProgress(int progress)  {  // progress,即百分比进度 }  void loadFinished()  {  // 表示网页加载完毕 } 第二步连接 Qt 的信号与槽函数:
清单 3. 连接 Qt 信号与槽函数
                                 connect(view , SIGNAL(loadProgress(int)), this, SLOT(setProgress(int)));  connect(view , SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); 这样,在程序中加一个进度条表示网页加载过程就实现了。




用 Web 取代本地 UI 的应用
在嵌入式 Linux 智能设备上有一个典型的应用:信息机,或者广告机。这种机器一般都带有一个屏幕,有些会有触摸屏。屏幕上会组合显示文字、图片和视频,或者提供简单的查询功能。这种类型的设备最先是由内置 PC 来实现的,在各种服务大厅供用户使用。现在普遍使用嵌入式系统来取代 PC,以降低成本。
我们在银行、通信运营商服务大厅、医院、电梯房等地方经常能看到各种各样的广告机。一个典型的屏幕显示情况如下:
图 1. 广告机屏幕示例

这是组合比较复杂的情况,也有整个屏幕就是文字、图片或者视频的。与传统和大型软件开发相比,实现这样的功能看上去并不算很难。开发人员可能需要在嵌入式平台自己去实现字幕、图片和天气的显示组件或者模块(暂时忽略视频播放功能),然后在屏幕上进行显示即可。比较困难的地方在于以下几个方面:
内容显示
图片和字幕需要以某种格式进行存放,天气信息来源于 Internet,开发人员需要编写代码对这些内容进行显示,并根据不同规则对内容进行切换。如有以下的配置文件内容:
清单 4. 屏幕配置文件 1
                                 <screen>    <duration>30</duration>    <pic>1.jpg</pic>    <text>1.txt</text>    <video>1.avi</video>    <weather>http://xxxxx.HTML</weather>  </screen>  <screen>    <duration>25</duration>    <pic>2.jpg</pic>    <text>2.txt</text>    <video>2.avi</video>    <weather>http://xxxxx.HTML</weather>  </screen>  ...  ... 开发人员需要编写一个解析器,能够解析这个 xml 文件,并且按照其中的规则进行内容的显示。
内容更新
如果需要对广告机的内容进行更换,维护人员则需要将内容按照这个格式进行编排。编排的效果是需要反复调整的,这个时候,要不就是每次都用一台广告机来看实际效果,要不然可能还需要专门设计一个预览程序。
显示布局
屏幕的显示布局很可能也是要变动的,那么意味着布局最好也是可配置的,折旧要求广告机程序能够解析并且实现显示布局的配置。如果说解析上面的配置文件并不是很麻烦的事情,但是如果配置文件变成下面这样,就不一样了。
清单 5. 屏幕配置文件 2
                                 <screen>     <duration>30</duration>     <pic x=800 y=200 width=320 height=240>1.jpg</pic>     <text x=0 y=600 width=1024 height=240>1.txt</text>     <video x=0 y=0 width=800 height=600>1.avi</video>     <weather>http://xxxxx.HTML</weather>  </screen>  <screen>     <duration>30</duration>     <pic x=800 y=200 width=320 height=240>2.jpg</pic>     <pic x=800 y=400 width=320 height=240>22.jpg</pic>     <text x=0 y=600 width=1024 height=120>2.txt</text>     <text x=0 y=800 width=1024 height=120>22.txt</text>     <video x=0 y=0 width=800 height=600>2.avi</video>     <weather>http://xxxxx.HTML</weather>  </screen>  ...  ... 不但各种元素的位置可配置,图片、文本等的数量也发生了改变。这个时候,解析程序将变得相当复杂。当更多的需求出现,如要求配置滚动字幕的速度、背景颜色,要求图片和文字等内容可以单独配置刷新时间等,这样的配置文件不会比 HTML 标准简单,而解析程序的规模也将急剧膨胀。
综上,广告机的软件关键并不在于内容如何能显示出来,而是软件需要有复杂的解析能力,能够支持可配置的布局和内容。目前这些广告机的配置文件大多使用 xml 来存储信息,而一个能够同时解决复杂布局和内容显示的程序,实际上已经非常类似浏览器的概念了。那么,让我们从真正的浏览器的角度来看待广告机的这些问题。
如果把屏幕内容当成一个网页的话,屏幕布局、内容显示、更新、维护等都转换成了设计网页的问题,而最关键的解析程序的开发可以忽略,用已有的成熟的浏览器取代。这里的网页设计并不关系到网页服务器端的开发,因为广告机的内容大多是存储在本地,所以只需要直接设计页面。页面内容的更新,或者整个页面的更新都可以通过标准 HTML,或者 JavaScript 之类脚本里实现。对于“天气”播放功能的实现就更加简单了,之前的方式需要编写程序通过网络从远程获取数据然后显示,比较麻烦。转换成网页模式之后,只需要在网页中嵌入一个子网页,指向远程的服务器链接即可。可见,以广告机为例,在架构上使用网页来取代之前的模式,能充分利用已有的资源和工具,极大的减少开发的工作量。
我们再考虑另外一种应用:带交互的信息查询机。带交互功能的信息机主要提供给人们索引和查询信息的功能,信息被分类并且根据索引存储,信息机的解析程序通过与用户的交互,显示所需要的信息。实际上,交互和索引跳转是网页天生的特性,所以,同样可以采用网页和浏览器的模式取代编写本地程序进行交互和解析,可以把几乎所有的工作转换成网页设计,从而将开发工作量减到了最低。




从 C/S 到 B/S 的转换
在嵌入式智能设备的应用中,有很大一部分是嵌入式智能终端需要与远程的服务器进行连接,通过人机交互和数据采集来实现应用,比较典型的就是点菜机。
无线点菜机是一种很常见的嵌入式智能设备,大多采用 Windows CE 或嵌入式 Linux 作为操作系统。如果把点菜机当成一个 PC 系统,那么这就是一个非常典型的客户端 / 服务器架构的应用。
继承事业,薪火相传
返回列表