9 嵌入式GUIppt课件_第1页
9 嵌入式GUIppt课件_第2页
9 嵌入式GUIppt课件_第3页
9 嵌入式GUIppt课件_第4页
9 嵌入式GUIppt课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统开发原理与实践,陈文智等编著,清华大学出版社,重点大学计算机专业系列教材,提纲,1.嵌入式GUI简介2.XWindows3.Qt,1.嵌入式GUI简介,嵌入式GUI设计一般来说包括以下3个方面:硬件设计,通过LCD控制器把LCD显示器和开发系统连接起来。驱动程序设计,为输出输入设备如LCD设计驱动程序,使硬件能驱动起来用户界面程序设计,使用嵌入式系统提供的函数库进行图形化程序设计,目前在嵌入式系统比较流行的图形用户界面GUI:Qt/EmbeddedMicroWindowsOpenGUIMiniGUITiny-X,Qt/Embedded由Qt库开发商TrollTech()发布的面向嵌入式系统的Qt版本。Qt/Embedded是一个C+函数库,声称最少可以剪裁到630KB。Qt/Embedded库目前主要针对手持式信息终端。其开发过程基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,它还支持真正的组件编程。,MicroWindows2005年更名为Nano-XWindowMicroWindows()是一个开放源码的项目,目前由美国CenturySoftware公司主持开发。MicroWindows是一个基于典型客户端/服务器体系结构的GUI系统,基本分三层:最底层是面向图形输出和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于XWindows和WindowsCE的API。,OpenGUIOpenGUI(http:/www.tutok.sk/fastgl)在Linux系统上已经存在很长时间了。最初名字叫做FastGL,只支持256色的线性显存模式,但目前也支持其他显示模式,并且支持多种操作系统平台,例如MS-DOS、QNX和Linux等。OpenGUI比较适合于基于x86平台的实时系统,可移植性比较差。,MiniGUIMiniGUI()是由中国人主持、并由许多自由软件开发人员支持的一个自由软件项目,其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统,比较适合于工控领域的应用。特点:方便的编程接口、使用了图形抽像层和输入抽像层、多字体和多字符集支持、多线程机制等。魏永明:1998年毕业于清华大学精密仪器系,获工学硕士学位。飞漫软件总裁,2.XWindows架构,XWindows系统最先是在UNIX系统上使用的图形用户界面,是基于网络的GUI系统,采用客户端/服务器的设计概念XWindows由3部分组成:客户端、服务器和X协议在XWindows系统中运行的应用叫做客户端。客户程序并不直接在屏幕上绘制或操纵任何图形,而是和X服务器进行通信,由X服务器完成所有的绘图工作并控制有关的显示的各个方面。X协议是X的软件系统基础,它是应用层协议,位于X服务器和X客户端应用程序之间,包括由客户端发送到服务器的请求以及由服务器发送到客户端的事件和错误消息等。X服务器是管理屏幕以及输入设备的程序。客户端/服务器思想:一个客户端应用程序通过套接接口和X服务器进行通信本地套接字网络套接字,XWindows是事件驱动,大部分时间处于一种等待事件发生的状态XWindows可以处理所有的I/O资源,比如鼠标输入、触摸屏和LCD显示等。一旦这些资源触发事件,X服务器就会根据需要把它们返回客户程序。,X服务器,事件、X服务器以及应用程序之间的交互,X服务器事件队列窗口(ID,0)的窗口关闭事件窗口(ID,1)的窗口激活事件窗口(ID,2)的触摸屏事件,窗口(ID,2)中的应用程序,通过套接字接口发送应用程序的事件,应用程序通过套接字给X服务器发送操作请求,XWindows的基本的API函数库:,Tiny-X系统框架,Tiny是标准X-windows系统的简化版,是KdriverTinyXServer的缩写。设计目标是为了在小容量内存的环境下运行,非常适合用作嵌入式linux的GUI系统采用标准的Client/Server体系结构在嵌入式系统中使用Tiny-X图形用户界面开发产品,上层的应用程序的编写很方便,Tiny-X系统架构:,LinuxFrameBuffer:一个Linux硬件设备,让图形绘制函数可以直接使用显示设备的显存,在屏幕上绘制图形TinyX(Xfbdev):精简的Xlib类库Glib:一些基础数据结构和典型的C程序需要功能的函数的封装GDK:建立在Xlib上的针对图形图像类封装的底层图形库GTK:建立在Xlib和GDK上的高级面向对象的类库QVWM:窗口管理器Glade:GTK的继承开发环境,Qt:嵌入式GUI应用程序实验,Qt集成开发工具的使用(1)、新建工程文件利用Qt开发应用程序,首先应建立一个工程文件,从File菜单选中New,从对话框中选中C+Project图标,按OK按钮将新建工程保存为(Qt工程的扩展名为.pro);Qt集成开发平台的运行界面,嵌入式GUI应用程序实验,嵌入式GUI应用程序实验,(2)、建立窗体和添加控件选中File菜单中的New菜单,双击dialog图标,建立一个对话框图形界面,可以在属性编辑栏中修改窗体或控件的相关属性。根据设计需要,在窗体上添加一些常用如按钮、文本框等控件(3)、保存窗体选中File菜单中的Save菜单或工具条中的保存图标将新建的界面窗体保存为test.ui,用户界面窗体文件扩展名为.ui。,嵌入式GUI应用程序实验,嵌入式GUI应用程序实验,(4)、main.cpp文件自动配置如果在工程中具有ui界面文件,Qt可以自动配置生成main.cpp文件,选中File菜单中的New菜单,双击C+Main-File图标,Qt自动将当前窗体文件作为主界面,并自动生成main.cpp文件,嵌入式GUI应用程序实验,嵌入式GUI应用程序实验,(5)、Qt的uic工具的使用在嵌入式平台中无法对ui界面文件进行编译,因此Qt提供将ui文件转换成标准的C+头文件(.h)与实现文件(.cpp)的uic工具。uic工具还可以完成C+子类继承文件的转换和将图片文件转换成头文件的形式。现介绍利用uic工具将前面建立的test.ui文件转换成标准的C+头文件和实现文件(uic具体使用方法参考qt文档)。生成C+头文件rootlocalhosttest$uicotest.htest.ui生成C+实现文件(.cpp文件)rootlocalhosttest$uicotest.cppimpltest.htest.ui将ui文件转换为标准C+头文件和实现文件后,便可以利用转换后的C+头文件和实现文件替代原来的ui文件。在工程预览中选中test.ui,单击右键,从弹出的菜单中选中”removeformfromproject”菜单,移除Qt界面文件test.ui,然后选中Project菜单中的AddFile菜单,将转换后的C+头文件和实现文件添加到工程中。,嵌入式GUI应用程序实验,嵌入式GUI应用程序实验,(6)Qt应用程序的编译基于PC平台的Qt应用程序编译在PC平台编译Qt应用程序,只需利用Qt提qmake工具生成编译应用程序所需的Makefile文件,然后利用make命令对应用程序进行编译rootlocalhosttest$qmakeoMrootlocalhosttest$make编译成功后,可利用file命令查看编译的应用程序格式并可直接在PC终端运行编译好的应用程序,嵌入式GUI应用程序实验,脚本切换Qt开发的程序既能够在Linux桌面系统上运行,也能够在ARM-linux系统上运行。切换的方式是用下面两个指令sourceqt-2.3.7-x86:针对桌面系统sourceqt-2.3.7-arm:针对arm平台,嵌入式Qt平台的搭建的脚本,运行方式:source文件名称针对PC机平台的qt-2.3.7-x86可运行的脚本:#!/bin/shQT_DIR=/root/work/QtunsetQTDIR,QPEDIR,TMAKEPATHQTDIR=$QT_DIR/qt-2.3.7-x86QPEDIR=$QT_DIR/qtopia-1.7.0-x86LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATHPATH=$QTDIR/bin:$PATHTMAKEPATH=$QT_DIR/tmake-1.11/lib/qws/linux-x86-g+exportQTDIRQPEDIRLD_LIBRARY_PATHPATH,嵌入式Qt平台的搭建,针对ARM平台的qt-2.3.7-arm可运行的脚本:#!/bin/shQT_DIR=/root/work/QtunsetQTDIR,QPEDIR,TMAKEPATHQTDIR=$QT_DIR/qt-2.3.7-armQPEDIR=$QT_DIR/qtopia-1.7.0-armLD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATHPATH=$QTDIR/bin:$PATHTMAKEPATH=$QT_DIR/tmake-1.11/lib/qws/linux-arm-g+exportQTDIRQPEDIRLD_LIBRARY_PATHPATH,嵌入式GUI应用程序实验,基于ARM平台的Qt应用程序编译在编译基于ARM开发板的Qt应用程序时,应确保交叉编译工具arm-linux-g+在环境参数PATH中和tmake工具的正确配置。由于嵌入式平台中无法对ui界面文件进行编译,除了将ui界面文件转换为标准的C+文件之外,还要对利用Qt集成开发平台生成的工程文件进行修改,否则无法编译,Qt集成开发平台生成的原始工程文件内容为:,SOURCES+=main.cpptest.cppHEADERS+=test.hunixUI_DIR=.uiMOC_DIR=.mocOBJECTS_DIR=.objTEMPLATE=appCONFIG+=qtwarn_onreleaseLANGUAGE=C+,嵌入式GUI应用程序实验,修改后的工程文件内容为(红字部分为新增内容,用于支持qtopia):工程文件修改后,然后利用tmake工具生成用于编译应用程序的Makefile文件。rootlocalhosttest$tmakeoMrootlocalhosttest$make,SOURCES+=main.cpptest.cppHEADERS+=test.hTEMPLATE=appCONFIG+=qtopiaqtwarn_onreleaseLANGUAGE=C+,嵌入式GUI应用程序实验,编译后,可用file命令查看编译的应用程序格式,嵌入式GUI应用程序实验,(7)、嵌入式Qt应用程序的运行方法测试程序下载运行将编译好的ARM格式的应用程序test下载到开发板的/usr/qpe/bin目录下,并利用chmod命令修改test的属性rootbin$chmod755test在目标板的/usr/qpe/apps/applications目录下新建一个test.desktop文件:并重启开发板,DesktopEntryComment=AQttestProgramExec=testIcon=ClockType=ApplicationName=TestNamezh_CN=Qt测试程序,Qt编程工具的使用方法:信号与槽,信号(signal)与槽(slot)的使用方法槽的建立方法,Qt编程工具的使用方法,信号(signal)与槽(slot)的使用方法信号与槽的连接,Qt编程工具的使用方法,信号(signal)与槽(slot)的使用方法槽的定义privateslots:voidReadClient();voidConnectionClosed();信号的定义signals:voidgetBasic();voidgetGps(QStringgpscontent);信号与槽的连接connect(btnOk,SIGNAL(clicked(),this,SLOT(TestOk();connect(btnExit,SIGNAL(clicked(),this,SLOT(TestExit();槽的实现voidfrmTest:TestExit()qWarning(frmTest:TestExit():Notimplementedyet);,嵌入式Qt平台的搭建的脚本,运行方式:source文件名称针对PC机平台的qt-2.3.7-x86可运行的脚本:#!/bin/shQT_DIR=/root/work/QtunsetQTDIR,QPEDIR,TMAKEPATHQTDIR=$QT_DIR/qt-2.3.7-x86QPEDIR=$QT_DIR/qtopia-1.7.0-x86LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATHPATH=$QTDIR/bin:$PATHTMAKEPATH=$QT_DIR/tmake-1.11/lib/qws/linux-x86-g+exportQTDIRQPEDIRLD_LIBRARY_PATHPATH,嵌入式Qt平台的搭建,针对ARM平台的qt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论