当前位置:文档之家› 第29章emWin(ucgui)STemWin多任务(uCOS-III)

第29章emWin(ucgui)STemWin多任务(uCOS-III)

第29章emWin(ucgui)STemWin多任务(uCOS-III)
第29章emWin(ucgui)STemWin多任务(uCOS-III)

UCGUI移植教程

UCGUI在STM32上移植教程 1说明 ●开发板芯片型号STM32F103VET6 ●板载液晶型号ILI9341 ●所需准备资料UCGUI3.90源码 ●一个工程模板 为了节约时间,此处所用模板为野火M3工程模板(3.5.0) 制作时间---2013-08-07 By NUAA---Kylin 2移植过程讲解 2.1首先打开工工程模板,页面如下,这个模板工程很简单

2.2在工程模板中新建两个文件夹 2.2.1命名为GUI与Mylib 2.2.2在GUI文件夹下添加以下内容 ●上述图片为UCGUI3.90源码中的一些文件夹 ●进入UCGUI3.90源码文件夹/Start,将Config文件夹原封不动的拷过来 ●进入UCGUI3.90源码文件夹/Start/GUI文件夹,将其中所有文件夹拷过来 ●在GUI文件夹下新建GUI_X文件夹,进入UCGUI3.90源码文件夹/ Sample/ GUI_X文件夹 中,如果带操作系统应该拷贝GUI_X_uCOS.c,如果不带操作系统拷贝GUI_X.c,在这里我们将将GUI_X.c拷贝到新建GUI_X文件夹。

2.2.3各文件夹说明 1)AntiAlias:9个C文件,主要用于抗锯齿的显示效果。 2)ConvertColor:彩色显示的色彩转换支持。 3)ConvertMono:(b/w)和灰度显示的色彩转换支持。 4)Core:核心文件,提供了GUI基本的功能。 5)Font:字库。 6)JPEG:图片操作函数。 7)LCDDriver:LCD驱动程序 8)MenDev:Memorydevice 支持。这个东西可用在很多情况下,但最主要的功能是防止在 项目重叠时,防止屏幕的闪烁。 9)Widget:窗体控件库。 10)WM:窗口管理库。 11)Config:配置文件。 12)GUI:源代码。 13)GUI_X:操作系统接口函数。 2.3添加组及源文件 2.3.1将GUI文件夹下的所有文件夹添加到GROUP 右键工程工程项目名选择manage components将这些组全部添加上如图

uCGUI 汉字显示技巧及总结

UCGUI的基础应用 汉字显示 在uC/GUI中显示汉字,必要的一个步骤就是汉字取模。通常有两种方法: 一、单个字模法:使用字模取模软件,进行单个字的取模。此方法可应用于显示汉字字 数较少的情况下。其优点是:占用存储空间小,无冗余。但当显示汉字字数较多时,该方法则非常繁琐。 二、字模库法:该方式需要移植整个汉字字库,若项目要求需显示多种汉字字体,则需 移植多种字体的字库。其优点是:操作方便。若嵌入式系统的FLASH存储容量够大时,该方式可行。 根据作者多年的项目实践,找到一个兼具上述两种方式优点的显示方案:利用UCGUIFontTool软件,提取windows自带的字模库。该方法的使用步骤: 1、将项目中所要显示的汉字根据字体进行分类并汇总。 2、使用UCGUIFontTool软件分别提取上述字模。 3、将所产生的.C文件添加到工程中。 4、更改gui.h中的配置,添加该汉字的宏定义,如图 5、显示汉字前更改需显示的字体,如图 6、利用函数进行显示。 该方法移植方便,易实现同时显示多种字体,无字模冗余,占用存储空间最小。图片显示 uC/GUI提供了位图的解决方案,在GUI显示图片时,需先将其他格式的图片转换为bmp格式。可利用windows系统自带的画图软件打开一个图片,再另存为bmp格式,继而转换为.c 格式文件加入到工程中。其操作步骤如下: 1、将其他格式的图片另存为bmp格式。 2、打开UCGUI源码自带的工具uC-GUI-BitmapConvert,选择相应参数,并转换为.c文件。 3、将该.c文件加入到工程中。 4、添加外部变量,并调用相应函数进行显示。如图 5、也可UCGUI提供的缩放函数可对图片进行缩放显示。如图

UCOS-II ucGUI的完美移植

