0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子工程师 作者:工程师陈翠 2018-06-24 08:13 次阅读

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的车载GUI平台的设计详解

基于嵌入式Qt的车载嵌入式娱乐系统软件,最大限度的满足了车载视听娱乐的要求。提供视频播放、音频播放等多媒体软件,个人信息管理软件,无线网络服务等。其系统架构如图l所示。

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

4.2 基于嵌入式Qt的窗口系统结构设计

本文设计的上层GUI窗口系统采用了客户/服务器系统结构。该窗口系统包括:一个服务器进程、一个或者多个客户进程。服务器负责为客户和本身分配显示区域,生成鼠标、键盘或者触摸屏事件,它通常包含那些启动客户的用户界面。而客户则通过与服务器通信来申请显示区域,接受鼠标或触摸屏事件。客户可以直接访问所分配的显示区域,以便为用户提供GUI服务。服务器和客户通过共享内存的方式来传递所分配显示区域上的信息。窗口系统体系结构如图2所示。

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

服务器(进程)维护着一组区域,当窗口被创建、移动、改变大小和破坏时,通过这组区域来改变每个客户的申请。该区域存放在共享内存中,在执行绘图操作时,客户可以从中读取信息;服务器连接着一些系统设备,如鼠标、键盘或者触摸屏,服务器负责将这些设备所产生的事件发送到适当的客户进程。服务器能够生成一个设备独立的鼠标或键盘事件,并将其发送到相应的客户进程。触笔设备通常没有鼠标光标,但是触笔操作能转化为设备独立的鼠标事件,然后由客户以标准事件进行处理。

嵌入式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所示。

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

这里,键事件未必都来自键盘设备,包括触摸屏,触笔都可以产生键事件。服务器在任何时候都可以调用函数QWSServer::sendKeyEvent()产生键事件。根据这个特点,再结合事件过滤器的特性,便可构造出所需的输入服务器平台。

在Qt中,一个事件通过调用QObject::event()被发送到继承自QObject的对象。事件发送就是一个事件已经产生,由QEvent正好去表达,且QObject需要去回应。多数事件来自窗口系统类QWidget,如QMouseEvent,QkeyEvent事件。某些事件来自其他源头,如QTimerEvent,而某些来自应用程序,Qt会一视同仁的处理。

事件过滤器在目标对象处理之前去处理事件。过滤器通过调用QObject::eventFilter()实现,它可以接受或丢弃过滤,也可容许或拒绝进一步去处理事件。如果所有的事件过滤器允许进一步的处理事件,事件自己就被送达目标对象。本文在服务器进程中安排事件过滤器,接收键事件,经过处理后,将结果发送到客户进程。在客户进程中,处理键事件,并发送到适当的窗口中。

5 结语

嵌入式Linux是目前流行的嵌入式系统解决方案,而嵌入式GUI是嵌入式Linux不可缺少的组成部分。本文通过分析、比较目前流行的几种嵌入式GUI,选择了嵌入式Qt作为研究对象并对其进行了深入讨论,在此基础上完成了基于嵌入式Qt的车载GUI的设计和实现,具有较高的经济价值,并可为其他嵌入式娱乐系统提供参考价值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5066

    文章

    18999

    浏览量

    302673
  • GUI
    GUI
    +关注

    关注

    3

    文章

    643

    浏览量

    39518
