收藏 分销(赏)

嵌入式Linux基于MiniGUI下的手机应用程序论文.doc

上传人:仙人****88 文档编号:9119490 上传时间:2025-03-14 格式:DOC 页数:47 大小:527.50KB 下载积分:10 金币
下载 相关 举报
嵌入式Linux基于MiniGUI下的手机应用程序论文.doc_第1页
第1页 / 共47页
嵌入式Linux基于MiniGUI下的手机应用程序论文.doc_第2页
第2页 / 共47页


点击查看更多>>
资源描述
毕业论文 论文题目 嵌入式 Linux基于MiniGUI 手机应用程序 学生姓名 学生学号 专业班级 指导老师 院长 (系主任) 年 5月 25日 毕业论文 第III页 嵌入式Linux基于MiniGUI下的手机应用程序 摘 要 随着软硬件资源的成熟与完善,基于嵌入式Linux信息终端的需求越来越多。但是适合于嵌入式系统的图形界面系统却很少,而市场对于图形界面的开发的需求非常迫切。MiniGUI是一种面向嵌入式的实时系统图形用户界面支持系统,能够为嵌入式系统提供一个轻型、可灵活配置、友好的图形界面系统。本文研究嵌入Linux基于MiniGUI的手机应用程序的开发与实现。 论文首先概要介绍了MiniGUI的体系结构,以及嵌入式Linux下基于MiniGUI的应用程序开发过程。然后针对具体的手机应用程序系统,详细地介绍了整个系统的开发过程,从硬件平台和软件环境到编译开发的环境搭建,MiniGUI函数库等的移植,到图形化界面的实现。最后开发并实现了一个简易的手机界面应用程序,该系统能实现诸如电话簿,短消息,照相机等基本功能界面。 最后,本文对整个设计阶段的工作进行了一定的总结,并对下一步需要进行学习研究的方向进行了讨论。 关键词 :嵌入式系统;图形用户界面;MiniGUI The Phone Application Based on MiniGUI of Embedded Linux Abstract With the maturity and perfection of software and hardware resources, terminal system based on embedded Linux is on great demand. Despite that graphics interface systems suitable for the embedded operating system are short in hand, market need for these specific system is urgent. MiniGUI is a graphics interface supporting system oriented for embedded or real-time system, providing a flexible and user-friendly graphics interface system. This essay aims to make a research into the exploitation and realization of the programming for MiniGUI cellphone. First, the paper gives a general introduction for MiniGUI structure and procedures of the exploitation for its programmes. Then, the overall exploration of the system is also set forth in light of a special cellphone, from the environment of hardware and software platform to the construction of translating environment, the transformation of MiniGUI functions and the completion of graphics interface system. Finally, a simple mobile phone interface programme is created , which performs the basic functions of telephone directory ,short message, camera and so on. In the end a summary for the whole initiative phase and a discussion for further research are given. Keywords : Embedded systems; graphical user interface; MiniGUI 目 录 1.绪论 1 1.1嵌入式系统与GUI 1 1.2 MiniGUI简介 2 1.3 论文组织结构 2 2. 基于嵌入式的几种典型的图形用户界面 4 2.1 MieroW indo~s/NmmX 4 2.2 Qt/Embedded 4 2.3 MiniGUI 5 2.4 MiniGUI的开发平台 7 2.4.1 MiniGUI的硬件平台 7 2.4.2 MiniGUI的软件环境 8 2.5 MiniGUI的开发 9 2.5.1 MiniGUI的特点 9 2.5.2 图形用户界面的基本元素 10 2.5.3对话框和标准控件 10 2.5.4其他 GUI 元素 10 2.5.5消息和消息循环 11 2.5.6图形抽象层GAL和输入抽象层lAL 12 2.5.7消息和消息循环 13 2.6 本章小结 14 3. MINIGUI程序在PC机上的开发 15 3.1设置MiniGUI运行环境 15 3.2建立 MiniGUI开发环境 15 3.3图形用户界面的开发 15 3.4 MiniGUI的移植过程 21 4. 手机界面应用系统设计与实现 26 4.1 手机界面应用程序的设计说明 26 4.2 手机界面应用程序各控件功能的实现 28 4.4 本章小结 39 5. 结束语 40 致 谢 41 参考文献 42 毕业论文 第43页 1.绪论 1.1嵌入式系统与GUI 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件均可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统l1-2J。嵌入式系统发展有30多年的历史,由于其代码小、高度自动化、响应速度快等特点,使其应用领域越来越广泛。目前已出现了很多基于Linux的嵌入式系统,但由于嵌入式系统本身硬件的条件限制,常用的PC机的 GUI系统不适合在其上运行。嵌入式系统对 GUI有着特殊的要求:由于嵌入式系统实时性要求非常高,对 GUI的要求也高。这些系统一般不希望建立在庞大臃肿的、非常消耗系统资源的操作系统和 GUI之上,比如Windows或 X Window。因此,这些系统对轻型 GUI的需求更加突出。另外,嵌入式系统往往是一种定制设备,它们对 GUI的需求也必须是可定制的。所以,嵌入式系统对 GUI的基本要求包括轻型、占用资源少、高性能、高可靠性和可配置。从用户的观点来看,图形用户界面 (GUI)是系统的一个最至关重要的方面:用户通过 GUI与系统进行交互,所以 GUI应该易于使用并且非常可靠。同时它还需要是有内存意识的,以便在内存受限的微型嵌入式设备上可以无缝执行。所以,它应该是轻量级的,并且能够快速装入。 嵌入式系统对GUI有着特殊的要求 :由于嵌入式系统对实时性要求非常高 ,对GUI的要求也高 ,所以这种系统一般不宜建立在庞大臃肿、非常消耗系统资源的操作系统和GUI之上 ,如 Windows或 X Window均过于庞大和臃肿。因此 ,这些系统对轻型 GUI的需求更加突出。另外嵌入式系统往往是种定制设备 ,它们对 GUI的需求也必须是可定制的。所以,嵌入式系统对GUI的基本要求包括轻型、占用资源少、高性能 、高可靠性和可配置。从用户的观点来看 ,图形用户界面 (GUI)是系统的一个最至关重要的方面:用户通过 GUI与系统进行交互。所以 GUI应该易于使用并且非常可靠。但它还需要是有内存意识的,以便在内存受限的、微型嵌入式设备上可以无缝执行 。所以,它应该是轻量级的,并且能够快速装入。 1.2 MiniGUI简介 从 1998 年下半年开始 MiniGUI 的开发以后,就一直得到了来自 Internet 的自由软件程序员的鼓励和支持。到目前为止,国内外已经有多家嵌入式系统厂商开始在 MiniGUI 上开发其嵌入式产品,其中也包括清华大学、中科院等科研单位。因此可以说,MiniGUI 的开发已经从最初的孤军作战发展到包括企业、科研单位、个人在内的市集式开发模式,真正体现出了自由软件的强大生命力。目前,正在进行的 MiniGUI 开发包括: (1)针对 GUI 系统开发 MiniGUI 私有的图形引擎,以便进一步提高图形操作的性能,同时为添加高级的光栅操作函数打下基础。 (2).在多窗口处理上进一步开发,以便完善现有的窗口机制。比如目前已进入测试状态的控件嵌套功能。 (3).进一步开发 MiniGUI 上的控件,比如工具栏、高级列表框等。 (4).提供基于传统 UNIX 系统 IPC 机制的客户/服务器体系,以便支持大型应用程序。 (5).开发基于 MiniGUI 的 GPL 应用程序,比如小型字处理程序、电子邮件客户程序等。 现在已有许多公司和科研院校致力于面向嵌入式Linux系统的GUI的开发研究,开发出了许多 GUI产品。文中详细介绍了面向嵌入式 Linux系统的几种典型 GUI系统,指出其不足之处,并在此基础上,为嵌入式 linux系统的开发人员自主研发新的GUI系统提供参考建议。 1.3 论文组织结构 论文全文共分五章 第一章:绪论。简要介绍对嵌入式GUI的分析以及MiniGUI近期开发情况。 第二章:介绍几种典型的用户界面,MiniGUI的开发平台,MiniGUI的软硬件环境,MiniGUI的开发等做了一个详细的介绍。 第三章:MiniGUI程序在pc机上的开发。包括设置MiniGUI运行环境,建立MiniGUI开发环境,图形用户界面的开发以及MiniGUI的移植过程等。 第四章:系统设计与实现。详细阐述基于嵌入式linux MiniGUI的手机应用程序的界面开发的实现 第五章:结束语。总结了系统设计和开发工作的体会。 2. 基于嵌入式的几种典型的图形用户界面 2.1 MieroW indo~s/NmmX MicroWindows[3】是一个开放源码的嵌入式 GUI软件,由美国Century Software公司主持开发,目的是把图形视窗环境引入到运行 Lillu】(的小型设备和平台上,它有许多针对现代图形视窗环境的功能部件。MicmWindows 体系结构是基于客户机/服务器的,并且具有分层设计,可以通过改写不同的层以满足具体的要求。在最底层,屏幕和输入设备驱动程序(关于键盘或鼠标)与实际硬件交互;在中间层,可移植的图形引擎提供对线的绘制、区域的填充、多边形的裁剪以及颜色模型的支持;在最上层,实现了可以用来开发图形应用程序的多种 API函数[1]。 最底层设备驱动接 口由 device.h文件定义,Micro Windows 已实现至少将一个屏幕、鼠标和键盘的驱动与系统相连。屏幕驱动支持 1,2,4和 8 bpp(每像素的位数)的palletized显示,以及8,16,24和 32 bpp的真彩色显示。中间层的图形引擎能够运行在任何支持 readpixel,writepixe1.drawhorzline。drawvertline和 setpalette的系统之上。最高层实现了窗口交互系统,这一层还包括事件处理,可将触摸屏、按键等激发事件传送给应用程序。 目前,MicroWindows支持两种 API函数:Microwindows API和 Yano-X API。Mic windows API适用于所有Wird2和winCE的应用程序。Nano—X是 MicroWindows支持的类XAPI,沿用 XWindows中的ⅪibAPl。与Ⅺ 实现不同,Nano—X仍在每个客户机上同步运行,这意味着一旦发送了客户机请求包,服务器在为另一个客户机提供服务之前一直等待,直到整个包都到达为止。这使服务器代码非常简单,而运行的速度仍非常快。但是,Nano-X联网功能部件至今没有经过适当地调整(特别是网络透明性),也还没有太多现成的应用程序可用。 2.2 Qt/Embedded Qt/Embedded是著名的 Qt库开发商 TrollTech发布的面向嵌入式系统的 Qt版本。因为 Qt是 KDE等项 目使用的 GU1支持库,所以有许多基于 Qt的XWindow程序可以非常方便地移植到 Qt/Embedded版本上。因此,自从 Qt/Embedded以 GPL条款形势发布以来,就有大量的嵌入式 Linux开发商转到了 Qt/Embedded系统上,比如韩国的 Mizi公司,中国台湾的某些嵌入式 Linux应用开发商等等。不过,Qc/Embedded存在一些问题值得开发者注意:首先,该系统采用两种条款发布,其中包括 GPL条款,对函数库使用 GPL条款,意味着其上的应用需要遵循 GPL条款。当然了,如果要开发商业程序,Tml1Tech也允许你采用另外一个授权条款,这时,就必须向TIDlITech交纳授权费用了。其次,Qt/Embedded是一个 C++ 函数库,尽管 Qt/Embeddtxt声称可以裁剪到最少 630kB,但这时的Qt/Embedded库已经基本上失去了使用价值,低的程序效率、大的资源消耗也对运行 Qt/Embedded的硬件提出了更高的要求。第三,Q1/Embedded库目前主要针对手持式信息终端,因为对硬件加速支持的匮乏,很难应用到对图形速度、功能和效率要求较高的嵌入式系统当中,比如机顶盒、游戏终端等等。第四,Qt/Embedded提供的控件集风格沿用了PC风格,并不太适合许多手持设备的操作要求。第五,Qt/Embedded的结构过于复杂,很难进行底层的扩充、定制和移植。因为上述这些原因,目前所见到的Qt/Embedded的运行环境,几乎是清一色基于StrongARM的iPAQ。 2.3 MiniGUI MiniGUI是由清华大学魏永明主持开发的,并由许多自由软件开发人员支持的一个自由软件项目,其目标是为基于 Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。该项 目自 1998年底开始到现在,已历经 3年多的开发过程,到目前为止,已经非常成熟和稳定。目前,已经正式发布了稳定版本 1.0.9,并且开始了新版本系列的开发,即 Mi UI Version 1.1.x,该系列的正式版也即将发布。 MiniGUI最初是为了满足 一个工业控制系统(计算机数控系统)的需要而设计和开发的.考虑到 X Window 不适合于适时控制系统并且其本地化也不尽人意。因此 MiniGUI一开始就针对适时系统而设计,考虑了适时系统对 GUI的占用资源少、高性能、高可靠性及可配置的基本要求。 MiniGUI目前的功能 已经非常强大.并且已经成功应用于许多嵌入式系统中[2]。 MiniGUI是一种面向嵌入式或实时系统的图形用户界面支持系统。它主要运行于Linux控制台,是基于SVGALib及LinuxThred库的多窗口GU1支持系统。它采用了类 Win32的API接口,实现了简化的类Windows98风格的图形用户界面。MiniGUI是遵循LGPL条款的纯 自由软件,同时也是国内最早出现的几个自由软件项目之一,它可以运行在任何一种具有 POSⅨ线程支持的POSIX兼容系统 。 MiniGUI体系结构是分层设计的,在最底层,图形抽象层(Q )和输入抽象层(IAL)提供底层图形接口以及输入接口,如鼠标和键盘的驱动;中间层是 UI的核心层,其中包括了窗口系统必不可少的各个模块;最顶层的API是提供给用户的编程接口。 MiniGUI的主要特点有:遵循 GPL条款的纯自由软件;提供了完备的多窗口机制,实现了类Win32的消息传递;支持多字符集和多字体,目前支持 ISO88591,GB2312和 等字符集,并且支持各种光栅字体和 TrueTypeType I等矢量字体,支持全拼和五笔等汉字输入法;支持BMP,GIF,JPEG,及 PCX等常见图像文件;支持 Windows的资源文件,如位图、图标、光标、插入符、定时器及加速键等;此外,MiniGUI还具有小巧、可配置、移植性好等优点。 与 Micmwindows、Qt/Embedded 等 GUI相 比,MiniGUI最显著特点是占用资源小和可移植性好。MiniGUI占用资源小主要表现在:Linux内核:300kB~500kB(由系统决定);MiniGU1支持库:300kB~400kB(由编译选项确定);MiniGUI字体、位图等资源:800kB。可移植性好主要表现在:将 MiniGUI移植到其他基于不同硬件的嵌入式 Linux系统上,只需实现新的 GAL和 IAL引擎,而不需要对 MiniGUI的上层代码进行丝毫修改。目前,MiniGUI已被成功地移植到多种硬件设备上,中科院EEOC5开发组已经成功地将 b~niGUI移植到了他们的PO~IX兼容系统上,蓝点软件(北京)研发中心也已经成功地将MiniGUI移植到了两款基于StrongARM的嵌入式系统上。 另外,在 MiniGUl几年的发展过程中,有许多值得一提的技术创新点,例如:图形抽象层。图形抽象层对顶层API基本没有影响,但大大方便了 MiniGUI应用程序的移植、凋试等工作;与图形抽象层相关的还有输入事件的抽象层。正是由于这些技术上的创新,才使得 MiniGUI更加适合实时嵌入式系统。 但是,MiniGUI还存在诸多不足。譬如,它还缺乏开发应用程序的集成开发环境,以及一些必要的应用程序,如浏览器等一些 Internet工具。同时,这些不足也在不同程度上阻碍着 MiniGUI的推广和应用。 2.4 MiniGUI的开发平台 2.4.1 MiniGUI的硬件平台 硬件平台是基于三星公司 ARM9内核的s3C2410芯片开发完成的。如 图 2-1所示 ,整个硬件平台由下面几个部分组成 : S3C2410:1 6 b/32 b ARM920T核 ; 系统时钟 :由外部 24 MHz晶振提供 ; SDRAM : 64 M b s (32 M b s× 2); 或非型 FLASH:8 Mb/s(512 k×16 b); 与非型 FLASH:128 Mb/s(16 M ×8 b); 2通 道 UART; 10M以太网; 1个 USB主控制器 ,一个 USB设备控制器 ; TFT LCD,可扩展触摸屏 、键盘 、鼠标 ; SPI; JTAG接 口。 其中,$3C2410和SDRAM 、或非型FLASH、与非型FLASH组成的最小系统可以运行指令和代码 ;通过串口、网口、USB,SPI口同外部交换信息和数据 ;通过LCD进行显示 ;主机通过 JTAG对开发板进行调试 。 图2.1 硬件平台的组成部分 2.4.2 MiniGUI的软件环境 本设计采用的是嵌入式Linux环境 。嵌入式 Linux(Embedded Linux)是指对标准 Linux经过小型化裁剪处理之后 ,能够固化在容量只有几kB或者几MB的存储器芯片中,适合于特定嵌入式应用场合的专用Linux操作系统 。他的特点是 : (1)广泛的硬件支持 Linux目前已经成功移植到数十种硬件平台 。他有着异常丰富 的驱动程序资源 ,支持各种主流硬件设备和最新硬件技术。 (2)内核高效稳定 Linux的内核设计非常精巧 ,其独特的模块机制可以根据用户的需要,实时地将某些模块插入内核或从内核中移走 。 (3)开放源码 ,软件丰富 Linux是开放源代码的自由操作系统 ,他为用户提供了最大限度的自由度 。用户可以选择一个类似的自由软件作为原型对嵌入式应用软件进行二次开发 。 (4)优秀的开发工具 开发嵌入式系统的关键是需要有一套完善的开发和调试工具 。传统的嵌入式开发调试工具是在线仿真器 (In—Circuit Emulator,ICE),他通过取代目标板的微处理器 ,给目标程序提供一个完整的仿真环境 ,从而使开发者能够非常清楚地了解到程序在目标板上的工作状态 。便于监视和调试程序 。在线仿真器的价格非常昂贵 ,而且只适合做非常底层的调试 ,如果使用的是嵌入式Linux,一旦软硬件能够支持正常的串口功能时 ,可以用gdb,kgdb,xgdb作调试工具 ,能够很方便地实现从操作系统到应用软件各个级别的调试[2] 。 2.5 MiniGUI的开发 2.5.1 MiniGUI的特点 MiniGUI是一个完全遵循GPL条款的纯自由软件 ,他在体系结构上有许多独特之处 。他的主要特色有 : 1. 提供了完备的多窗口机制和消息传递机制 ; 2. 对话框和消息框支持 ; 3. 提供常用的控件类 ,包括文本框 、按钮 、编辑框、列表框等 ; 4. 界面皮肤支持 .用户可以通过皮肤支持获得外观非常华丽的图形界面 ; 5. BMP,GIF,JPEG等常见图像文件的支持 ; 6. 小巧 ,包含全部功能的库文件为300 kB左右 ; 7. 可配置 ,可根据项目需求进行定制配置和编译 ; 8. 可移植性好 。 从图1-2可以看到,MiniGUI 应用程序能够同时创建多个窗口,并且运行在不同的线程。 图2.2 VConGUI -- MiniGUI上的Linux 控制台仿真 2.5.2 图形用户界面的基本元素 在MiniGUI中,图形用户界面包括图1- 3所示的基本元素。 图2.3图形用户界面包括的基本元素 2.5.3对话框和标准控件 MiniGUI中的对话框是一种特殊的窗口,一般与控件一起使用。MiniGU1支持的控件类型有:静态框、文本框、按钮、列表椎、进度条。另外,还支持级联式菜单、插入符 、定时器、光标 、快捷键等常见的GUI元素[4]。 HappyLinux 是国内某公司开发的中文 Linux 发行版,该发行版的安装程序就建立在 MiniGUI 之上。图 2-4 和图 2-5 是 HappyLinux 安装程序的典型屏幕。 图2.4 HappyLinux 的软件包选择界面 图 2.5 HappyLinux 的分区界面 2.5.4其他 GUI 元素 MiniGUI 还支持弹出式菜单、插入符、定时器、光标、快捷键等常见的 GUI 元素。图 2-6和图2- 7 说明了其他 GUI 元素的应用情况。图 2-6 是 Bomb 游戏,是 Windows 扫雷游戏的克隆。图 2-7 是经典的俄罗斯方块游戏的 MiniGUI 版本,见图2- 6。 图 2.6 扫雷游戏的克隆:Bomb 游戏图 图 2.7 俄罗斯方块游戏的 MiniGUI 版本 2.5.5消息和消息循环 在 MiniGUI 中,使用消息驱动作为应用程序的创建架构。在MiniGUI中.消息可以用一个结构表示、由该消息所属的窗口、消息编号 、消息的 WPARAM 型参数 (wParam)以及消息的LPARAM 型参数 (IParam)组成。消息循环是一个循环体,在此循环体中,外设发生的事件,由系统收集.按预先约定格式翻译成特定消息,并将消息发送到应用程序的消息队列中,程序用GetMessage 函数不停地从消息队列中获得消息 ,然后利用DispatchMessage函数将消息发送到指定的窗口,也即是调用指定窗口的窗口过程,并传递消息及其参数[5]。 基十消息驱动的应用程序简单构架如图 2.8所示。 图2.8 基十消息驱动的应用程序简单构架 2.5.6图形抽象层GAL和输入抽象层lAL 抽象层的概念类似了Linux内核虚拟文件系统的概念,定义了一组不依赖于任何特殊硬件的抽象接u,所有顶层 的图形操作和输入处理都建立在抽象接口之上。而用于实现这一抽象接口的底层代码称为 “图形引擎”或 “输入引擎 ”类似于操作系统中的驱动程序。利用GAL和IAL,MiniGUl可以在许多图形引擎上运行。比如SVGALib和 LibGGI,并且可以很方便地将MiniGUl移植到其他POSIX系统上,只需要根据抽缘层接口实现新的图形引擎即可。目前,MiniGUI已经编写了基于SVGA Ljb和 LibGGI的图形引擎[6]。 GAL 和 IAL 的实现,大大提高了 MiniGUI 的可移植性。我们不需要对 MiniGUI 的上层代码进行丝毫修改,只需实现新的 GAL 和 IAL 引擎,就可以让 MiniGUI 运行在其他基于不同硬件的嵌入式 Linux 系统上。比如,蓝点公司在两周内就将 MiniGUI 移植到了基于 StrongARM 的两款嵌入式系统之上。图 2-9 就是蓝点公司开发的运行于 StrongARM 之上的智能信息家电产品。 图 2-9 正在进行网上购物的蓝点信息家电客户端 2.5.7消息和消息循环 多字体和多字符集支持: 在成功引入 GAL 和 IAL 之后,我们又在处理字体和字符集的模块当中引入了逻辑字体的概念。逻辑字体是 MiniGUI 用来处理文本(包括文本输出和文本分析)的顶层接口。逻辑字体接口将各种不同的字体(比如宋体、黑体和揩体)和字体格式(比如等宽字体、变宽字体等光栅字体和 TrueType、Type1 等矢量字体),以及各种不同字符集(ISO-8859、GB2312、Big5、UNICODE等)综合了起来,从而可以通过统一的接口显示不同字符集的不同字体的文本,并且还可以分析各种字符集文本的组成,比如字符、单词等。在多字体和多字符集的支持中,我们也采用了面向对象的软件技术,使得添加新的字体支持和新的字符集支持非常方便。目前,MiniGUI 能够支持各种光栅字体和 TrueType、Type 1 等矢量字体,并能够支持 GB2312、Big5 等多字节字符集,UNICODE 的支持正在开发当中。有了这一技术,我们就可以在 MiniGUI 的同一窗口中显示属于不同字符集的、不同字体的文本[7]。 图 2-10 给出了 MiniGUI 的高级字体支持功能。第一个界面采用 TTF 字体,以旋转方式输出"MiniGUI IS GREAT!";第二个界面给出了多种字体文字居中、右对齐等输出效果。 图 2.10 MiniGUI 的高级字体支持 2.6 本章小结 本章主要介绍了MiniGUI的开发,MiniGUI的特点,图形用户界面的基本元素,对话框和标准控件,消息和消息循环等特点,为手机图形界面系统应用程序的开发做个初步的奠基。 3. MiniGUI程序在pc机上的开发 由于在嵌入 式系统环境下调试 MiniGUI程序比较复杂 ,为了缩短开发周期 ,可以先将程序在PC机上调试 ,成功后加载进嵌入式 Linux的文件系统即可 。 这一章主要是从界面开发的角度来阐述,介绍如何编写,调试MiniGUI程序,为其具体的实现打下基础[8]。 3.1设置MiniGUI运行环境 为了运行MiniGuI,需要激活系统的FrameBuffer设备驱动程序。如果不能激活 ,可利用QVFB程序运行 。QVFB是 Qt提供 的一个 虚拟 FrameBuffer工具 。在X Window中,打开一个终端仿真程序,执行qvfb~命令。将qvfb设置成嵌入式开发系统的液晶屏的大小 。合理设置 MiniGUI的配置文件 ,接着就可以运行 MiniGUI应用程序了。 3.2建立 MiniGUI开发环境 要开发MiniGU程序 ,首先要建立其开发环境 。要开发MiniGUI程序 ,首先要建立其开发环境 。MiniGUI的函数库部分由 libminigui,libmgext以及libvcongui三个函数库组成 。MiniGUI的资源部分包括运行MiniGUI应 用程序需要的基本字体 、图标 、位图以及鼠标光标等 。安装完函数库及资源包以后就可以进行应用程序的开发了。 3.3图形用户界面的开发 图形用户界面的开发流程图如图3-1所示 。 图3.1 图形用户界面开发流程图 (1) 头文件 程序实现时 ,开始是包含的头文件 。 MiniGUI图形包的头文件有 : common.h包 括 MiniGUI常用的宏及数据类型的定义 ; minigui.h包括全局的和通用的接口函数及杂项函数的定义 ; window.h包含了和窗口有关的宏 、数据类型 、数据结构以及函数接口声明 ; gdi.h包含了 MiniGUI绘图函数的接口定义 ; contro1.h包 含了libminigui中所有内建控件的接口定义。 mgext.h包含了扩展控件的接口定义 ; skin.h包含了皮肤界面的接口定义 。 (2) 程序人口点 MiniGUI的程序入口点是 MiniGUIMain函数,系统初始化后就会自动找到该函数 。每个MiniGUI应用程序的初始界面一般都是一个主窗口,通过调用CreateMainWindow 函数来创建一个主窗口,其参数是一个指向MAINWINCREATE 结构的指针。MAINWINCREATE结 构描述 一个 主 窗 口的属性 ,在使用CreateInfo创建主窗口之前 ,需要设置他的各项属性[9]。 创建主窗口后 ,还需要调用ShowWindow 函数才能把所创建的窗口在屏幕上显示 。MiniGUI为每一个MiniGUI程序维护一个消息队列 。在发生事件之后 ,MiniGUI将事件转换为一个消息 ,并将消息放人目标程序中。应用程序现在的任务就是执行如下的消息循环代码: while(GetMessage(N.Msg,hMainW nd)){ TranslateMessage(8LMsg); DispatchMessage(8LM g); } 在这个循环体中 ,程序利用GetMessage函数不停地从消息队列中获得消息 ,然后利用DispatchMessage函数将消息发送到指定的窗口,也就是调用 指定 的窗口的窗口过程 ,并传递消息及其参数 。 一个C程序的入口点为main函数,而一个M iniGUI程序的入口点为 MiniGUIMain、该函数的原形为: int MiniGUIMain(inargc、const char argv[]);main函数已在 MiniGUI的函数库中定义了,该函数在进行了一些 MiniGUI的初始化工作之后调用MiniGUIMain函数 所以,每个MiniGUI应用程序的入口点均为MiniGUIMain函数。参数 argc和 argv分别为命令行参数字符串数和参数组指针。下面是MiniGUIM ain函数的实现。 int MiniGUIMain (int argc, const char* argv[]) { MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo; #ifdef _MGRM_PROCESSES JoinLayer(NAME_DEF_LAYER , "helloworld" , 0 , 0); #endif CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.spCaption = "HelloWorld"; CreateInfo.hMenu = 0; CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = HelloWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 240; CreateInfo.by = 180; CreateInfo.iBkColor = COLOR_lightwhite; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return -1; ShowWindow(hMainWnd, SW_SHOWNORMAL); while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup (hMainWnd); return 0; } a : 创建和显示窗口 hMainWnd = CreateMainWindow (pCreatelnfo);每个MiniGUI应用程序的初始界面一般是一个主窗口,可以调用CreateMainWindow函数创建一个主窗 ,其参数是一个指向MAINWINCREATE结构的指针。本例中是 pCreatelnfo,返回所创建主窗口的句柄。 MAINWINCREATE结构描述一个主窗口的属性在使用pCreatelnfo创建主窗口前,需要设置其各项属性[11]。 创建完主窗口后,需要调用 ShowWindow函数才能把所创建的窗口显示在屏幕上。ShowWindow函数的第一个参数为所要显示的窗口句柄 ,第二个多数指明显示窗口的方式 ,S W —SHOWNORMAL说明要显示主窗口.并把它置为项层窗口。 b : 消息循环 MiniGUI为每个MiniGUI应用程序维护一个消息队列,在发生事件之后,MiniGUI将事件转换为一个消息,并将消息放入目标程序的消息队列中。应用程序执行如下的消息循环代码,不断从消息队列中取出消息,进行处理。 while(GetMe
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服