stm32 UCGUI 完美移植 作者:Changing发表时间:09-16 04:13分类:电子相关1 Comment 前一篇:stm32 DA 数模转换 后一篇:Stm32 SWD 下载 调试配置 UCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。 它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。 类似程序还有国产的一个MINIGUI (https://www.doczj.com/doc/dd7927841.html,/zhcn/),MiniGUI 是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Li nux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。有机会尝试下,支持下国产,毕竟国内这样的公司不多。。 这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。但是目前来说只有这个版本的代码是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模块。一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。 UCGUI390a 下载 整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。。。总之移植是个累人的活 首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 T F T LCD stm32 驱动 触摸屏 两篇文章 UCGUI的文件数量很大,主要用到UCGUI390a/Start/Con f ig 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。。。 相关文件介绍如下:

ucgui做界面切换

这次在用ucgui做界面切换的时候,决定不给每个菜单界面都创建一个对话框,和网友讨论的过程中,得出两种方法,一位网友说的是STM32的存储空间足够,可以先把自己所要用到的控件全部建立好,然后根据需要去设置控件是显示还是隐藏。另一位网友认为这样有点浪费内存,采用的方法是,先建立好一个对话框,然后根据自己的需要去删除和新建控件。 之后我就选择了第二种方法,在菜单的切换中去删除和新建控件。可能是自己太菜了,第一次删除控件和新建控件就出了问题。 问题是这样的:我先创建一个对话框作为欢迎界面(两个TEXT控件和一个BUTTON控件) hWinMenu = GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),_cbWelcome,0,0,0) ; 我的想法是,点击按钮后删掉按钮控件和两个TEXT控件。然后再新建4个按钮控件。 1.hButton[0] = BUTTON_CreateAsChild(30,26,115,70,hWinMenu ,GUI_ID_BUTTON1,WM_CF_SH OW); 2.hButton[1] = BUTTON_CreateAsChild(30,124,115,70,hWinMenu,GUI_ID_BUTTON2,WM_CF_S HOW); 3.hButton[2] = BUTTON_CreateAsChild(188,26,115,70,hWinMenu,GUI_ID_BUTTON3,WM_CF_S HOW); 4.hButton[3] = BUTTON_CreateAsChild(188,124,115,70,hWinMenu,GUI_ID_BUTTON4,WM_CF_S HOW); 5.BUTTON_SetBitmapEx(hButton[0],0,&bmqd,30,10); 6.BUTTON_SetBitmapEx(hButton[1],0,&bmpf,30,10); 7.BUTTON_SetBitmapEx(hButton[2],0,&bmsz,30,10); 8.BUTTON_SetBitmapEx(hButton[3],0,&bmdc,30,10); 9.BUTTON_Delete(WM_GetDialogItem(hWinMenu,GUI_ID_BUTTON0)); 10.TEXT_Delete(WM_GetDialogItem(hWinMenu,GUI_ID_TEXT0)); 11.TEXT_Delete(WM_GetDialogItem(hWinMenu,GUI_ID_TEXT1)); 这样写了之后的结果是,原先的控件被删除了,我所需要的4个按钮新建成功。但是此时出现了一个问题,我仿真的时候发现,我按下新建的按钮时,按键颜色虽然有变化但是回调函数里并没有收到按钮传递给父窗口的按钮按下的消息。这样我就很纳闷的总是想不出是为什么。 通过查看新建对话框函数的源代码之后有了一点发现 hWinMenu=GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),_cbWelcome,0,0,0); 我是想查看一下hWinMenu是不是我之后新建按钮所需要的父窗口句柄。

关于ucgui的字库

关于ucgui的字库 1、在UCGUI中有两种类型字体, 一种是等宽字体(Monospaced Font),即字体当中所有字都是同一宽度,它在UCGUI中的相应结构体是GUI_FONT_MONO, 一种是均衡字体(Proportional font), 这种字体中的字都有自己独立的宽度, 字体内的每个字都可以有不同宽度, 它在UCGUI中的相应结构体是GUI_FONT_PROP, 对于等宽字体, 一般都是将所有字的点阵存放在一个数组中, 因为每个字都宽度相同. 对于均衡字体, 则要单独用数组来定义每个字符的点阵, 然后将每一个字符的宽高及点阵存为一个数组即字符信息(ucgui中对应结体为GUI_CHARINFO), 所有字符信息再存到一个数组当即称为字符集, 它包含每个字的字符信息(点阵高宽及一行占几个字节), 所谓一行占几个字节, 是指这个字体的点阵每一行有多少个字节, 它与宽度高度单位不同, 宽度高度的单位是象素数. 2.另外特别指出的是, 在等宽字体中不仅所有字符宽度相同,高宽也是相等的; 对于均衡字体, 不仅可以宽度不同, 高度也可以不同, 每一行有多少个字节自然也不同, 在均衡字体中每一个字符都单独定义之后才组成字体的字符集.

