以下内容大多是网上资源,我只做一些修改和结合,为的是能够方便更多的和我一样的菜鸟们搞懂GUI的移植。 ----kxr 第一部分:在UCGUI移植之前 在移植之前,首先要了解在网上下的UCGUI 3.98源码的文件结构是。 UCGUI 3.98源码中有三个文件夹: 1)“tool文件夹”是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的. 2)“sample文件夹”下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能. 3)“Start文件夹”里面,这是我们最主要的文件夹.里面就包含了uCGUI的源代码,uCGUI的作者把源代码放进vc里面进行编译了(当然,这是用标准C语言写的程序,所以我们可以放在任何C语言平台下编译而不会担心兼容性问题,这个uCGUI在这方面做的算是完美了),所以,我们可以在vc平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了。 Start文件夹”目录内容:
Config,配置文件;
GUI/AntiAlias,抗锯齿支持;
GUI/ConvertMono,用于B/W(黑白两色)及灰度显示的色彩转换程序;
GUI/ConvertColor,用于彩色显示的色彩转换的程序;
GUI/Core µC/GUI,内核文件;
GUI/Font,字体文件;
GUI/LCDDriver,LCD 驱动;
GUI/Mendev,存储器件支持;
GUI/Touch,触摸屏支持;
GUI/Widget,视窗控件库;
GUI/WM,视窗管理器;
移植uC/GUI主要集中在修改三个头文件和两个C文件:
三个头文件都在\Config下,分别是GUICon.h ,GUITouchConf.h,LCDConf.h ;
两个C文件一个是GUI_X.C(Sample\GUI_X.C),另外一个在GUI\LCDDriver目录下(LCDWin.c)。 第二部分:修改配置文件GUICon.h ,GUITouchConf.h,LCDConf.h 在“Start文件夹”里有两个文件夹里的内容,使我们移植所关心的。一个是CONFIG , 另一个是\GUI\LCDDriver。
在CONFIG文件夹中有三个.h文件,GUIConf.h、 CONFIG: 配置LCDConf.h文件如下:
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE (160) //配置TFT的水平分辨率
#define LCD_YSIZE (128) //配置TFT的垂直分辨率
#define LCD_CONTROLLER (54124) //TFT控制器的名称
#define LCD_BITSPERPIXEL (16) //每个像素的位数
#define LCD_FIXEDPALETTE (565) //调色板格式
#define LCD_SWAP_RB (0) //红蓝反色交换
#define LCD_INIT_CONTROLLER() TFT_Init() ; //此处需要定义的是你的TFT初始化函数
#endif /* LCDCONF_H */
配置GUIConf.h文件如下:
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (1) //多任务
#define GUI_SUPPORT_TOUCH (0) //触摸
#define GUI_SUPPORT_UNICODE (1) //Unicode支持
#define GUI_DEFAULT_FONT &GUI_Font6x8 //GUI默认字体
#define GUI_ALLOC_SIZE 5000 //动态内存的大小
#define GUI_WINSUPPORT 1 //窗口控件支持
#define GUI_SUPPORT_MEMDEV 1 //支持内存设备
#define GUI_SUPPORT_AA 1 /* Anti aliasing available */
#endif /* Avoid multiple inclusion */
配置GUITouchConf.h文件如下:
#ifndef __GUITOUCH_CONF_H
#define __GUITOUCH_CONF_H
#define GUI_TOUCH_SWAP_XY 0
#define GUI_TOUCH_MIRROR_X 0
#define GUI_TOUCH_MIRROR_Y 0
#define GUI_TOUCH_AD_LEFT 3601
#define GUI_TOUCH_AD_RIGHT 393
#define GUI_TOUCH_AD_TOP 273
#define GUI_TOUCH_AD_BOTTOM 3671
#endif /* GUITOUCH_CONF_H */ |