当前位置:文档之家› MiniGUI及其移植与应用

MiniGUI及其移植与应用

MiniGUI及其移植与应用权宁一(东北电力大学信息工程学院吉林吉林132012)【摘要】:本文介绍了MiniGUI系统在嵌入式开发中的移植与应用。

对MiniGUI图形软件的特点、体系结构、工作模式做了叙述,描述了MiniGUI在uc_osⅡ环境中的移植方法,MiniGUI应用软件的开发思想和流程,并对其应用领域做了介绍。

【关键词】:MiniGUI,移植,控件,消息循环1、MiniGUI概述随着嵌入式系统在工业控制、信息家电、智能手持终端、办公自动化等领域中的广泛应用,人们对产品的图形用户接口(GUI)的需求越来越强烈。

图形美观、界面友好的GUI已广泛应用在3G手机、PDA、智能传感器、工控终端等嵌入式设备上,其中比较成熟的GUI产品有:MiniGUI、MicroWindows、OpenGUI、TinyXWindow、QT/Embedded。

MiniGUI最初是清华大学为数控机床研发计算机控制系统时根据需要独立开发的图形用户接口,它具有代码小巧、实时性好、高效稳定、易于裁减的特点,非常适合应用于嵌入式实时控制系统。

MiniGUI可以运行在任何一种具有线程支持的POSIX兼容系统上,同时也是国内出现的最早的遵循LGPL条约的自由软件之一。

MiniGUI有三种运行模式:⑴MiniGUI-Threads:运行在MiniGUI-Threads的程序可在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行,可以配合的操作系统有ucosii、vxworks、linux。

⑵MiniGUI-lite:每个程序是单独的进程,每个进程可建立多个窗口,只有具备完整unix特性的操作系统才可运行这一模式。

⑶MiniGUI-standalone,可以以独立进程方式运行而不需要其它任何支持,这种方式几乎可以支持所有操作系统。

MiniGUI具有以下特点:⑴小巧可订制,包含全部功能的库文件只有300k。

⑵高稳定性,可移植性好。

⑶界面皮肤支持,用户可通过皮肤支持获得华丽外观界面。

⑷提供了完备的多窗口机制及消息传递机制。

⑸丰富的控件资源,包括菜单、进度条、列表框、按钮、工具栏等。

(6)多种键盘布局支持,多字符集及多字体支持,常见的图像文件支持。

⑺多种汉字输入法支持,windows资源文件支持。

2、MiniGUI的结构特点与移植方式2.1MiniGUI的体系结构图1MiniGUI结构体系MiniGUI采用了分层结构设计思想,共分为GAL、IAL、Pthread层,MiniGUI核心层,用户接口层三层结构。

GAL为图形抽象层,提供了底层操作系统的图形接口,配置MiniGUI选用GAL引擎,就可使用framebuffer作为MiniGUI图形发生引擎;IAL为输入抽象层,它提供了输入设备如键盘鼠标等的驱动,可将输入设备的输入事件最终映射为GUI系统API层的消息事件。

有了GAL、IAL可以把底层硬件及操作系统进行完全屏蔽,方便MiniGUI的移植。

同时,用户可在XWindow系统中调试运行自己的产品,通过重新编译就可使软件运行在特定的硬件平台上。

Pthread(POSIXthread)是提供内核级线程支持的c库函数。

MiniGUI核心层为中间层,包含了窗口系统所需要的各个功能模块,详见图1。

用户接口层API对于不同的平台是一致统一的,底层系统已被完全屏蔽,用户不必考虑输入设备及绘图细节,只需使用标准C语言进行类似win32库函数调用即可。

2.2MiniGUI工作模式MiniGUI采用微客户/服务器机制,通过消息队列和多线程之间的同步机制来实现。

在多线程环境中各线程之间有信息交互的需要,依据"先来先服务"的原则,依次处理每个线程的请求。

一个线程首先在desktop微服务器的消息队列中放置一条消息,要求建立窗口,然后进入等待状态。

当desktop处于空闲状态时可以立即处理这一请求。

最后,desktop返回处理结果,唤醒等待的线程。

MiniGUI启动3个重要的微服务器,它们分别为desktop、parser、timer。

其中desktop用于管理MiniGUI窗口中的所有主窗口;parser线程用于采集键盘鼠标事件并转换成API层消息;timer线程用来触发定时器事件。

2.3MiniGUI的移植嵌入式系统的结构框架从底层到上层依次为:硬件平台、嵌入式操作系统、MiniGUI、用户程序,其中uclinux与uc/OS-II为常用的操作系统,下面以uc/OS-II为例介绍MiniGUI的移植。

uc/OS-II具有实时性强、代码简单的特点,在教学及工业实时控制领域得到了广泛应用。

MiniGUIforuc/OS-II的配置及编译可在windows环境中的ADS开发平台中进行,编译完成之后生成一个静态库MiniGUI_lib,最终生成包括uc/OS-II、MiniGUI、应用程序在内的可执行映像文件,将映像文件固化写入硬件平台即完成MiniGUI的移植。

在编译之前需要进行以下工作:设置MiniGUI配置头文件、确定头文件路径、选定编译规则。

MiniGUI配置头文件中参数_AUTO_IAL是模拟键盘鼠标选项;_COM-MM_IAL是uc/OS-II通用输入引擎;_GB_SUPPORT是字符集支持;_USE_OWN_MALLOC为内存管理函数支持;_USE_OWN_STDIO为函数支持。