3.字符集的问题, 在UCGUI中每种字体含的字符集不同, 这个可以参看UCGUI手册中的"Standard Font"一章,这一章中对于字符集有如下描述: ASCII: Only ASCII characters 0x20-0x7E (0x7F).[仅包含 0x20-0x7E这个范围内的ansii字符] 1: ASCII characters and European extensions 0xA0 - 0xFF.[除 0x20-0x7E这个范围内的ansii字符, 还有0xA0 - 0xFF这个范围内的欧洲字符集, 这里要指出美国英语只用到 0x20-0x7E, 它只考虑了自己的须求, 没有考虑其它国家的须求, 在欧洲是有拉丁字符的, 所以欧洲国家扩展了剩余的 0xA0 - 0xFF这个范围内的来表示欧洲的字符集, 其实我们 国家的汉字也是在这个范围内扩展的, 不过我们用的是二个字节来表示一个汉字, 是因为汉字太多, 这区区94个值无法满足汉字的须求, 94*94就差不多了. 汉字用到的第一个值为0xb0a1(啊), 最后一个为0xf7fe(齄), 在机内码1当中只用到a1+15~a0+86这个范围的, 关于机内码是这个意思: 对于"啊"字模,机内码:(0xb0,0xa1), 0xb0为"啊"字的机内码1,0xa1为机内码2. 对于机内码2合使用是0xa1~0xff这个范围内的所有值, 关于机内码及汉字显示的原理及汉字库的构成, 本论坛中有专门的一篇文章介绍--"ucgui中处理汉字显示的说明",

UCGUI

uC/GUI作为一个通用的嵌入式应用的图形模块,它在嵌入式系统中的作用也显得的越来越重要。uC/GUI是一个源代码开放的图形系统,它提供了丰富的资源,包括二维绘图库、多字体及可扩充字符集、Unicode、位图显示、多级RGB及灰度调整、动画优化显示、具有Windows风格的对话框和预定义控件(按钮、编辑框、列表框等),以及对键盘、鼠标、触摸屏等输入设备和双LCD输出的支持,目前在具有图形界面的嵌入式产品中得到越来越广泛地应用。 2 通用嵌入式图形模块uC/GUI uC/GUI是一个通用的嵌入式应用的图形模块,它是美国Micrium公司开发的一种高效的、与处理器和LCD控制器独立的通用GUI,可以适用各种CPU和LC D,在单任务和多任务操作系统中,它都可以工作得很好。它具有驱动接口层和应用层,全部代码采用ANSI _C编写,提供源代码,可以方便的移植到各种平台下。 2.1 uC/GUI特点 (1) 支持任何8位、16位和32位的CPU,只要求CPU具有相应的ANSI_C编译器即可。 (2) 所有硬件接口定义都使用可配置的宏。 (3) 字符、位图可显示与LCD的任意点,并不限制与字节长度的整数倍数地址。 (4) 所有程序在长度和速度方面都进行了优化,结构清晰。 (5) 对于慢速的LCD控制器,可以使用缓冲存储器减少访问时间,提高显示速度[1]。 因为uC/GUI具有这些优点,它越来越受到更多嵌入式设计者的青睐。 2.2 uC/OS-II介绍 在嵌入式系统的开发过程中,选择操作系统与选择开发平台一样的重要。虽然不是一个完整的实时操作系统,只是一个实时内核,但与其它操作系统比起来它具有很多优点因而得到了广泛的应用。首先它是一种结构简单、源代码公开的操作系统,适合所有的开发者使用;它具有可移植性,它的绝大部分源码都是用移植性很强的ANSI _C编写,与微处理器硬件相关的部分采用汇编语言编写,很容易被移植到各种微处理器上;它还具有可固化和可裁剪等特点,对于嵌入式设计者来讲的,只要拥有固化手段(C编译、连接、下载和固化),就可以很方便将其嵌入到产品中去。设计者还可以根据系统应用程序的需要对uC/OS-I I进行相应的裁剪来减少产品中的uC/OS-II所需的存储器空间,这可以通过条件编译来实现。 2.3 uC/GUI接口

嵌入式用户图形接口uCGUI的简单分析.

? 嵌入式用户图形接口uC/GUI的简单分析 4.1 uC/GUI简介 uC/GUI是Micrium 公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD 的应用程序提供独立于处理器和LCD 控制器之外的有效的图形用户接口。可以应用于单一任务环境,也可以应用于多任务环境中。uC/GUI能够应用于任何LCD 控制器和CPU 的任何尺寸的物理显示或者模拟显示中。 uC/GUI的特点如下: o 适用于任何8位/16位/32位CPU ,可允许于支持ANSI C的任何编译器 o 适用于任何控制器驱动任何LCD (单色,灰度,或者彩色) o 通过配置宏,可支持任何接口 o 可配置显示尺寸 o 可在LCD 的任何一点上显示字符和画位图 o 对于显示尺寸和速度提供优化进程,编译时间依赖于采用的优化进程 o 支持虚拟显示,虚拟显示的尺寸比实际显示大。 4.2 uC/GUI文件组织 uC/GUI目录下的文件有配置文件目录Config ,GUI 库函数目录,以及为GUI 编写的应用程序目录。下面分别简要介绍相应目录下的函数,更为详细的文件介绍请参考我的uC/GUI移植的源代码。 o uC/GUI\Config\目录: GUICONF.h :配置GUI 移植到不同操作系统的选项。在本论文中配置移植到uC/OSII中,允许多任务调用uC/GUI函数。

GUITouchConf.h :配置触摸屏的选项以及编写触摸屏的驱动。本文移植 uC/GUI所使用的LCD 屏不支持触摸屏,所以此文件为空。 LCD_Init.C: LCD 控制器的初始化文件。 LCD_Conf.h: LCD 显示屏的选项文件,包括bpp ,调试板模式,水平、竖直方向的分辨率等等。 o uC/GUI\GUI\AntiAlias\目录: 这个目录中包含9个文件,处理显示的边缘模糊效果,也就是抗锯齿和优化LCD 锯齿。液晶屏上画斜线往往都有锯齿,所以通过优化算法进行美化。 o uC/GUI\GUI\ConvertColor\目录: 这个目录中包含14个.C 文件,涉及调色板模式。uC\GUI的调色板模式支持111模式,222模式,223,323,332,444,555,565,8666等相关模式。我在论文中使用的LCD 屏,为单色16级灰度屏,因而不涉及到这些模式。但为了保持UC\GUI文件的完整性,该目录以及目录下14个文件,仍然保存在移植文件中。 o uC/GUI\GUI\ConvertMono\目录: 此目录下的文件描述单色显示的不同模式,包含4个文件。 o uC/GUI\GUI\Core 此目录下包含129个文件,是uC/GUI的核心部分。包括GUI 头文件,GUI 显示各种文本,二进制,十进制,十六进制,字符型文本,字符串,在不同的位置显示二进制,十进制,十六进制,字符型文本,字符串等;GUI 设置各种字体;GUI 的2-D 图形库,GUI 绘图函数,在各种位置绘各种点,线,位图,多边形,长方形,圆等等;GUI 获取函数,获取当前点,线,位图,多边形,长方形,圆,当前字体,当前二进制,十进制,十六进制,字符型文本,字符串等函数;设置GUI 画笔函数;GUI 支持的鼠标函数;GUI 支持的键盘函数,GUI 支持的触摸屏函数;GUI 设置LCD 函数等等。这些函数,在uC/GUI

UCGUI 简介

UCGUI 简介 译者:UCGUI 邮箱:UCGUI@https://www.doczj.com/doc/dd7927841.html, 主页:https://www.doczj.com/doc/dd7927841.html, 版本:v1.0.0.0 1.0......UCGUI整体简介. ...............UCGUI简介. ...............本文档的目的 ...... .........前提学习要求. 1.1.....要求 ...............目标硬件系统. ...............开发环境(编译器). 1.2.....UCGUI特性. ...... ........示例. 1.3.....评估板. 1.4.....如何使用本手册. ...............印刷上的字体说明. 1.5.....屏幕及坐标系统. 1.6.....LCD控制器的连接类型. 1.7.....数据类型. UCGUI UCGUI是一种嵌入式应用中的图形支持系统.它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示. 它的设计架构是模块化的, 由不同的模块中的不同层组成, 由一个LCD驱动层来包含所有对LCD的具体图形操作, UCGUI可以在任何的CPU上运行, 因为它是100%的标准C 代码编写的. UCGUI能够适应大多数的使用黑白或彩色LCD的应用, 它提供非常好的允许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系. 本文档的目的 本文档描述如何在嵌入式应用中安装,配制,使用UCGUI的图形用户接口, 并讲解UCGUI的内部设计架构.

uCGUI绘制曲线GUI_DrawGraph

uC/GUI图形界面系统提供了非常多的功能强大的用户接口函数, 利用uC/GUI提供的图象绘制函数GUI_DrawGraph(),可以非常容易的绘制出想要的函数的波形。 GUI_DrawGraph()函数的原型为: void GUI_DrawGraph(I16 *paY, int NumPoints, int x0, int y0); 需要提供的参数:paY为纵坐标的数组头指针 NumPoints,顾名思义,为所需绘制的图象的点数 x0,y0为坐标原点在TFT_LCD屏幕上的坐标 这个函数的效果为在屏幕上依次绘制出相对于(x0,y0)坐标为(*(paY+0),0),(*(paY+1),1),(*(paY+2),2).。。。(*(paY+NumPoints),NumPoints)的 一系列的点,由于一般TFT屏都是设置成向下为坐标加的,所以这个函数的效果也是向下为正,向上为负。 写个简单的程序测试一下; 复制代码 1.I16 aY[240];//纵坐标数组,相当于函数值 2. 3.int main() 4.{ 5. u16 i; 6. cdz_rcc_init(); 7. GUI_Init(); 8. GUI_SetBkColor(GUI_WHITE);//白色背景 9. GUI_Clear(); 10. GUI_SetColor(GUI_BLACK);//黑色字体 11. 12.for (i = 0; i < GUI_COUNTOF(aY); i++) {

13.aY[i] = rand() % 80; //rand()函数产生一个0-100之间的随 机数,aY[i]为0-80之间一随机数 14.} 15.GUI_DrawGraph(aY, GUI_COUNTOF(aY), 0, 160);//调用绘图函数 16.} 效果如下: 本文源自https://www.doczj.com/doc/dd7927841.html,/read.php?tid=435

uCGUIBuilder使用说明

一、ucGUBuilder使用方法 (2) 1,新建ucGUI窗体 (2) 2、设置窗体的属性 (3) 3、向窗体添加控件 (4) 二、V ersion 2.1.0.5 新增功能 (9) 1、新增C语言语法高亮显示 (9) 2、支持设计的窗体保存为文件,并可以打开 (9) 3、对所有控件属性添加了Description (12) 4、保存窗体布局 (13) 三、Version 3.0.0.0 新增功能 (15) 1、支持窗体设计器基本操作 (15) 2、多控件操作 (15) 3、文件关联 (16) 4、在线检查更新 (18) 5、自定义控件ID (20) 四、Version 3.1.0.0新增功能 (22) 1、添加了控件ID自动增加功能 (22) 2、用户自定义字体 (22) 3、中英文切换 (23) 4、自动检查更新 (24) 6、问题反馈或提建议 (25) 五、Version 4.0新增功能 (27) 1、代码分离 (27) 2、添加编辑器工具栏 (28) 3、内嵌VC编译器能直接运行模拟器 (29) 4、如何使用代码自动完成功能 (30)

声明:此程序用C#开发,需要.Net Framework 3.5或跟高版本支持 大家在测试的过程中发现什么BUG或者有什么建议可以发Email:ucguibuilder@https://www.doczj.com/doc/dd7927841.html,给我, 一、ucGUBuilder使用方法 1,新建ucGUI窗体 或者单击新建窗体设计器工具栏按钮 或者点下拉箭头选择新建窗体设计器

新建后的效果: 2、设置窗体的属性(包括大小,标题栏文本,……)

3、向窗体添加控件 (1)、在工具箱单击选中你要添加的控件

ucGUI一般移植标准步骤

μc/GUI一般移植过程 移植的版本为3.90a,主要包含的文件夹如下图所示,主要涉及到: 1.Config:配置文件 2.GUI:源代码 3.GUI_X:操作系统接口函数 GUI源代码文件: 1)AntiAlias:9个C文件,主要用于抗锯齿的显示效果。 2)ConvertColor:彩色显示的色彩转换支持。 3)ConvertMono:(b/w)和灰度显示的色彩转换支持。 4)Core:核心文件,提供了GUI基本的功能。 5)Font:字库。 6)JPEG:图片操作函数。 7)LCDDriver:LCD驱动程序 8)MenDev:Memory device支持。这个东西可用在很多情况下,但最主要 的功能是防止在项目重叠时,防止屏幕的闪烁。 9)Widget:窗体控件库。 10)WM:窗口管理库。 注意:JPEG、MenDev、Widget、WM都可以裁减掉,若要支持Widget(窗体控件),需要WM(窗口管理器)的支持;使用控件时,需要将相应的头文件包含进去,比如我们要使用按钮button,那么我们需要先包含button.h头文件,否则控件即使支持也不可用! 一、Config文件夹配置文件修改 1.LCDConfig.h

