资源描述
GUI移植笔记
日期:2011-5-14
一、GUI源码结构(3.90版本)
GUI
Sample Start
GUI(例子) Application
GUI_X Config
GUI_X.c GUIConf.h
GUI_X_uCOS.c GUITouchConf.h
GUI_X_Touch.c LCDConf.h
LCD_X GUI
LCDConf AntiAlias
ConvertColor
ConvertMono
Core
Font
JPEG
LCDDriver
MultiLayer
Widget
WM
Touch
Simulation.dsp (工程文件,用于VC仿真)
Simulation.dsw (工作空间)
二、PC下的GUI仿真
1、安装Visual C++开发环境
2、进入GUI源码目录GUI---->Start
3、打开Start目录下的Simulation.dsw文件,如下图
A、 只要修改Application中的文件,就能看到GUI提供的不同Demo。
B、Demo文件在Sample目录下的GUI子目录中。按需要添加,再次编译,运行就能看到效果。
C、开发用户界面的时候可以在PC下按照这种方法,只需要编写Application中的文件在移植到目标开发板上去。
三、GUI的移植
1、编写好自己的LCD驱动程序,包括以下的三个基本函数。
void LCD_Init ();
void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color);
unsigned short LCD_GetPixel(unsigned short x, unsigned short y);(返回颜色值)
2、将驱动程序与GUI联系起来(对于自己编写驱动程序的)
1)修改LCDDriver目录下的LCDDummy.c文件。将以上三个函数添加到程序中。
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
…
LCD_SetPixe(x,y,PixelIndex);
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
…
PixelIndex = LCD(x,y);
return PixelIndex;
}
int LCD_L0_Init(void)
{
LCD_Init();
return 0;
}
2)在LCDDummy.c中#include”LCDxxx.h”(LCDxxx.h就是LCD驱动程序的位置)。
3)LCDDummy.c下还有GUI会调用到得画线画圆函数,可根据需要自行修改。
3、修改Config目录下的配置文件
1)LCDConf.h文件下LCD的相关宏定义:
LCD_XSIZE (x) 横向最大像素
LCD_YSIZE (y) 纵向最大像素
LCD_MIRROR_X (1) X轴镜像
LCD_MIRROR_Y (1) Y轴镜像
LCD_SWAP_XY (1) XY轴互换
LCD_SWAP_RB (1) 红、蓝色互换
LCD_BITSPPIXEL (16) 像素颜色数据的长度
LCD_CONTROLLER (-1)定义采用LCDDummy中的驱动程序驱动屏幕
此部分的修改可以参考GUI手册中的第20章。
2)GUIConf.h中的配置
GUI_OS (0) 多任务系统支持
GUI_SUPPORT_TOUCH (1) 触摸屏支持
GUI_SUPPORT_UNICODE (1) Unicode支持
GUI_DEFAULT_FONT &GUI_Font8x16 默认字体设置
GUI_ALLOC_SIZE 15000 内存分配,用于WM模块,单位字节
(下面两行需要自行添加)
GUI_DEFAULT_BKCOLOR 0x001F 默认背景色
GUI_DEFAULT_COLOR 0xF800 默认前景色
GUI_WINSUPPORT 1 视窗管理模块支持
GUI_SUPPORT_MEMDEV 0 /* Memory devices available */
GUI_SUPPORT_AA 1 /* Anti aliasing available */
此部分的修改可以参考GUI手册中的第21章。
4、添加Sample/GUI_X/下的文件GUI_X.c(如果带系统添加CUI_X_OS.c)到工程中,同时把GUI源码的的C文件添加进工程,并且添加文件的路径。
5、在主程序文件中包含GUI.h文件。
6、在主程序中初始化GUI,如下:
int main()
{
…
GUI_Init();
…
}
7、现在已经可以在主程序中随意调用GUI的函数了,除了触摸屏还不能用之外。
四、为GUI添加触摸功能
1、需要给GUI提供触摸屏AD转换的数据。
2、把编写触摸屏ADC采样函数。
3、把采样函数与GUI联系起来:
在Sample/GUI_X目录下的GUI_X_Touch.c文件中添加采样函数
int GUI_TOUCH_X_MeasureX(void)
{
/*触摸屏X轴坐标读取函数*/
return x;
}
int GUI_TOUCH_X_MeasureY(void)
{
/*触摸屏Y轴坐标读取函数*/
return y;
}
并且在本C文件中包含ADC采样函数所在的文件。
4、修改配置文件
GUIConf.h文件配置
这项配置为1:GUI_SUPPORT_TOUCH (1) 打开触摸屏支持
GUITouchConf.h文件配置
GUI_TOUCH_AD_LEFT 315 触摸屏左边返回的数据(需要实际测量再修改)
GUI_TOUCH_AD_RIGHT 3880 触摸屏有边返回的数据(需要实际测量再修改)
GUI_TOUCH_AD_TOP 3880 触摸屏顶边返回的数据(需要实际测量再修改)
GUI_TOUCH_AD_BOTTOM 335 触摸屏底边返回的数据(需要实际测量再修改)
GUI_TOUCH_SWAP_XY 1 根据实际情况修改开关
GUI_TOUCH_MIRROR_X 1
GUI_TOUCH_MIRROR_Y 0
此部分的修改可以参考GUI手册中的第18章。
5、在Sample/GUI_X目录下的GUI_X.c文件中添加触摸屏初始化函数
void GUI_X_Init(void)
{
…
touch_init();
…
}
到此为止,GUI已经能调用触摸屏了。
在程序中需要不停调用GUI_Touch_Exec()函数来获取触摸屏XY的坐标值,该函数最好放在定时器中断中或者在多任务系统中创建已经新的进程来调用。
展开阅读全文