




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌嵌入入式式系系统统开开发发专专题题报报告告基于Microwindows的嵌入式应用程序开发报告人:张考华khup-博创科技2003年12月7日内容安排:§ GUI系统概述§ Linux平台下GUI系统XWindows§ Microwindows整体架构分析§ Microwindows开发环境配置基于NanoX API应用程序开发基于Win32 API 应用程序开发1. GUI概述§ GUI (Graphical User Interfaces)即图形用户界面,也就是我们所能看到的,用于图形图像及文本等的显示,并且为用户提供人机交互接口。
2、67; GUI系统GUI与下层的操作系统。它它通常是个大包,负责包含一套函数库,为上层图形,图像的显示及应用程序的开发提供相应支持。windows平台GUI,GUI系统及操作系统被“三合一”。所以windows用户对这些概念往往分不清。Linux平台下它们有严格界限。Linux操作系统,X Windows,GNOME/KDE/CDEMotifGTKQT图形开发工具包GUIGUI系统操作系统目前流行的GUI系统PC平台:Windows GUI系统,Linux上的XWindows:Microwindows,Embedded QT,PalmOS GUI, WinCE GUI, MiniGUILinu
3、x操作系统XWindows (XLib)KDE/CDEGNOME2.XWindow背景XWindow 始于1984年,MIT在发展其计划时为适应多平台工作环境而在窗口。现在我们的WWindow的基础上,开发出一套网络透明用的是X11基本运行原理XWindow 由X Server,X Protocol,X三大部分组成。以C/S模式显示图形界面。与Server可以运行在同一台计算机或不同的计算机上,通过X协议(X Protocol)通讯。运行应用程序,而Server则负责GUI显示以及相关资源支持。应用程序是基于XLib库开发的。§ X协议X协议建立在常用的网络协议(如TCP/IP,IP
4、X/SPX)之 上,而XWindow的C/S模式则是建构在X协议之上,它并不针对特定的软硬件资源。所以XWindow具有络透明性的特点。无关性,和网XWindow基本工作原理X网络X 协议X 协议XPC机屏幕键盘鼠标相关层3.Microwindows§ 背景Microwindows是一款类X-Wiindow的GUI系统,作为 一款优秀的开源嵌入式GUI系统它在国外研究得非常活跃.已经被广泛应用于各种信息家电,娱乐电子,医疗设备等嵌入式设备中。 目前的最新发布版本是Miicrrowiindows-0.90, 由美国 Century Software 公司负责版本维护。作为X Windo
5、w的替代品,它把现代图形视窗环境引入到运行Linux的小型设备和平台上。Microwindows可以使用更少的RAM和文件存储空间(100K600K)提供与X Window相似的功能。该体系结构允许设计者轻松加入各种显示设备、鼠标、触摸屏和键盘等。§ 技术特点Microwindows 的可移植性非常好,基本上用 C 语言实现,只有 某些关键代码使用了汇编以提高速度。其支持 Intel 16位、32位CPU,MIPS R4000 以及 ARM。它内部的可移植结构是基于一个相对简接口,可在许多不同的RTOS和 机上运行。这些特性优单的屏幕点决定我们设计的图形程序不需重写就可以被移植到不同
6、的工程及OS 中.Microwindows支持Linux内核的帧缓存(FramBuffer)技术,用户将图形显存作为帧缓存进行存取,这样当用户对显示进行写入、时可以避免对内存区进行操作,这样程序员无需了解底层的图形硬件,也可以在没有使用过X Window的情况下进行图形程序的开发。Microwindows系统以图形方式支持在主机平台上的目标平台。这样,为Linux设计的Microwindows应用程序就可以在台式机上进行编写和开发而不用进行交叉编译就可测试和运行,并且直接在目标 平台上运行。台式主机上运行的目标应用程序在X window中显示,它 通过Microwindows提供的X wind
7、ow屏幕驱动来完成,而不是通过帧缓存驱动。Microwindows无硬件,有些代码还有待进一步优化整体结构Microwindows从原理上采用面向对象,分层布局的设计思想。总共分为三层,每层次都完成特定的功能,并且能够在不影响其他层次的基础上不同的应用进行改编或者重写。在最底层,显示屏、鼠标、触摸屏等的驱动程序提供了与交互相关的硬件的。在中间层,是一个精简的图形引擎,提供了划线,区域填充,多边形等多种基本的图形功能。最上层为图形应用程序提供了丰富的编程接口函数(API),通过这些接口函数可以定制桌面和窗口的外观。目前Microwindows提供两套API接口,以便能够更台的应用程序的移植:1)
8、 采用X体系的NanoX API;2) 与Win32/Win CE基本兼容的API 。适应不同平Microwindows分层结构示意图应用程序层*提供各种API*nano-X/win32Application Layer无关的图形引擎层src/engineGraphics Engine Layer驱动层Src/driversDevice Layer硬件HarewareMicrowindows目录结构:设备驱动层设备驱动程序的接口定义在device.h文件中。中间层提供的与设备无关的图形引擎例程就是通过调用设备驱动程序跟硬件设备交互。这就保证了当平台硬件设备发生变化的时候,只需要改写相应的驱动程
9、序,上层的代码都无需修改。Microwindows提供基于Linux2.2.X内核的FrameBuffer设备驱动程序。FrameBuffer在Linux系统中通过/dev/fb0设备文件进行工作,通 过mmap()系统调用将显示缓存映射至系统内存中。设备无关的图形引擎层Microwindows系统中最核心的图形函数是在图形引擎层通过调用下层的硬件设备驱动程序实现的。用户应用程序通常不直接调用引擎层的程序, 而是调用最上层所提供的编程接口(API)。该层提供了对屏幕、鼠标、键盘驱动程序和硬件之间的接口。用户应用程序通过调用这些API函数来实现相关功能。核心程序在客户机/服务器模型下常驻在服务器
10、上,使用内部的文本字体和位图文本模式。此外,核心程序使用的是指针,这样不用靠转变成句柄来实现更多的复杂功能。该层的API函数定义了窗口及其对应系统的概念。与原始图形操作相对的窗口概念是被该层所控制的.核心程序以GdXXX()开头,与之相连的是图形输出系统而不是窗口管理系统。此外它还控制所有的裁剪和颜色转换功能。当用户请求图形操作时,参数将被编码后送到适当的GdXXX核心程序上。这样系统坐标就能被转成屏幕上显示的坐标,并且可将数据传给 GdXXX核心程序,由其作实际操作。另外该层也定义图形/显示文件,并且会将此信息包括裁减信息送到核心程序上。在MicroWidows上的API函数的基本模型都是用
11、来初始化屏幕、键盘和鼠标的驱动程序。在Microwindows的源代码中,的程序通常包含在以下各个文件中:dvdraw.c图形程序,关于绘制线段、圆、多边形及其填充,文本和位图文件的绘制和颜色转换;devclip.c裁剪程序;devrgn.c动态分配程序;devmouse.c鼠标程序;程序;devkbd.c键盘devpalX.c连接到系统调色板。4.Microwindows开发环境配置获取Microwindows开发包Microwindows的官方安装编译GUI系统,它支持本地(Native)编译和交叉编译。以gcc为编译器,而交叉编译则要根据具体的平台选择作为本地编译编译器。以uCLinux
12、为例,在uCLinux安装完成后,正确设置好环境变量. 修改Microwindows的config文件,此后它会引导Make文件去找相应编译器,ARM_uClibc_gcc.编译时主要相关的文件如下:Makefile Makefile.rules Arch.rules configxconfigureMake过程中文件调用顺序Make环境配置Microwindows为我们提供了一个界面友图形化环境配置器xconfigure.通过它我们可以很方便的为我们的应用程序开方进行环境配置.对xconfigure的设置直接写入config文件.所以我们也可以直接通过修改config文件来完成环境配置.但这
13、样就要求你对Linux脚本有一定基础,否则容易出错.在xconfigure里完成相应的环境设置后,保存,系统就会提示可以编译了.在命令行下键入Make.就可完成系统编译.如果是第一次运行Microwindows,在Make完成后应运行Makeinstall命令.以后再对系统进行编译时建议在进行Make前运行一下Make Clean清除上次编译产生的文件.添加外设模块要添加外设模块,我们应对drivers目录下的Makefile 以及src目录下config做相应改动.以添加鼠标驱动为例.当你为的编写完一个驱动,并编入到Linux内核以后,下面要做的是如何让Microwindows支持该驱动程序
14、.1)在src/drivers目录加入你为Microwindow编写的的驱动.支持该2) 修改src/drivers目录下的Makefile使编译器能找到你新加入的驱动.3) 修改src目录下的config文件,这样你在编译时就可 对该驱动进行配置,可以在需要时把它加入待编译项,不需要时可不加载它.4) 修改src目录下xconfigure以支持图形化配置.5.Microwindow应用程序开发§ Nano-X API与Win32 API运行机制的比较根据类型获取和抛出消息到消息队列选择调用相应处理函数出口出口Nano-X APIWin32 API表主循环Main()处理函数处理函数
15、§ Nano-X API这是Microwindow提供的一套类X API, 支持大多数图减、窗口工具条绘制以及拖拉窗口等。Nano_x形绘API以Nano-X服务器为基础,沿用X Window中的XlibAPI,命名都是Gr()而不是X Windows中的X。其程序以Gd()开头,与之相连的是图形输出系统而不是窗口管理系统。 Nano-x API加入了基于网络的客户机/服务器功能,但是没有实现窗口管理,所以对窗口的处理需要使用系统提供的一个插件(widget)集,我们可以在xconfigure中选取并把它编.1. 窗口操作1-1 窗口的创建与删除:NanoX使用GrNewWindow
16、创建窗口,函数形式如下(后面是参数解释):GrNewWindow ( GR_WINDOW_ID parent,/父窗GR_COORD GR_COORD GR_SIZE GR_SIZE GR_SIZE GR_COLOR GR_COLOR);x,y, width, height,/在父窗口上的坐标/窗口宽度/窗口高度bordersize, /窗口边宽background, /窗口背景色bordercolor /窗口边色删除窗口用:void GrDestroyWindow (GR_WINDOW_ID wid);/创建窗口实例:define MWINCLUDECOLORS # include <
17、stdio.h>#include ”nano-X.h”int main(int ac,char *av)GR_WINDOW_ID w;GR_EVENT event; gc=GrNewGC(); If(GrOpen()<0)printf(“Cant open graphicsn”); exit(1); w=GrNewWindow(GR_ROOT_WINDOW_ID,20,20,100,60,4,WHITE,BLUE);GrSetGCForeground(gc,BLACK); GrMapWindow(w); For(;)GrGetNextEvent(&event);Gr();R
18、eturn 0;窗口的显示,隐藏和移动GrMapWindow:用来显示窗口,GrUnmapWindow:用来隐藏窗口, GrRaiseWindow:用来拉伸窗口, GrLowerWindow:用来缩小窗口, GrResizeWindow:用来改变窗口大小, GrMoveWindow:用来移动窗口。1-2窗口中绘图绘图首先要了解图形上下文(Graphics Context)。NanoX API中用:GrNewGC:创建和分配图形上下文,GrDestoryGC:删除图形上下文,GrCopyGC:图形上下文。当创建一个图形上下文后,服务器返回一个图形上下文ID,用来作为API的参数。GC中不存放裁剪
19、区和系统坐标系。其它绘图API:GrClearWindow: GrPoint: GrLine: GrRect: GrFillRect: GrEllipse: GrFillEllipse: GrArc: GrArcAngle: GrPoly: GrFillPoly: GrBitmap:清除窗口,画点, 画线, 画矩形,画填充矩形, 画圆/椭圆, 画填充椭圆, 画弧,指定弧顶及角度画弧, 画多边形,填充多边形,绘制位图,GrDrawImageFromFile:绘制存盘的BMP,GIF,JPEG图形,GrDrawImageFit: GrArea: GrCopyArea:绘制cache中的图形,并适当
20、调整其大小。绘制内存队列中象素点。将某一窗口的矩形区域到另一窗口。(函数的具体参数及使用参看函数手册)1-3事件编程Nano-X API体系下事件机制:NanoX体系下,事件通过窗口来实现,也就是说要构造一个button你可以画出一个窗口,以它作为button。为该button编写事件处理,首先要进行事件声明:GR_EVENT event;接着要为该窗口选择事件: GrSelectEvents(GR_WINDOW_ID event1|event2|);GR_WINDOW_ID 是给哪个窗口选择事件,后面是事件列表。NanoX 应用程序基本尊从以下逻辑结构:首先创建窗口,显示窗口,然后进入eve
21、nt loop等待用户发出指令。Win32 APIMicrowindows提供一套与Win32系统兼容的API.他能在Win32/WinCE下提供应用程序编程接口.1. 窗口操作:1.1 窗口的创建和消除一个Microwindows应用程序的点是WinMain函数,而不是通常情况下的Main()。在Microwindows API中,最基本的显示单元是窗口,窗口定义了一个显示区域和与其相关的各种消息的处理函数。可以通过预定的类型,如按键(button)、文本框(editboxs)等来定制窗口,同时也可以由用户定义特殊的类型。无论通过什么方式定义类型,创建窗口和消息通讯的相关的函数。是相同的。以
22、下是一些与创建清除窗口RegisterClass: 定义一个新的窗口类型名称和相关的窗口函数。UnRegisterClass:清除一个窗口类型的定义。CerateWindowEx:建立一个类型的窗口实例。DestroyWindow:清除一个窗口的实例。GetWindowLong:返回窗口SetWindowLong:设置窗口。§ 1.2窗口显示,隐藏和移动:ShowWindow函数窗口属性为可视或者隐藏。该属性也可以在窗口创建的过程中。由CreateWindowEx实现。窗口的移动窗口位置或者大小的变化。当窗口位置改变时,WM_MOVE系统发送消息;当窗口大小改变时,系统发送WM_SI
23、ZE消息。2窗口绘制:Microwindows系统在其它窗口发生移动,导致某一窗口需要被绘制或重新绘制的时候,发送WM_PAINT消息给相关的窗口过程。这时,由应用程序决定调用图形操作函数来绘制窗口。Microwindows为每个窗口维护一个update域,当update非空时就向窗口发送WM_PAINT消息。为了速度方面考虑,WM_PAINT消息只在应用程序队列里没有其它消息的情况下才会发送,这应用程序对窗口的重绘可以通过一步完成,而被分割成好多步骤。如果不希望等待,可以调用UpdateWindow函数强制进行窗口重绘。3区域屏幕上像素点的分布。在MicroWindows中,区域区域是用一些
24、无交迭的矩形组成的数组来描述的。目前实现区域,最初是用一个静态数组CLIPRECTs来描述复杂区有两种域。在这个数组中任一矩形中的点都被认为是这个区域中的,另一个全局变量clipcount用来给这个数组中的矩形计数。这个没有给区域管理提供点,所以整个数组的数据直接被送到负责裁剪功能的函数数口。新则可以创建任何数目的区区域的数组CLIPREGION被定义成动态数据组,可域。动态分配它所包含矩形的数量,这样那些无交迭的矩形被存放在“y-x”类型的队列中。在同一队列中,所有矩形的垂直高度y是一 样的,这意味着在每个队列中只有矩形的宽度可变。实际程序是 利用Intersection、Union、Subtraction、Exclusive OR等来实现创建、删除一个区域或者是将几个区域或矩形合并。§ 矩形操作的几个函数:GdAllocRegion 创建一个区域GdDestroyRegion 删除一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川蜀能电力产业发展有限公司招聘笔试题库2025
- 浙江安全生产科学研究有限公司招聘笔试题库2025
- 教育教学课程设计
- 创客教育管理专业考试试题及答案2025年
- 2025年云计算技术考试试卷及答案
- 2025年行业标准与规范化管理考试试题及答案
- 2025年文化产业管理与运营能力考试试题及答案
- 2025年社会学基础知识考试试卷及答案
- 2025年体育专业生理论知识考试试题及答案
- 2025年非物质文化遗产保护与发展考试试卷及答案
- 新疆生产建设兵团2025届七年级数学第二学期期末监测模拟试题含解析
- 股权转让解除协议书
- 幼儿园桌椅安全教育
- 《2025 急性心梗诊疗指南》解读课件
- 2025-2031年中国医学检验市场深度分析及行业前景展望报告
- 医院培训课件:《中华人民共和国母婴保健法》
- 佛山市普通高中2025年高三第二次诊断性检测生物试卷含解析
- 道路竣工测量重点基础知识点
- 山东省济宁市任城区2023年中考一模化学试题(含答案)
- 2024年湖南省三支一扶考试真题
- 《相控阵雷达技术与应用》课件
评论
0/150
提交评论