#define LCD_XSIZE(240)//X-resolution of LCD,Logical coor. #define LCD_YSIZE(320)//Y-resolution of LCD,Logical coor. #define LCD_BITSPERPIXEL(16)//总线宽度 #define LCD_FIXEDPALETTE(565)//TFT格式 #define LCD_CONTROLLER(9325)//控制器型号(-1即可) #define LCD_SWAP_RB(1)//是否红蓝交换 注意:LCD_SWAP_RB会影响到颜色的正确性,倘若发现颜色是反向的,那么不如改变LCD_SWAP_RB的值。 2.GUIConfig.h #define GUI_OS(0)//单任务支持 #define GUI_SUPPORT_TOUCH(1)//支持触摸屏 #define GUI_SUPPORT_UNICODE(1)//UNICODE支持 #define GUI_DEFAULT_FONT&GUI_Font6x8//默认字体 #define GUI_ALLOC_SIZE7000//动态内存(不支持内存设备可小些) #define GUI_WINSUPPORT1//支持窗口操作 #define GUI_SUPPORT_MEMDEV1//Menory devices支持 #define GUI_SUPPORT_AA1//支持抗锯齿显示 3.GUI_TOUCH_Conf.h #define GUI_TOUCH_AD_LEFT200//触摸屏左侧AD测量值 #define GUI_TOUCH_AD_RIGHT3850//触摸屏左侧AD测量值 #define GUI_TOUCH_AD_TOP200//触摸屏上方AD测量值 #define GUI_TOUCH_AD_BOTTOM3700//触摸屏底部AD测量值 #define GUI_TOUCH_SWAP_XY0//X、Y方向翻转 #define GUI_TOUCH_MIRROR_X0//X方向镜像 #define GUI_TOUCH_MIRROR_Y0//Y方向镜像 二、LCDDriver文件夹修改 修改LCDDriver中c文件,实现LCD_L0_Init()初始化、LCD_L0_Set_PixelIndex()画点、LCD_L0_Get_PixelIndex()读取点值、LCD_On()、LCD_Off()。 注意:LCDDriver下有三个文件,任选其一就行,我选择LCDDummy.c,还必须去掉文件中的宏判断语句,否则整个文件不会被编译。