编译规则设置中_MiniGU-I_LIB_声明编译MiniGUI_LIB库;_uc/OS-II_声明目标操作系统;-EC允许隐性类型转换;_NOLINUX_表示非linux系统。

3、基于MiniGUI的软件设计开发思想3.1MiniGUI开发流程uc/OS-II初始化后创建任务main_task,在该任务中创建POSIX协议线程main_thread,main_thread中调用函数mg_main_task,进入MiniGUI入口MiniGUI_entry,进而调用应用程序入口函数MiniGUIMain,执行用户软件及窗口过程函数。

MiniGUI应用程序必须包括的头文件有:common.h--定义了宏及数据类型;minigui.h--定义了接口函数及杂项函数;window.h--定义了窗口的宏及数据类型;control.h--定义了系统内部控件。

MiniGUIMain()是程序的入口点函数,一般用户程序先创建一个主窗口或非模式对话框,在主窗口内建立若干控件,然后建立消息队列,进入窗口消息循环,响应各类消息。

通过调用Cre-ateMainWindow()函数创建主窗口,函数返回窗口句柄。

函数调用时需给MAINWINCREATE结构体指针赋值,确定主窗口的各项属性值。

调用ShowWindow()函数将主窗口进行显(下转第71页)(上接第65页)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!示,然后进入系统消息循环。

GetMessage()函数从应用程序的消息队列中取出一个消息,同时得到该消息发往窗口的句柄、参数值;TranslateMessage()函数将键盘消息转换成字符消息,便于程序处理;DispatchMessage()函数将消息传送至指定句柄的窗口,调用窗口过程函数进行消息响应。

窗口建立后即产生MSG_CREATE消息,在对应的消息响应函数中用createwindow建立控件及子窗口;MSG_PAINT则是在移动窗口或重绘窗口时发生;不予处理的消息由De-fauhMainWinProc函数进行缺省处理;关闭窗口时产生MSG_CLOSE消息,用Destroy-MainWindow()函数销毁主窗口,并产生一个MSG_QUIT消息,退出消息循环,最后调用Main-WindowThreadCleanup()清除所用资源。

在消息优先级设置上,鼠标或键盘的输入消息优于PAINT、定时器等消息。

MiniGUI的消息处理函数除了GetMessage()、TranslateMessage()、DispatchMessage()外,还有PostMessage()、SendMessage()、SendNotifyMessage()、PostQuitMessage()等。

3.2MiniGUI的图形设备接口及常用控件MiniGUI的图形设备接口GDI提供了丰富的绘图库函数,包括画点与画线、文字输出、封闭曲线与区域填充等,通过Be-ginPaint与EndPaint获取和释放设备上下文。

同时MiniGUI定义了剪切域,并可通过GDI模块的映射模式操作函数将逻辑坐标系转换成设备坐标系。

MiniGUI内建的控件库非常丰富,常用的包括静态框、按钮、列表框、进度条、滑块、编辑框、工具条、菜单等,用户可自由选取。

4、MiniGUI的应用由于MiniGUI实时性好、结构小巧,在uc/OS-II平台下广泛应用于实时控制系统中,同时MiniGUI-lite模式可用于高端模式--PDA、OA产品,随着网页浏览器等插件的引入,MiniGUI的功能将日趋丰富,应用将更加广泛。

参考文献:1.刘峥嵘.嵌入式Linux应用开发详解.北京:机械工业出版社,20042.郝献鹏.MiniGUI-面向嵌入式系统的GUI系统.河南:信息工程大学学报,20013.敬梅.嵌入式环境下MiniGUI的移植.上海:现代计算机,20064.北京博创科技有限公司.MiniGUI在ucOSⅡ上的移植技术文档.北京:20055.田正妙.基于Linux系统的MiniGUI的移植与应用.北京电子科技学院学报.北京:2006图2MiniGUI应用程序流程图像文本是一类特殊的文本形式。

这类文本的基本形式属于图像,它是把字符构成的信息内容以图像格式来存储。

图像文本相比其它两种文本形式,其提供冗余的方式、提供的冗余量大小、嵌入信息的方法等方面有所不同,这些与图像信息隐藏技术的相应方面更为接近。

2、冗余构造从上述分析可以看到,设计嵌入方案第一步骤是获取载体的"极相似性"差别。

信息隐藏首先会对待嵌入信息进行预处理,所以方案主要考虑怎样把预处理得到的信息bit流嵌入载体而又不会被发现。

目前而言,达成这一指标全归因于"极相似性差别"--"极相似性"保证"差别"不易被感知;"差别"保证bit流可以被嵌入。

基于这样的分析,本文提出了"冗余构造"概念:基本概念:冗余构造是指开发作为载体的数字信息的冗余,试验以确认冗余选择的有效性。

概括的说,冗余可定义为媒介中不因微小改变而使其宏观特性发生可感知变化的bit信息。

冗余构造目的就是快速发现这一信息,并加以验证和利用。

根据上述的概念,本文第二节中所描述的"冗余构造"有:1)中英文标点的输入宽度;2)为嵌入而插入的空白字符;3)同义词;4)同音近义词;5)HTML,XML的标记不区分大小写;6)RTF中以隐藏为目的的控制字;7)相近字体;8)微调大小;9)微调颜色;10)微调单词间隙等等。

相关主题