嵌入式用户图形接口uC/GUI的简单分析
uC/GUI是Micrium公司开发的通用的嵌入式用户图形界面软件。
uC/GUI简介
uC/GUI是Micrium公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD的应用程序提供独立于处理器和LCD控制器之外的有效的图形用户接口。可以应用于单一任务环境,也可以应用于多任务环境中。uC/GUI能够应用于任何LCD控制器和CPU的任何尺寸的物理显示或者模拟显示中。
uC/GUI的特点如下:
适用于任何8位/16位/32位CPU,可允许于支持ANSI C的任何编译器,适用于任何控制器驱动任何LCD(单色,灰度,或者彩色),通过配置宏,可支持任何接口,可配置显示尺寸,可在LCD的任何一点上显示字符和画位图,对于显示尺寸和速度提供优化进程,编译时间依赖于采用的优化进程,支持虚拟显示,虚拟显示的尺寸比实际显示大。
uC/GUI文件组织
uC/GUI目录下的文件有配置文件目录Config,GUI库函数目录,以及为GUI编写的应用程序目录。下面分别简要介绍相应目录下的函数,更为详细的文件介绍请参考我的uC/GUI移植的源代码。
uC/GUIConfig目录:
GUICONF.h: 配置GUI移植到不同操作系统的选项。在本论文中配置移植到uC/OSII中,允许多任务调用uC/GUI函数。
GUITouchConf.h:配置触摸屏的选项以及编写触摸屏的驱动。本文移植uC/GUI所使用的LCD屏不支持触摸屏,所以此文件为空。
LCD_Init.C: LCD控制器的初始化文件。
LCD_Conf.h: LCD显示屏的选项文件,包括bpp,调试板模式,水平、竖直方向的分辨率等等。
uC/GUIGUIAntiAlias目录:
这个目录中包含9个文件,处理显示的边缘模糊效果,也就是抗锯齿和优化LCD锯齿。液晶屏上画斜线往往都有锯齿,所以通过优化算法进行美化。
uC/GUIGUIConvertColor目录:
这个目录中包含14个.C文件,涉及调色板模式。uCGUI的调色板模式支持111模式,222模式,223,323,332,444,555, 565,8666等相关模式。我在论文中使用的LCD屏,为单色16级灰度屏,因而不涉及到这些模式。但为了保持UCGUI文件的完整性,该目录以及目录下14个文件,仍然保存在移植文件中。
uC/GUIGUIConvertMono目录:
此目录下的文件描述单色显示的不同模式,包含4个文件。
uC/GUIGUICore
此目录下包含129个文件,是uC/GUI的核心部分。包括GUI头文件,GUI显示各种文本,二进制,十进制,十六进制,字符型文本,字符串,在不同的位置显示二进制,十进制,十六进制,字符型文本,字符串等;GUI设置各种字体;GUI的2-D图形库,GUI绘图函数,在各种位置绘各种点,线,位图,多边形,长方形,圆等等;GUI获取函数,获取当前点,线,位图,多边形,长方形,圆,当前字体,当前二进制,十进制,十六进制,字符型文本,字符串等函数;设置GUI画笔函数;GUI支持的鼠标函数;GUI支持的键盘函数,GUI支持的触摸屏函数;GUI设置LCD函数等等。这些函数,在uC/GUI系统中都是必须的函数。正是这些函数的组合,使得uC/GUI具有复杂而且完备的图形用户接口。而且,这些函数的组合,使得uC/GUI可以单独的使用,也可以通过配置文件,移植到各种操作系统中使用。
uC/GUIGUIFont
此目录下包含的是uC/GUI支持的字体。
uC/GUIGUILCDDriver
LCD API目录。该目录下包含很多已经完备的LCD控制器的驱动程序以及API函数。
uC/GUIGUIMemDev
MemDev目录。
MemDev主要用于防止在画交迭图时产生的抖动。 uC/GUI函数绘图不使用MemDev时,画图操作直接写到终端上显示,交迭绘图执行时刷新屏幕,多次刷新时就会出现抖动。例如,要在背景色中画图,且在前景中写一些透明的文字,实现的步骤就是先画图,然后写文字,那么结果就会出现文字的抖动。如果在程序中使用MemDev,则所有的执行操作都在 MemDev中执行,当所有的操作都执行完毕之后,最后的结果才会送到屏幕上显示,因而可以避免多次刷新,从而避免抖动。
此目录下包含这MemDev的所有函数,包括创建MemDev函数,激活MemDev,执行画图操作,显示到终端,删除MemDev函数等等。
uC/GUIGUITouch
触摸屏驱动函数所在目录。uC/GUI只支持模拟的触摸屏。因而此目录下只包含模拟触摸屏。
uC/GUIGUIWidget
此目录包含窗口控件函数,总共46个函数。UC/GUI中窗口控件机制时uC/GUI的实现难点,也是应用难点。运用窗口管理和回调机制,运用窗口控件函数,可以任意在LCD屏幕上实现类似于windows的界面,这样完备的功能在工业自动化控制和触摸屏应用上有着深远而积极的意义。
此目录下的函数主要包括uC/GUI的窗口控件,如按钮BUTTON,校验窗CHECKBOX,编辑区EDIT,窗口框FRAMEWIN,列表 LISTBOX,进度条PROGBAR,音频按钮RADIOBUTTON,滚动条SCROLLERBAR,改变值的灰度条SLIDER,以及文本框 TEXT相关的各种函数。
uC/GUIGUIWM
此目录包括窗口管理函数,总共52个函数。UC/GUI中,窗口管理中的消息传递机制和回调机制,也是uC/GUI的实现难点和应用难点。4.3节中将详细介绍这两点。
此目录下的函数主要包括设置、返回、建立背景窗口、父窗口、各种子窗口以及相应的尺寸、窗口句柄,起点x,y坐标,窗口宽度,高度,位置等等,还包括改变窗口的大小,以及最关键的窗口的回调函数,窗口重绘函数等等。
uC/GUI的窗口管理
简介
uC/GUI的窗口管理是一个单独的软件,不是uC/GUI的基本组成部分。详细代码见uCGUIGUIWM。
当使用uC/GUI窗口管理时,任何能显示在显示终端上的内容都包含在一个窗口里面,这个窗口是LCD屏幕上的一个给用户画图或者显示目标的区域。窗口可以是任何尺寸的,可以一次在屏幕上显示多个窗口,也可以在其它窗口当中或之前显示窗口。
窗口管理的几个名词:
活动窗口:
当前正在用来画图或是显示操作的窗口。
回调函数
回调函数是由用户定义的,当特定事件发生时,指示图形系统调用特定函数的函数。通常当窗口的内容发生改变时,它们用来自动重绘窗口。例如,窗口内显示一幅位图,当窗口移动时,位图并不会自动移动,此时,就需要调用回调函数对窗口进行重绘,即,从观众的角度来看,移动窗口和窗口内容。
评论