uCGUI使用

uCGUI使用 最好多参考几篇文章,比如UC/GUI中文手册与 emWin5_UM_SC 0:画图函数 GUI_DrawRect:在当前窗口中的指定位置绘制矩形(不填充,画线颜色为前景色) void GUI_DrawRect(int x0, int y0, int x1, int y1); GUI_FillRect:在当前窗口中的指定位置绘制填充的矩形区域(填充前景色) GUI_ClearRect:清除矩形区域(为矩形区域填充背景颜色,图形界面用填充背景色达到清除屏幕的效果) 1:存储设备 不使用存储设备时,绘制操作直接写入显示器。屏幕 在执行绘制操作时随时更新,从而在进行各 种更新时使屏幕闪烁。如果在此过程中使用存储设备, 则所有绘制操作都在存储器中执行。仅在所有操作都完 成后才将最终结果显示在屏幕上,其优点是没有闪烁。 如果不使用存储设备,则可以看到一步步的绘制操作 效果,缺点是会出现显示器闪 烁。使用存储设备时,一次可见到所有例程的效果,就 象单次操作一样,不能实际看见中间步骤。

以下例程是在使用存储设备时通常会调用的,基本用法非常简单: 1. 创建存储设备(使用GUI_MEMDEV_Create() )。 2. 激活它(使用GUI_MEMDEV_Select() )。 3. 执行绘制操作。 4. 将结果复制到显示器中(使用 GUI_MEMDEV_CopyToLCD() )。 5. 不再需要它时,删除该存储设备(使用 GUI_MEMDEV_Delete() )。 2:WM窗口管理器 回调例程:回调例程由用户程序定义,指示在特定事件出现时图形系统调用特定的函数。它们通常用于在窗口内容更改时自动重绘窗口。窗口管理器的默认特性是向每个需要重绘的窗口发送一条 WM_PAINT 。 当用户对窗口有操作时,WM会发送相应的消息给该窗口,窗口可通过回调函数根据消息直接对屏(没有用存储设备时)或对窗口的存储设备进行操作再拷贝到屏幕上,具体的消息说明可以参考emWin的中文手册。 WM_SetCallback 设置窗口的回调例程:WM_CALLBACK* WM_SetCallback (WM_HWIN hWin, WM_CALLBACK* cb) 有了这个函数就可以动态的选择操作的重绘操作等消

