汝字五行属什么| 虫草是什么| 小腿发凉是什么原因造成的| 老是想拉尿是什么原因| 令堂是什么意思| 芒果与什么不能一起吃| 茉莉花茶适合什么人喝| 南红是什么| 狗舔人是什么意思| 集体户口什么意思| 鸭吃什么食物| 居高临下是什么意思| 碳水化合物是什么食物| 时光荏苒岁月如梭是什么意思| 男性肾虚有什么症状| 口舌生疮吃什么药最见效| 射手男和什么座最配对| 心痛定又叫什么| 口腔检查挂什么科| 猕猴桃什么时候上市| 釜底抽薪是什么计| 头皮毛囊炎用什么洗发水| 绽开什么| 艾叶泡脚有什么好处| foh是什么意思| 滴滴什么意思网络用语| 来月经吃什么水果| 牙龈疼痛吃什么药| 沙中土命什么意思| 什么是格林巴利综合症| 调经吃什么药效果最好| 山药什么季节成熟| 蕙质兰心什么意思| 跟腱炎吃什么药效果好| 乌冬面为什么叫乌冬面| 氯雷他定为什么比西替利嗪贵| 7月14日什么星座| 血沉高忌口什么| 掉头发多是什么原因| 3t是什么意思| 蜂胶是什么东西| 痔疮为什么会出血| 6月18日是什么节日| 心电图电轴右偏是什么意思| 什么体质的人戴银变黑| 氨基酸什么牌子好| 甲状腺结节挂什么科室| 吃什么奶水会增多| 斐字五行属什么| 扁桃体发炎吃什么药效果最好| 平身是什么意思| 卧虎藏龙是什么生肖| 骨龄大于年龄意味着什么| 同工同酬什么意思| 带手串有什么讲究| 胡椒粉是什么做的| 薄熙来犯了什么罪| 五四运动的精神是什么| 单独玉米粉能做什么| al是什么意思| 宁五行属性是什么| 碘吃多了有什么危害| 无赖不还钱最怕什么| pco2是什么意思| 拉肚子吃什么蔬菜| 张家界为什么叫张家界| 氯喹是什么药| 女人性冷淡吃什么药效果好| 苦瓜对肝脏有什么好处| 奉子成婚是什么意思| 疯马皮是什么皮| 产妇月子里可以吃什么水果| 肠粉为什么叫肠粉| 私奔是什么意思| 大千是什么意思| 2018是什么生肖| 的确良是什么面料| 挑担是什么关系| 吃维c有什么好处| 6月1是什么星座| cas是什么| 灼是什么意思| 英文为什么怎么写| 绿豆和什么相克中毒| 颔是什么部位| 什么不平| 五月天主唱叫什么名字| 导盲犬一般是什么品种| 什么姓氏排第一| 什么是酸性土壤| 脑卒中是什么意思| 化气行水是什么意思| 鸡的五行属什么| 9点到11点是什么经络| 咳嗽有白痰吃什么药最好| 被电击后身体会有什么后遗症| 为什么老是掉头发| hpv是什么疫苗| 青瓜和黄瓜有什么区别| 在减肥期间吃什么最好| 送护士女朋友什么礼物| 含锶矿泉水有什么好处| 血气是什么意思| 分差是什么意思| 舌头上长泡是什么原因| 手会发抖是什么原因| 肝肾衰竭有什么症状| 空唠唠的意思是什么| 杀阴虱用什么药最快| 怀孕肚皮痒是什么原因| 纵隔占位是什么意思| 今天是什么纪念日| 瘦马什么意思| 做头发是什么意思| 宝宝热疹用什么药膏| 人死后会变成什么| 2003年五行属什么| 什么是癌胚抗原| 下眼袋发青是什么原因| 骨密度是什么意思| 还记得年少时的梦吗是什么歌| 半夜是什么生肖| 2014是什么年| 岳飞属什么生肖| 肺部ct能查出什么病| 多动症是什么原因造成| 血脂是指什么| 高什么远瞩| 酸辣土豆丝用什么醋| 延迟是什么意思| 7月19号是什么星座| 子宫内膜粘连有什么症状| 燊什么意思| 2009年是什么年| 血小板高有什么危害| 头出汗是什么原因| 德国高速为什么不限速| bq是什么意思| c肽是什么| 咳嗽喉咙痒吃什么药| 较重闭合性跌打损伤是什么意思| 成什么上什么| 老匹夫是什么意思| 胆囊炎要注意些什么| les是什么意思| 失眠吃什么药见效快| 刺梨什么时候成熟| 五行土克什么| min什么意思| 妄想症有什么症状| 怀孕一个月肚子有什么变化| 个人solo什么意思| 再接再励是什么意思| 咽喉老有痰是什么原因| 宫颈囊肿有什么症状表现| 白术适合什么地方种植| 鸟飞进家里是什么预兆| 便秘是什么原因| 血管瘤是什么样子的| 肚脐眼大代表什么| 头疼是什么原因引起| 美国人的祖先是什么人| 幽门螺杆菌是什么引起的| 排骨煮什么好吃| 隐血阳性什么意思| 眼睛的睛可以组什么词| 喝酒后头晕是什么原因| ld是什么意思| 肾错构瘤是什么病| 腹部胀气是什么原因| 血管炎吃什么药| 糯米粉可以做什么| 胎心监护是检查什么| 肺结节不能吃什么食物| 胃胀胃不舒服吃什么药| 尼古丁是什么| 血红蛋白低说明什么| 承字属于五行属什么| 什么是薪级工资| 长脸适合什么发型| 牙齿抛光是什么意思| 40不惑什么意思| 下午8点是什么时辰| gfr医学上是什么意思| 黑猫警长是什么猫| 小孩风热感冒吃什么药| 什么是横纹肌溶解| 舌头发紫是什么原因| 枸杞和红枣泡水喝有什么好处| 健康的舌苔是什么样的| 挺舌反应是什么| 四个月读什么| 股骨头疼痛什么原因| 什么人不能吃南瓜| 四季豆为什么叫四季豆| 痔疮什么症状| 忍者神龟是什么意思| 同型半胱氨酸高挂什么科| 维生素b族什么时候吃最好| image什么意思| 什么水果对皮肤好祛痘| 干性皮肤适合什么牌子的护肤品| 木可以加什么偏旁| 21年是什么生肖年| 红米是什么米| 末梢神经炎吃什么药| 水逆是什么| 膝盖疼看什么科| 文爱是什么| 女人脚腿肿是什么原因| 红霉素软膏有什么作用| 散瞳什么意思| 什么原因引起静脉曲张| 1.8是什么星座| 菊花泡水喝有什么功效| 离家出走需要准备什么| 寻麻疹是什么原因引起的| 3.5是什么星座| oem贴牌是什么意思| 什么学海无涯苦作舟| 腰痛是什么原因| 鲤鱼为什么很少人吃| 猕猴桃对身体有什么好处| 不倒翁是什么意思| 井盖为什么是圆的| 硬笔是什么笔| 三月十五日是什么星座| 盆腔积液吃什么药效果最好| 28什么意思| 大便黄色是什么原因| 吃什么药可以死| 什么清什么秀| 头皮屑多的原因是什么| 右眼一直跳是因为什么原因| 灵芝什么人不能吃| 荸荠读音是什么| 什么是乳清蛋白粉| 什么是陈述句| 什么去甲醛最快有效| 药流挂什么科| 不想要孩子用什么办法最好| 阴虚吃什么食物| 坐支是什么意思| 阴道是什么| 福建安溪名茶是什么| 吃多了拉肚子是什么原因| 冰箱买什么牌子的好| 备孕期间要注意什么| 做梦梦见掉头发是什么意思| 桃胶有什么作用| 11月26日是什么星座| 心身医学科是看什么病| eob是什么意思| 柳字五行属什么| 碘伏和络合碘有什么区别| 1月25号什么星座| 身份证照片穿什么颜色衣服| fizz是什么意思| 息肌丸是什么| 心肌酶是查什么的| 荔枝什么时候过季| 糖代谢增高是什么意思| 颜面扫地什么意思| 八朵玫瑰花代表什么意思| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于嵌入式 Qt 的车载 GUI 平台的设计

