




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式图形用户界面编程 综合课程设计2013 1 8 嵌入式GUI概述 GUI GraphicsUserInterfase 图形用户界面 借助菜单 按钮等标准界面元素和鼠标进行操作 帮助用户方便地向计算机系统发出指令 并将系统运行的结果同样以图形方式显示给用户 嵌入式GUI 轻型 占用资源少 高性能 高可靠性 可配置 常用嵌入式GUI MicroWindowsMiniGUI其他图形平台 Qt Embedded等 Introduction MiniGUI 是魏永明先生于1998年底主持和开发的一个自由软件项目 现由北京飞漫软件技术有限公司维护并开展后续开发 最后一个采用GPL授权的MiniGUI版本是1 6 10 从MiniGUI2 0 4开始MiniGUI被重写并使用商业授权 Introduction 历经十余年时间 MiniGui已经成为性能优良 功能丰富的嵌入式图形用户界面支持系统 可支持任意一个多任务嵌入式操作系统 实际已支持linux uClinux eCos uC OS VxWorks等嵌入式操作系统和数十种SOC芯片 已验证的硬件平台包括ARM basedSoCs MIPSbasedSoCs IA basedSoCs PowerPC M68K DragonBall ColdFire Intelx86等等 广泛应用于通讯 医疗 工控 电力 机顶盒 多媒体终端等领域 使用MiniGUI成功开发产品的企业有华为 中兴通讯 大唐移动 长虹 TCL 联想 迈瑞 南瑞 炬力 D2等 这些用户广泛分部在中国大陆 台湾 新加坡 韩国 美国 德国 意大利 印度 以色列等国家和地区 Introduction 值得一提的是 在中国自主开发的3G通讯标准TD SCDMA中 约有60 获得入网许可证的TD SCDMA手机使用MiniGUI作为其嵌入式图形平台 以支撑浏览器 可视电话等3G应用软件的运行 其中有联想TD30t 海信T68 中兴通讯U85等大家熟悉的TD手机型号 MiniGUI典型应用 Wi Fi手机界面 MiniGUI典型应用 3G手机联想TD30t 支持可视电话 CMMB手机电视 乐随身听 手机视频等3G典型应用 MiniGUI典型应用 下图是飞漫软件为某市政府开发的法律及政务查询系统 MiniGUI典型应用 东大集成电路有限公司采用MiniGUI在Linux操作系统上开发的PDA产品界面 MiniGUI典型应用 南京南瑞自动控制有限公司采用MiniGUI开发的电力监控设备 特点优势 MiniGUI为嵌入式Linux系统提供了完整的图形系统支持 是全球针对嵌入式Linux仅有的两个商用嵌入式GUI系统之一 MiniGUI为嵌入式Linux系统提供了完整的多进程支持 可以MiniGUI Processes MiniGUI Threads或者MiniGUI Standalone三种运行模式运行 MiniGui的三种运行模式 Minigui Threads 运行在Minigui Threads上的程序可以在不同的线程中建立多个窗口 但所有的窗口在一个进程或者地址空间中运行 这种模式适合大多数传统意义上的嵌入式操作系统 如linux uClinux 也是默认模式 Minigui Lite 和Minigui Threads相反 它上的每个程序是单独的进程 每个进程也可以建立多个窗口 它适合具有完整UNIX特性的嵌入式Linux Minigui Standalone 这种运行模式下 MiniGUI可以以独立进程方式运行 既不需要多线程也不需要多进程的支持 这种模式适合功能单一的应用场合 比如uClinux的嵌入式产品中 MiniGUI的主要技术特性 1 硬件适配性 可运行于各种含有MMU 内存管理单元 的32位处理器架构之上 如ix386 ARM MIPS PowerPC等 支持低端显示设备 比如单色LCD 和高端显示设备 8位色及以上显示设备 对显示设备分辨率无最大和最小限制 MiniGUI的主要技术特性 副屏支持 当系统中有多个视频设备时 可将一个作为MiniGUI的主屏 实现完整的多窗口系统 而其它设备作为副屏 在其上通过MiniGUI的图形接口来实现文字渲染 图形显示等功能 可支持各种输入设备 如PC键盘 PC鼠标 小键盘 Keypad 触摸屏 遥控器等等 多种键盘布局的支持 MiniGUI除支持常见的美式PC键盘布局之外 还支持法语 德语等西欧语种的键盘布局 MiniGUI的主要技术特性 2 资源消耗 MiniGUI的静态存储随配置选项的不同而不同 最少需占用1MB静态存储空间 MiniGUI启动后 初始占用1MB动态存储空间 建议系统内存为8MB以上 MiniGUI的主要技术特性 3 操作系统适配性 支持Linux操作系统 非uClinux操作系统 内建资源支持 可以将MiniGUI所使用的资源 诸如位图 图标和字体等编译到函数库中 该特性可提高MiniGUI的初始化速度 并且非常适合无文件系统支持的实时嵌入式操作系统 针对嵌入式系统的特殊支持 包括一般性的I O流操作 字节序相关函数等 MiniGUI的主要技术特性 4 窗口子系统特性 完备的多窗口机制和消息传递机制 使用MiniGUI Threads运行模式时 可在不同线程中创建主窗口 并支持线程间的消息传递 使用MiniGUI Processes运行模式时 支持完整的多进程窗口系统 对话框和消息框支持 MiniGUI的主要技术特性 提供常用的控件类 包括静态文本框 按钮 单行和多行编辑框 列表框 组合框 菜单按钮 进度条 滑块 属性页 工具栏 树型控件 月历控件 旋钮控件 酷工具栏 网格控件 动画控件等 其它GUI元素 包括菜单 加速键 插入符 定时器等 MiniGUI的主要技术特性 5 图形子系统特性 提供有增强GDI函数 包括光栅操作 复杂区域处理 椭圆 圆弧 多边形以及区域填充等函数 在提供有兼容于C99规范的数学库平台上 还提供有高级二维绘图函数 可设置线宽 线型以及填充模式等 通过MiniGUI的图形抽象层及图形引擎技术 也可以让上述高级GDI接口在低端显示屏上实现 各种流行图像文件的支持 包括WindowsBMP GIF JPEG PNG等 JPEG及PNG的支持通过libjpeg及libpng函数库提供 MiniGUI的主要技术特性 Windows的资源文件支持 如位图 图标 光标等 多字符集和多字体支持 目前支持ISO8859 1 ISO8859 15 GB2312 GBK GB18030 BIG5 EUC JP Shift JIS EUC KR UNICODE UTF 8 UTF 16编码 等字符集 支持等宽点阵字体 变宽点阵字体 Qt Embedded使用的嵌入式字体QPF TrueType矢量字体 对TrueType的支持通过freetype1 3函数库提供 输入法支持 用于提供各种可能的输入形式 内建有适合PC平台的汉字 GB2312 输入法支持 包括内码 全拼 智能拼音 五笔及自然码等 MiniGUI的技术优势 可伸缩性强 对CPU主频要求不高 可以运行在CPU主频只有60MHz的低端产品中 轻型 占用资源少 MiniGUI是一个定位于轻量级的嵌入式图形库 MiniGUI库所占的空间最小可以裁剪到500K左右 对目前的嵌入式设备来说 满足这一条件是绰绰有余的 此外 测试结果表明 MiniGUI能够在CPU主频为30MHz 仅有4MRAM的系统上正常运行 使用uClinux操作系统 这是其它针对嵌入式产品的图形系统所无法达到的 MiniGUI的技术优势 高性能 高可靠性 MiniGUI良好的体系结构及优化的图形接口 可确保最快的图形绘制速度 可配置性 MiniGUI可对硬件平台 操作系统 运行模式 需要支持的GAL引擎和IAL引擎 以及引擎相关选项 需要支持的字体类型 字符集 图像文件格式 控件类等进行定制配置 支持多种嵌入式操作系统 具备优秀的可移植性 MiniGui的体系结构 MiniGui的体系结构 MiniGui有良好软件架构 通过抽象层将MiniGui上层和底层操作系统隔离开来 在不同的的操作系统上 MiniGui提供完全兼容的API接口 基于MiniGui的应用程序一般通过ANSIC库以及MiniGui自身提供的API来实现自己的功能 MiniGui中的 可移植层 可将特定操作系统及底层硬件的细节隐藏起来 而上层应用程序则无需关心底层的硬件平台输出和输入设备 MiniGui特有的运行模式也给跨操作系统的支持提供了便利 MiniGui提供的软件包 libminigui 1 6 10 tar gz MiniGui函数库源代码 其中包括下面三个函数库 libminigui 提供窗口管理和图形接口的核心函数库 和大量标准控件 libmgext libminigui的一个扩展库 提供一些高级控件以及文件打开对话框等 libvcongui 一个应用程序可用的虚拟控制台窗口 可以方便在minigui环境中运行字符界面的应用程序 MiniGui提供的软件包 minigui res 1 6 10 tar gz MiniGui所使用的资源文件 包括基本字体 图标 位图和鼠标等等 mg samples 1 6 10 tar gz MiniGui应用示列程序 mde 1 6 10 tar gz MiniGui的综合演示程序包 包含了MiniGui的控件演示程序 字体演示程序 对话框演示程序 记事本演示程序 还有推箱子 扫雷 俄罗斯方块等游戏 MiniGui的安装 1 硬件环境x86PC2 软件环境Linux操作系统 Ubuntu9 10 准备源代码包 库文件 libminigui 1 6 10 tar gz资源文件 minigui res 1 6 10 tar gz示例文件 mg samples 1 6 10 tar gz综合演示文件 mde 1 6 10 tar gzJPEG图形支持库 jpegsrc v6b tar gzPNG图形支持库 libpng src tgzQBFB 模拟帧缓冲支持库 参考文献 MiniGUI技术白皮书forV2 0 4 1 6 10 PDF 该文档描述了MiniGUIV2 0 4 1 6 10的技术特性 DatasheetforMiniGUIV2 0 4 1 6 10 PDF 该文档对MiniGUIV2 0 4 1 6 10产品功能特性进行了详尽的介绍 MiniGUI用户手册 V2 0 4 1 6 10 PDF 主要描述MiniGUI的编译时配置选项和运行时配置选项 参考文献 MiniGUI编程指南 V2 0 4 1 6 10 PDF 该文档是一本关于MiniGUI编程的完整指南 讲述了MiniGUI编程的基础知识和各种编程方法及技巧 并详细地描述了主要的API函数 MiniGUIAPI参考手册 V1 6 10 本文档是MiniGUIV2 0 4最详尽的应用程序编程接口参考手册 其中描述了MiniGUI所有的函数 结构 消息以及控件的接口定义和使用方法 是进行MiniGUI编程不可缺少的手册 安装minigui资源文件 将所下载的源代码包拷贝到工作目录 home missxx minigui 下 打开一个终端窗口 切换为超级用户 missxx missxx desktop minigui su密码 root missxx desktop home missxx minigui tar xvzfminigui res 1 6 10 tar gz 解压缩 root missxx desktop home missxx minigui cdminigui res 1 6 10 进入到所加压的目录下 root missxx desktop home missxx minigui minigui res 1 6 10 makeinstall 安装 root missxx desktop home missxx minigui minigui res 1 6 10 ls usr local lib minigui res 在配置文件中有默认的安装路径 查看被安装好的文件如下 bmpcursorfonticonimetab 安装minigui库文件 root missxx desktop home missxx minigui tar zxvflibminigui 1 6 10 tar gzroot missxx desktop home missxx minigui lsroot missxx desktop home missxx minigui cdlibminigui 1 6 10root missxx desktop home missxx minigui libminigui 1 6 10 lsroot missxx desktop home missxx minigui libminigui 1 6 10 configureroot missxx desktop home missxx minigui libminigui 1 6 10 makeroot missxx desktop home missxx minigui libminigui 1 6 10 makeinstallroot missxx desktop home missxx minigui libminigui 1 6 10 ls usr local lib 以配置文件中的默认安装路径查看安装结果 root missxx desktop home missxx minigui libminigui 1 6 10 cd 说明 一般来说 安装软件库后需要将库的路径更新到配置文件 etc ld so conf中 由于配置文件已存在 usr local lib路径 因此可不用添加 在安装过程中 使用的是默认配置选项 target选项用于指定目标平台 prefix选项用于指定minigui函数库的安装路径 host选项用语指明宿主机的类型 enable lite用于指出生成基于进程的lite版本 而不生成基于线性的thread版本 安装minigui支持库libpng root missxx desktop home missxx minigui tar zxvflibpng src tgzroot missxx desktop home missxx minigui cdlibpngroot missxx desktop home missxx minigui libpng lsroot missxx desktop home missxx minigui libpng makeinstallroot missxx desktop home missxx minigui libpng cd 安装minigui支持库libpng root missxx desktop home missxx minigui tar zxvfjpegsrc v6b tar gzroot missxx desktop home missxx minigui cdjpeg 6b root missxx desktop home missxx minigui jpeg 6b lsroot missxx desktop home missxx minigui jpeg 6b makeinstall安装过程中提示错误 无法创建普通文件 usr local man man1 cjpeg 1 没有那个文件或目录make install 错误1 经过查看发现 usr local man 下没有man1这个文件夹 建立此文件夹 再安装 root missxx desktop home missxx minigui jpeg 6b mkdir usr local man man1root missxx desktop home missxx minigui jpeg 6b makeinstallroot missxx desktop home missxx minigui jpeg 6b cd 查看库文件安装是否成功 库文件分为动态链接库和静态链接库 查看所安装的库文件 root missxx desktop home missxx minigui ls usr local liblibmgext 1 6 so 10libminigui alibvcongui 1 6 so 10libmgext 1 6 so 10 0 0libminigui lalibvcongui 1 6 so 10 0 0libmgext alibminigui solibvcongui alibmgext lalibpng alibvcongui lalibmgext solibpng solibvcongui solibminigui 1 6 so 10libpng so 2miniguilibminigui 1 6 so 10 0 0libpng so 2 1 0 12python2 安装Qvfb miniGUI是基于帧缓存的 而不是我们平时PC平台上X窗口 所以需要qvfb模拟帧缓存来运行显示效果 qvfb是基于qt的工具安装的时候要指定qt库 直接下载最新的qt安装 root missxx desktop home missxx minigui sudoapt getinstallqt3 dev tools embedded在提示 解压缩后会消耗掉51 4MB的额外空间 您希望继续执行吗 Y n 后 键入y 回车 Qvfb配置 先运行下列指令 exportgal engine qvfbexportdefaultmode 640 x480 16bpp 在这里是640 x480不是640 480 exportial engine qvfb注意在运行例程的时候先运行qvfb 打开qvfb后 在FILE configure下选择640 x48016位色测试 root missxx desktop home missxx minigui qvfb 编译测试示例程序 mg samples 1 6 10 tar gz是 MiniGUI编程指南 的示例代码 MiniGUI编程指南 可从官方网上下载 编译过程如下 root missxx desktop home missxx minigui tar zxvfmg samples 1 6 10root missxx desktop home missxx minigui cdmg samples 1 6 10root missxx desktop home missxx minigui mg samples 1 6 10 lsroot missxx desktop home missxx minigui mg samples 1 6 10 configureroot missxx desktop home missxx minigui mg samples 1 6 10 makeinstall运行程序 hellowordroot missxx desktop home missxx minigui mg samples 1 6 10 cdsrcroot missxx desktop home missxx minigui mg samples 1 6 10 src helloworld 作业1 请大家自己学习安装MiniGui的综合演示程序包 mde 1 6 10 tar gz 以Helloworld程序为例说明程序架构 1 头文件 include include include include include includecommon h包括MiniGui常用的宏及数据类型的定义 minigui h包含了全局的和通用的接口函数以及某些复杂项函数的定义 gdi h包含了绘图函数的接口的定义 window h包含了窗口有关的宏 数据类型 数据结构的定义以及函数接口声明 control h包含了所有内建控件的接口定义 程序架构 2 MiniGUIMain函数入口点函数原型 intMiniGUIMain intargc constchar argv 参数argc和argv与C程序main函数的参数argc和argv的含义是一样的 分别为命令行参数个数和参数字符串数组指针 Main函数已经在MiniGUI的函数库中定义了 该函数在进行MiniGUI初始化工作之后调用了MiniGUIMain函数 程序架构 3 设置主窗口属性 MAINWINCREATE结构描述CreateInfo dwstyle WS VISIBLE WS BORDER WS CAPTION 设置主窗口风格为初始可见的 并具有边框和标题栏CreateInfo dwExstyle WS EX NONE 设置该主窗口没有扩展风格CreateInfo spCaption Hello MiniGui 设置主窗口的标题名CreateInfo hMenu 0 设置主窗口没有主菜单CreateInfo hCursor GetSystemCursor 0 设置主窗口光标为缺省光标CreateInfo hIcon 0 设置主窗口没有图标CreateInfo MainWindowProc HelloWinProc 设置主窗口的消息处理过程函数 所有发往该窗口的消息由该函数来处理CreateInfo lx 0 CreateInfo ty 0 CreateInfo rx 320 CreateInfo by 240 设置窗口的左上角坐标 0 0 右下角坐标 320 240 CreateInfo iBkColor COLOR lightwhite 设置主窗口的背景色为白色 COLOR lightwhite为预定义像素值CreateInfo dwAddData 0 设置主窗口的附加值为无CreateInfo hHosting HWND DESKTOP 设置主窗口的托管窗口为桌面 程序架构 4 创建和显示主窗口 创建主窗口hMainWnd CreateMainWindow 显示主窗口到屏幕上 程序架构 5 进入消息循环事件发生后 MiniGUI将事件转换为一个消息 并将消息放入目标程序的消息队列之中 应用程序现在的任务就是执行消息循环代码 不断地从消息队列中取出消息 进行处理 消息循环while GetMessage 程序架构 6 窗口过程函数staticintHelloWinProc HWNDhWnd intmessage WPARAMwParam LPARAMlParam HDChdc switch message 创建时发送的消息 用来做初始化处理caseMSG PAINT hdc BeginPaint hWnd TextOut hdc 100 100 Hello MiniGui 屏幕输出EndPaint hWnd hdc return0 表明不需要进入默认处理函数中 结束时一些处理函数 单击窗口右上角关闭按钮 发送MSG CLOSE消息 主要销毁主窗口和发送quit消息以退出消息循环caseMSG CLOSE DestroyMainWindow hWnd PostQuitMessage hWnd return0 returnDefaultMainWinProc hWnd message wParam lParam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时性建筑施工方案
- 长治网络营销策划方案
- 商场封闭管理应急预案方案
- 庆阳铁艺大门施工方案
- 建筑方案设计标评审表
- 美术教学活动策划方案格式
- 孔府建筑配色方案设计理念
- 中学绿色建筑方案设计意图
- 安顺咨询网络推广方案
- 社区记忆建筑方案设计案例
- GB/T 37573-2019露天煤矿边坡稳定性年度评价技术规范
- GB/T 33467-2016全自动吹瓶灌装旋盖一体机通用技术要求
- GB/T 20481-2006气象干旱等级
- GB/T 1631-2008离子交换树脂命名系统和基本规范
- 清洗地毯操作流程课件
- 第3章-微波与卫星通信课件
- 2023年石家庄水务投资集团有限责任公司招聘笔试模拟试题及答案解析
- 中药的煎煮方法课件
- 流动机械安全专项方案
- 专升本高等数学的讲义80页PPT课件
- 汽车机械基础(全套课件)
评论
0/150
提交评论