UCGUI学习笔记

文本显示函数 GUI_GotoXY(10,10); // 设置坐标(以像素为单位) GUI_DispString("Hello world!"); // 显示文本 void GUI_DispCharAt(U16 c, I16P x, I16P y); 在当前视窗使用当前字体在指定坐标处显示单个字符。 void GUI_DispChars(U16 c, int Cnt); 参数含意 c 显示的字符 Cnt 重复的次数(0≤Cnt≤32767) 在屏幕上显示一行“******************************”: GUI_DispChars('*', 30); void GUI_DispStringAt(const char GUI_FAR *s, int x, int y); 在当前视窗,使用当前字体在指定坐标显示作为参数的字符串。 void GUI_DispStringInRect ( const char GUI_FAR *s, const GUI_RECT *pRect, int Align); 参数含意 s 显示的字符串 pRect 写像素的客户窗口的矩形区域 Align 垂直对齐:GUI_TA_TOP,GUI_TA_BOTTOM,GUI_TA_VCENTER; 水平对齐:GUI_TA_LEFT,GUI_TA_RIGHT,GUI_TA_HCENTER; 在当前视窗的水平及垂直对中的坐标显示字“Text”: GUI_RECT rClient; GUI_GetClientRect(&rClient); GUI_DispStringInRect("Text", &rClient, GUI_TA_HCENTER | GUI_TA_VCENTER); int GUI_SetTextMode(int TextMode); GUI_TEXTMODE_NORMAL 设置正常文本,这是默认的设置,该数值等同于0 GUI_TEXTMODE_REVERSE 设置反转文本 GUI_TEXTMODE_TRANSPARENT 设置透明文本 GUI_TEXTMODE_XOR 反相显示的文本 char GUI_GotoXY(int x, int y); char GUI_GotoX(int x); char GUI_GotoY(int y); GUI_GotoXY()对当前视窗文本坐标的X坐标和Y坐标两部分同时设置。 GUI_GotoX()只对当前视窗文本坐标的X坐标部分进行设置,Y坐标保持不变。 GUI_GotoY()只对当前视窗文本坐标的Y坐标部分进行设置,X坐标保持不变。 void GUI_DispCEOL(void) 清除当前视窗(或屏幕)从当前文本坐标到行末显示区域的内容,高度为当前字体高度。 在屏幕上显示“Hello world”,等待1秒钟,然后在同步坐标显示“Hi”,代替原先的

ucGUI移植详细设计及总结

ucGUI移植详细设计及总结 序 本文档阐述了将ucGUI移植到IM12上的过程。ucGUI版本为3.9,移植到IM12上,触摸屏及按键能够正常使用。在ucGUI源码包的基础上,添加了一些接口函数以适应IM12,在使用时应该根据情况使用这些接口,这些新增加的函数的接口将在后面章节中详细讲述。此外,适应IM12的ucGUI在Wind River Workbench 3.0环境下被编译成两个静态库文件libNoWindow.a和libWindow.a,编译程序时应该连接这两个库。 文档篇章安排如下: 第一章,ucGUI源码包简介。主要介绍了所使用的ucGUI图形库中各文件夹的内容及功能,并对IM12中与ucGUI移植相关的部分,包括触摸屏、LCD、按键板等进 行了简单的介绍。 第二章,图形库移植。阐述如何对ucGUI进行配置、编译,以在IM12的LCD上显示图形,此部分还未实现触摸屏及按键功能,只是纯粹的显示而已 第三章,触摸屏移植。 第四章,按键移植。 第五章,带触摸屏及按键功能的ucGUI应用程序模板。