成都打造乡村旅游、山地旅游等6个产业集群项目

作者: 时间:2025-08-05 来源:网络 收藏
百度 着力固本强基,进一步挺直精神脊梁。

  1 引言

  随着经济社会的不断发展汽车已进入普通家庭,汽车用户对车载娱乐系统的要求不断地提高,希望汽车载娱乐系统的功能更加强大娱乐设施更加完美。(Graphical User InteRFace)可以满足用户需求,人机交互好,作为车载娱乐系统中人机交互界面的开发平台,对整个系统的设计起着决定性作用,越来越受到开发者的青睐。目前比较流行的平台有Qt/Embedded、紧缩的X Windows系统、MicroWindows以及Mini系统。

  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,其中包括电源管理系统;驱动程序提供对各种接口硬件的支持;中间层是基于/Embedded的嵌入式Qt库。它精简和优化了各种图形操作,程序运行时无需额外系统的支持,可以有效减少内存消耗和CPU负担。/Embedded本身是可扩展的,并能不断地升级。开发人员可以根据自己所面对的嵌入式设备的实际需要,对其进行适当的裁减,经过裁减所得到的/Embedded可以大约节约800k到3MB的内存空间,这样也就意味着用Qt开发比用其他工具包开发相同的应用程序,在生成可执行文件后,代码所占用的内存空间要小。最顶层是整个车载娱乐应用系统,它是实现车载娱乐具体功能的应用集合。