收藏 人收藏

    评论

    相关推荐

    嵌入式QT基础视频教程免费分享!

    嵌入式QT基础视频教程免费分享!首先给大家介绍一下QT的简介,Qt 是一个用于桌面系统和嵌入式开发的跨
    发表于 07-05 13:05

    基于嵌入式Qt车载GUI平台该怎么设计?

    随着经济社会的不断发展汽车已进入普通家庭,汽车用户对车载娱乐系统的要求不断地提高,希望汽车载娱乐系统的功能更加强大娱乐设施更加完美。嵌入式GUI(Graphical User Inte
    发表于 09-30 07:45

    请问怎样去设计一种车载GUI平台

    嵌入式GUI的实现平台嵌入式Qt系统的特点基于嵌入式Qt
    发表于 05-14 07:13

    嵌入式QT是什么?有何功能

    嵌入式QT基础视频教程免费分享! 首先给大家介绍一下QT的简介,Qt 是一个用于桌面系统和嵌入式开发的跨
    发表于 12-23 07:35

    嵌入式Linux系统的移植研究

    介绍嵌入式系统和嵌入式系统中的GUI , 详细说明三种常见的嵌入式GUI (Microwindows、MiniGUI 和
    发表于 04-24 10:43 23次下载

    嵌入式QT的内核分析与优化

    本文给出了QT嵌入式版本(QT/E)与其它嵌入式GUI 工具箱在性能、结构上的比较,从宏观上分析了Q
    发表于 06-22 08:30 17次下载

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

    1 引言    随着经济社会的不断发展汽车已进入普通家庭,汽车用户对车载娱乐系统的要求不断地提高,希望汽车载娱乐系统的功能更加强大娱乐设施更加完美。嵌入式G
    发表于 05-16 09:40 769次阅读
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Qt</b>的<b class='flag-5'>车载</b><b class='flag-5'>GUI</b><b class='flag-5'>平台</b>的设计

    基于嵌入式Qt的楼宇对讲系统GUI平台设计

    提出了嵌入式楼宇对讲的GUI实现和流程。文章还对嵌入式Linux的移植做了论述,对楼宇对讲系统涉及底层事件和软件构架进行分析,完成了楼宇对讲系统的基本功能。
    发表于 01-13 15:33 95次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Qt</b>的楼宇对讲系统<b class='flag-5'>GUI</b><b class='flag-5'>平台</b>设计

    基于Qt嵌入式Linux通讯簿程序设计

      摘 要: 随着嵌入式系统的发展,在Linux 下使用Qt 开发嵌入式应用程序是嵌入式图形用户界面( GUI) 系统应用研究的重点。通过一
    发表于 11-23 11:31 3574次阅读

    Qt图形编程基础之嵌入式GUI

    分享到:标签:Qt图形编程 嵌入式GUI Linux 操作系统 12.1 嵌入式GUI简介 目前的桌面机操作系统大多有着美观、操作方便、功能
    发表于 10-18 14:45 0次下载

    嵌入式linux GUI-Qt解析

    职业培训班》二期课程中嵌入式linux应用开发方面的重要内容。不少学员对QT方面的内容比较关注,所以在这里我们先对QT做一下简单介绍。 QT Qt
    发表于 11-01 16:53 1次下载

    盘点嵌入式的那些常见GUI:emWin、TouchGFX、MiniGUI、Qt

    盘点嵌入式那些常见的GUI:emWin、TouchGFX、MiniGUI、Qt
    的头像 发表于 02-05 12:38 9521次阅读

    嵌入式Linux的QT版本,嵌入式Linux版本Qt5.4快速部署

    关键词:摘要:Qt是一个领先的跨平台应用和UI 开发框架(Framework),使用标准C++,适用于桌面,嵌入式和移动平台。本文着重就利用Boot to
    发表于 11-01 17:20 0次下载
    <b class='flag-5'>嵌入式</b>Linux的<b class='flag-5'>QT</b>版本,<b class='flag-5'>嵌入式</b>Linux版本<b class='flag-5'>Qt</b>5.4快速部署

    嵌入式linux安装qt,嵌入式Linux版本Qt5.4快速部署

    摘要:Qt是一个领先的跨平台应用和UI 开发框架(Framework),使用标准C++,适用于桌面,嵌入式和移动平台。本文着重就利用Boot to
    发表于 11-02 10:51 0次下载
    <b class='flag-5'>嵌入式</b>linux安装<b class='flag-5'>qt</b>,<b class='flag-5'>嵌入式</b>Linux版本<b class='flag-5'>Qt</b>5.4快速部署

    基于Qt嵌入式交通信号机GUI设计

    电子发烧友网站提供《基于Qt嵌入式交通信号机GUI设计.pdf》资料免费下载
    发表于 10-13 10:14 1次下载
    基于<b class='flag-5'>Qt</b>的<b class='flag-5'>嵌入式</b>交通信号机<b class='flag-5'>GUI</b>设计