第一章ucGUI源码包简介 ucGUI要移植到im12上,实际上就是根据im12的情况修改ucGUI中的一些配置项,或增加、删减一些程序以适应im12,同时要保持ucGUI的特性。要做好移植工作,需对ucGUI 及IM12相关部分有足够的了解。 1.1ucGUI简介 移植所采用的ucGUI版本为3.9,主要包含的文件夹如图1所示 图1 ucGUI源码结构图 各文件夹的主要内容如下: Config ----------- 配置文件 GUI ----------- 源代码 GUI_X ---------- 操作系统接口函数定义文件 GUI 源代码文件: 1)AntiAlias: 抗锯齿显示效果支持。 2)ConvertColor: 彩色显示的色彩转换支持。 3)ConvertMono: (b/w)和灰度显示的色彩转换支持。 4)Core: 核心文件,提供了GUI基本的功能。 5)Font: 字库。 6)JPEG: 图片操作函数。 7)LCDDriver: LCD驱动支持。 8)MemDev: 内存设备支持。主要功能是防止在项目重叠时触摸屏的闪烁。 9)Widget: 窗体控件库。 10)WM: 窗口管理库。 注意:JPEG、MemDev、Widget、WM是可裁剪项,若要支持Widget(窗体控件),需要WM(窗口管理器)的支持;使用控件时,需要将相应的头文件包含进去,比如我们需要使用按钮BUTTON,那么我们需要先包含BUTTON.h头文件,否则控件即使支持也不可用。本次

原创 ucGUI入门心得