基于Linux的车载娱乐系统运行环境

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

基于嵌入式Qt的多媒体处理软件构架

  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所示。

为嵌入式Qt处理键事件流程图

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

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

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

  5 结语

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

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


关键词: 嵌入式 GUI QT

评论


相关推荐

技术专区

关闭
什么孩子该看心理医生 俗气是什么意思 西洋菜俗称叫什么 肺火大吃什么药 1944年属什么生肖
三月一日是什么星座 扫兴什么意思 信必可是什么药 耀字五行属什么 甲钴胺片有什么副作用
狗什么东西不能吃 世界上牙齿最多的动物是什么 吉士粉是什么东西 任性的女孩有什么特点 低压高用什么药
隔夜茶为什么不能喝 宫颈光滑说明什么 头晕视力模糊是什么原因 五个手指头分别叫什么 汲汲营营是什么意思
糖尿病能喝什么饮料hcv8jop0ns9r.cn 嬴稷和嬴政是什么关系hcv8jop2ns0r.cn 吃醪糟有什么好处hcv8jop6ns6r.cn 腹胀是什么病的前兆hcv9jop3ns5r.cn 什么是签注hcv9jop7ns2r.cn
藕不能和什么一起吃dajiketang.com 地瓜是什么hcv7jop5ns3r.cn 心血管病人吃什么最好hcv9jop6ns4r.cn 女贞子是什么hcv9jop5ns6r.cn 力不从心的意思是什么hcv8jop7ns6r.cn
在什么情况下最容易怀孕hcv9jop7ns2r.cn 纲目是什么意思dayuxmw.com 胃疼喝什么能缓解疼痛hcv9jop3ns9r.cn 学籍卡是什么样子图片hcv9jop6ns6r.cn 中年男人遗精是什么原因hcv9jop6ns4r.cn
吃什么对脑血管好hcv7jop9ns6r.cn nmol是什么单位hcv9jop1ns3r.cn 黑素瘤早期什么症状hcv7jop5ns4r.cn 病毒疣是什么hcv8jop9ns6r.cn 受割礼是什么意思youbangsi.com
百度