基于嵌入式Qt的车载GUI平台的设计详解

1 引言
随着经济社会的不断发展汽车已进入普通家庭,汽车用户对车载娱乐系统的要求不断地提高,希望汽车载娱乐系统的功能更加强大娱乐设施更加完美。嵌入式gui(graphical user interface)可以满足用户需求,人机交互好,作为车载娱乐系统中人机交互界面的开发平台,对整个系统的设计起着决定性作用,越来越受到开发者的青睐。目前比较流行的gui平台有qt/embedded、紧缩的x windows系统、microwindows以及minigui系统。
x window系统是一个基于客户/服务器(client/server)结构的视窗系统,基于x的终端(服务器)上显示出来。此系统配置在大多数的unix系统、dec的vax/vms操作系统以及linux系统中,可以自由拷贝以及传播,但是系统庞大,占用内核资源较多。microwindows是一个完全开放源码、分层设计的经典gui系统,可以替代x window系统,但是某些关键性代码使用了汇编语言。minigui系统适应于中小型企业的嵌入式gui平台,采用分层结构,并在核心层采用hash表的方式。本文采用的qt/embedded也是分层体系结构,在功能提供方面采用c++类方式。
2 嵌入式gui的实现平台
gui是图形用户接口,一般用于pc机上人机交互界面的设计。而对于嵌入式gui来说,由于嵌入式设备对资源的要求很严格,不同的嵌入式设备需要定制不同的嵌入式系统,那么对gui的要求也就不一样,因此,对于不同的嵌入式系统来说gui也必须是可定制的。对于嵌入式的硬件来说,要求定制的嵌入式gui应具有轻型、占用资源少、性能高、可靠性高、可配置等特点。由于linux操作系统具有源码公开性、可移植性、可裁剪性和灵活性等优点,所以嵌入式gui的开发常在linux环境下进行。
qt/embedded是著名的qt库开发商正在进行的面向嵌入式系统的qt版本。它是专门为嵌入式系统设计图形用户界面的工具包,包括一个完整的窗口系统。它的特点是可移植性比较好,设计者能轻易的加入各种显示设备和硬件输入设备,很多基于qt的xwindow都可以非常方便的移植到嵌入式版本。
qt/embedded为开发者提供了丰富的api调用功能,并公开源代码。qt/embedded提供了非常丰富的窗口小部件(widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面,但同时丰富的窗口对象也增大了软件的体积,所以,qt/embedded一般用于对运行环境不太苛刻的嵌入式设备中。
3 嵌入式qt系统的特点
qt/embedded移植了大量的原来基于qt的xwindows程序,并提供了非常完整的嵌入式gui解决方案,是一个成熟的gui平台,具有如下特点:
(1)qt遵循gpl协议,开放主要的源代码,用户可以在gpl的规定下自由添加新特性。
(2)与其他嵌入式gui相比,嵌入式qt不仅是一个完整的窗口系统,而且也是一个应用程序框架,这更有利于应用程序的开发。
(3)qt具有丰富的api,包括多达250个以上的c++类,支持诸如对图形、网络、数据库、i/o操作、各种控件和xmi等众多功能,可满足大多数嵌入式应用系统开发的需要。
(4)qt是一个gui仿真工具包,它使用各自平台上的低级绘图函数仿真ms windows和motif(商用llnix的标准gui库),因此程序运行速度快。
(5)qt良好的封装机制使得qt的模块化程度非常高,可靠性好,易于程序开发。
基于qt的这些特点,在本车载嵌入式娱乐系统的开发过程中,本文采用了嵌入式qt作为图形用户界面开发的gul支持平台,有效提高了应用程序的开发速度。
4 基于嵌入式qt的车载gui的设计
4.1 基于嵌入式qt的车载gui的总体设计
基于linux的车载娱乐系统运行环境如表l所示,底层由linux内核和驱动程序构成。该内核是经过裁减过的嵌入式linux2.4,其中包括电源管理系统;驱动程序提供对各种接口硬件的支持;中间层是基于qt/embedded的嵌入式qt库。它精简和优化了各种图形操作,程序运行时无需额外系统的支持,可以有效减少内存消耗和cpu负担。qt/embedded本身是可扩展的,并能不断地升级。开发人员可以根据自己所面对的嵌入式设备的实际需要,对其进行适当的裁减,经过裁减所得到的qt/embedded可以大约节约800k到3mb的内存空间,这样也就意味着用qt开发比用其他工具包开发相同的应用程序,在生成可执行文件后,代码所占用的内存空间要小。最顶层是整个车载娱乐应用系统,它是实现车载娱乐具体功能的应用集合。
基于嵌入式qt的车载嵌入式娱乐系统软件,最大限度的满足了车载视听娱乐的要求。提供视频播放、音频播放等多媒体软件,个人信息管理软件,无线网络服务等。其系统架构如图l所示。
4.2 基于嵌入式qt的窗口系统结构设计
本文设计的上层gui窗口系统采用了客户/服务器系统结构。该窗口系统包括:一个服务器进程、一个或者多个客户进程。服务器负责为客户和本身分配显示区域,生成鼠标、键盘或者触摸屏事件,它通常包含那些启动客户的用户界面。而客户则通过与服务器通信来申请显示区域,接受鼠标或触摸屏事件。客户可以直接访问所分配的显示区域,以便为用户提供gui服务。服务器和客户通过共享内存的方式来传递所分配显示区域上的信息。窗口系统体系结构如图2所示。
服务器(进程)维护着一组区域,当窗口被创建、移动、改变大小和破坏时,通过这组区域来改变每个客户的申请。该区域存放在共享内存中,在执行绘图操作时,客户可以从中读取信息;服务器连接着一些系统设备,如鼠标、键盘或者触摸屏,服务器负责将这些设备所产生的事件发送到适当的客户进程。服务器能够生成一个设备独立的鼠标或键盘事件,并将其发送到相应的客户进程。触笔设备通常没有鼠标光标,但是触笔操作能转化为设备独立的鼠标事件,然后由客户以标准事件进行处理。
嵌入式qt为客户(进程)提供api,当客户使用qt api画线时,qt/embedded库能直接访问显存,完成画线工作;在一些情况下嵌入式qt客户库需要与服务器进程建立连接,如在客户进程启动时,发生了会影响到全局后果的操作而与服务器通信时。例如,当客户进行了拖放操作后,由于窗口覆盖而导致显示区域的变化,则从用户那里接收到鼠标和键盘事件时就需要建立这样的连接;嵌入式qt客户库负责处理所有的绘画操作,包括文本显示和字体处理等。
4.3 基于嵌入式qt的事件响应设计
在前述的客户/服务器系统结构中,每个键的按下、释放都以qwskeyevent事件发出。一个qwskeyevent事件通常包括以下各域:
unicode:unicode值。
keycode:qt键码值,定义在qnamespace.h头文件中。
modifier:位域, 包括qt::shiftbutton,qt::controlbutton和qt::altbutton。
is press:键按下时为真,释放时为假。
is auto repeat:键处于自动重复状态时为真。
嵌入式qt处理键事件的过程为:键盘驱动程序负责从设备中读取数据,并将键事件发送到服务器中。当服务器从键盘驱动程序接收到一个键事件时,它首先要经过一个事件过滤器,然后再将其发送至每个客户进程,最后由客户进程负责处理键事件,并将其发送到适当的窗口。具体流程如图3所示。
这里,键事件未必都来自键盘设备,包括触摸屏,触笔都可以产生键事件。服务器在任何时候都可以调用函数qwsserver::sendkeyevent()产生键事件。根据这个特点,再结合事件过滤器的特性,便可构造出所需的输入服务器平台。
在qt中,一个事件通过调用qobject::event()被发送到继承自qobject的对象。事件发送就是一个事件已经产生,由qevent正好去表达,且qobject需要去回应。多数事件来自窗口系统类qwidget,如qmouseevent,qkeyevent事件。某些事件来自其他源头,如qtimerevent,而某些来自应用程序,qt会一视同仁的处理。
事件过滤器在目标对象处理之前去处理事件。过滤器通过调用qobject::eventfilter()实现,它可以接受或丢弃过滤,也可容许或拒绝进一步去处理事件。如果所有的事件过滤器允许进一步的处理事件,事件自己就被送达目标对象。本文在服务器进程中安排事件过滤器,接收键事件,经过处理后,将结果发送到客户进程。在客户进程中,处理键事件,并发送到适当的窗口中。
5 结语
嵌入式linux是目前流行的嵌入式系统解决方案,而嵌入式gui是嵌入式linux不可缺少的组成部分。本文通过分析、比较目前流行的几种嵌入式gui,选择了嵌入式qt作为研究对象并对其进行了深入讨论,在此基础上完成了基于嵌入式qt的车载gui的设计和实现,具有较高的经济价值,并可为其他嵌入式娱乐系统提供参考价值。

智能温室控制系统扶贫显成效,大棚蔬菜迎丰收
2023年半导体供应链变化的五种趋势
智能魔镜显示器为家居生活提供智能化的贴心服务
24V36V转5V6A降压芯片概述
苹果的新车或将由鸿海代工,最早会在2024年底发布
基于嵌入式Qt的车载GUI平台的设计详解
NMOS管应用电路设计
选择智能交互大屏,让企业展厅更有看点!
Wi-Fi 6和6E有什么区别 到底哪个好
采用SIEMENS S7-200小型PLC在复合机张力控制系统中的应用
最实用的GPS接收器测试详解
1M芯片采台积电7纳米,麒麟980将采用
放大倍数为2的小相差平衡输出电路
智能家居的发展方向和前景都在逐渐趋于明朗
人工智能机器学习之受限玻尔兹曼机(RBM)算法
2016新款MacBook Pro续航的续航能力究竟是好是坏?官方给你解答
VR行业现状以及VR的下一步
佳能新品下月发布 50/85/135人像镜怎么选才好
2020年Q1季度共有106款手机申请进网,5G款型占比53.77%
SS2168氯气传感器CL2