ucGUI入门心得 学习ucGUI近一个月,感觉已经达到入门的级别,先前掌握的Windows应用程序开发经验对于学习ucGUI有着很大的帮助。 首先,我使用的是ucGUI的高版本——emwin5.22。这个版本较旧版本多了些可用的控件和皮肤,这会让我们设计出外观更好,功能更强的界面。 然后,我们设计出来的界面需要在VC6.0上进行调试。网上可以下载到移植好的emwin及附带的小工具。这些工具包括界面设计工具 GUIBuilder,图片转16进制数据工具BmpCvt和字体生成工具FontCvt。用好这些工具对我们开发GUI有很大的帮助。 接着开始创建一个GUI工程。第一步用GUIBuilder创建一个对话框做为窗体,第二步在这个对话框上面放上一些用到的控件,接下来对这些控件进行属性设置,这些都做完以后,点击保存菜单就会生成一个C文件。VC6.0引用这个C文件就可以显示刚才设计的界面了。如果让我们的界面更加美观就需要用到 BmpCvt工具,它可以把图片生成16进制数据供图片框调用。BmpCvt可以生成透明背景的图片,效果相当不错。制作透明图片需要用到 Photoshop,在PS里新建一个带透明背景的图片,然后把我们图片粘贴进去,再擦除一此不需要的颜色就可以了。带透明背景的图片用BmpCvt打开以后,可以看到透明部分显示的是马赛克就对了。用FontCvt工具可以生成我们需要的各种字体,也包括汉字。我习惯使用Keil开发环境,Keil里使用汉字是Ansi编码,而FontCvt生成的是Unicode编码,这显然不能兼容。这需要转换一下就可以直接使用了。 最后总结一下在使用emwin过程中遇到的一些问题。 1.在对话框里使用画线画多边形或显示文字这些基本绘图功能。只需要在窗口回调函数下的WM_PAINT消息里操作即可。 2.在点取下拉列表的表项时,会点击到其下边的其它控件,造成误操作。遇到这种情况判断下拉列表底下这个控件是否有焦点就可以了。if(WM_HasFocus(hItem) >0) 3.灵活使用WM_TIMER窗口定时消息和WM_USER用户自定义消息。 4.ListView控件里没有获取当前点击到哪一列的函数,我们需要在点击到某一行列时做相应的操作。解决这个问题需要用到WM_TOUCH_CHILD 控件触摸消息。 if(pMsg->Data.p) { Msg = *(WM_MESSAGE*)pMsg->Data.p; if(Msg.Data.p ==0) break; //防止划过界 State = *(GUI_PID_STATE*)Msg.Data.p;

GUI的种类及uCGUI的架构

GUI的种类及uCGUI的架构 (说明:本博文转载自他人笔下,希望可以帮助同僚更深刻的认识GUI) GUI的种类及uC/GUI的架构 一.GUI概述 GUI(Graphic User Interface)是图形化的用户界面,它能提供友好的人机交互接口。 它有以下特性:体积小,运行时耗用系统资源少,层次化的结构,易移植,可靠性高 嵌入式GUI种类 嵌入式GUI种类有很多,下面列举几种: 1. WINCE的GWES(图形、窗口、事件子系统),由应用程序接口(API)、用户接口(UI)和图形设备接口(GDI)组成,包含了消息机制 2. Trolltech公司的产品:QT、QTE、QTOPIA,它们跨平台、功能强大,但资源消耗多 3.MINIGUI是魏永明创建的嵌入式GUI中间件,可以以多线程、多进程、以及单任务运行,是比较成熟的商用系统 4.ucGUI能支持多种环境的GUI,可以以多任务形式运行或

者以前后台模式运行。商用化,但功能相对简单 GUI的两种模式: 1. Windows模式,采用类似windows的API和相应的消息机制,如ucGUI、MicroWindows、miniGUI 2.C/S模式,采用一个XServer,所有的显示都以客户端的形式请求服务,如Nano-X GUI 在嵌入式系统或实时系统中的地位 越来越多的市场需求数据显示,包括PDA、娱乐消费电子、机顶盒、DVD等影音设备、WAP 手机等高端电子产品得到广泛应用,原先仅在军工、工业控制等领域中使用的GUI图形系统,受到越来越多的关注。 对于轻量级GUI 的系统而言,对GUI 的要求相对较低,如传统51类型单片机这类系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI 之上,如Windows 或X Window。目前此类系统都直接使用原有编程手段,采用比较简单的手法实现GUI。对于太过庞大和臃肿的GUI系统而言,μc/GUI这类可运用于此类资源较紧张的轻型GUI 的需求更加突出 uc/GUI简介

基于ucGUI多任务系统的图形用户界面开发

https://www.doczj.com/doc/dd7927841.html, 基于ucGUI多任务系统的图形用户界面开发 吴建鲁 江苏自动化研究所,江苏连云港 (222006) E-mail:wujianlucool2006@https://www.doczj.com/doc/dd7927841.html, 摘要:图形用户界面是人与计算机进行交互的一种操作方式,它的质量直接影响着产品的推广和用户的使用效率。针对嵌入式系统中图形用户界面应用的广泛需求,本文介绍ucos-II 和ucGUI在S1C33209上的移植过程,并在此基础上实现了ucGUI多任务系统中图形用户界面的开发。 关键词:ucos-II; ucGUI; 移植;图形用户界面 1 引言 与命令式用户界面(Command Line Iser Interface)不同,图形用户界面(Graphical User Interface,GUI)不需要用户通过输入专业性很强的抽象命令来操作计算机,而代之以窗口、图标、菜单等直观的图形或图标,再加上可以控制光标移动的指示装置来完成数据和控制命令的输入,从而实现对计算机的交互式操作。由于这样的用户界面不需要记忆专门性很强的控制命令并且非常直观易懂,图形用户界面受到了普遍的欢迎[1]。ucGUI是Micrium公司出品的一款针对嵌入式系统的开放源代码的优秀图形软件,它为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口。适用于单任务或是多任务系统环境,并适用于任意LCD控制器和CPU下任何尺寸的真实显示与虚拟显示。架构基于模块化设计,由不同的模块中的不同层组成。采用100%的标准C代码编写,由一个LCD驱动层来包含所有对LCD的具体图形操作,ucGUI可以在任何CPU上运行。 在ucGUI单任务系统中,程序顺序的执行,一个软件单元的反应时间依赖于这个系统中所有其他单元的执行时间,实时行为变得极为有限。为了增强实时性,采用ucGUI多任务系统,使用开放源代码ucos-II实时内核,把应用程序分割成不同的部分运行在不同的任务中,具有不同的优先级。这样,任务的实时行为只受运行在更高优先级的任务影响,系统的实时性得到极大的改善。本文使用AEDK-EMB33实验系统,介绍ucos-II在S1C33209处理器上的移植以及ucGUI的移植过程,并在此基础上研究开发基于ucGUI的图形用户界面。 2系统硬件资源简介 AEDK-EMB33嵌入式系统实验平台的硬件采用模块化、开放式的结构设计,采用底板+CPU板+扩展槽的系统结构[2]。系统主要硬件资源如下: 核心的MCU为S1C33209:cpu指令采用RISC架构,内部为16位指令集;硬件采用Harvand 结构,内部独立总线方式;最大处理速度60MIPS。 显示和键盘专用接口:一个复位按键和20个按键输入,采用5×4矩阵键盘;彩色320×240, (STN)256色LCD显示;4线电阻式触摸屏。 3 ucos-II和ucGUI的移植 由于嵌入式系统中具体硬件组成和参数大都不同,ucos-II和ucGUI移植的目的就是针对具体硬件及其配置修改源码底层和硬件相关的部分,添加一些内核没有的外设驱动并修改相应得配置文件,为应用程序的开发提供前提条件。 3.1 ucos-II的移植 为了增强系统的实时性,采用ucGUI多任务系统,在系统中移植一个ucos-II实时内核。移植ucos-II的主要工作是修改3个与cpu相关的文件:os_cpu_c.c,os_cpu_a.s,os_cpu.h,

相关主题
文本预览
相关文档 最新文档