/****移植ucgui到ucosii****/
/*****************************************************************************************
平台 VS2008
编者:张永辉 2013年6月6日
*****************************************************************************************/
1:下载UCGUI394
2:将GUI文件加入到source
3: 在工程添加目录: 对应实际目录
GUI_Config \app\LNG3A\GUI_Config
GUIConf.h //修改配置第一步
GUITouchConf.h
LCDConf.h
GUI_LCDDriver \lpc1788_ucos\GUI_LCDDriver
GUI_X_Touch.c
GUI_X_uCOSII.c
GUI_X_uCOSII.h
GUI_X_1788.c
GUI_X_1788.h
GUI_ConvertColor \source\GUI
LCDP565.c
GUI_Core \source\GUI
all
GUI_Font \source\GUI
F6x8.c
GUI_JPEG \source\GUI
all
4: 需要bsp的支持
bsp480272.h
bsp480272.c
bsptouch.c
bsptouch.h
5: 暂时的测试函数
app_touch.h
app_touch.c
main.c
6: VS2008配置
AdditionalIncludeDirectories="D:\embed\source\uCOSII;D:\embed\vs2008_ucos\uCOSII_port;
D:\embed\app\LNG3A;D:\embed\vs2008_ucos\bsp;D:\embed\app\LNG3A\GUI_config;
D:\embed\vs2008_ucos\GUI_LCDDriver;D:\embed\source\GUI\Core"
/***************************************************************************************************
File : GUIConf.h
功 能: GUI高层配置
参考:uCGUI_OS_LPC1788
编者:张永辉 2013年6月4日
****************************************************************************************************/
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (1) /* Compile with multitasking support */
#define GUI_SUPPORT_TOUCH (1) /* Support a touch screen (req. win-manager) */
#define GUI_SUPPORT_UNICODE (0) /* Support mixed ASCII/UNICODE strings */
#define GUI_DEFAULT_FONT &GUI_Font6x8
#define GUI_ALLOC_SIZE 12500 /* Size of dynamic memory ... For WM and memory devices*/
/***************************************************************************************************
* Configuration of available packages
*/
#define GUI_WINSUPPORT 0 /* Window manager package available */
#define GUI_SUPPORT_MEMDEV 0 /* Memory devices available */
#define GUI_SUPPORT_AA 0 /* Anti aliasing available */
//#define GUI_MT 1 //启用多任务支持
//#define GUI_MAX_TASK 10 //能调用
//**************************************************************************************************
#endif
/*****************************************************************************************
文 件:GUITouchConf.h
*****************************************************************************************/
#ifndef GUITOUCH_CONF_H
#define GUITOUCH_CONF_H
#define GUI_TOUCH_SWAP_XY 0 //=0 xy轴不交换,=1交换
#define GUI_TOUCH_MIRROR_X 0 //x轴镜像
#define GUI_TOUCH_MIRROR_Y 0 //Y轴镜像
#define GUI_TOUCH_AD_LEFT 0 //AD转换的X最小值
#define GUI_TOUCH_AD_RIGHT 480 //AD转换的X最大值
#define GUI_TOUCH_AD_TOP 0 //AD转换的Y最小值
#define GUI_TOUCH_AD_BOTTPM 272 //AD转换的Y最大值
//#define GUI_TOUCH_AD_BOTTOM
#define GUI_TOUCH_XSIZE LCD_XSIZE
#define GUI_TOUCH_YSIZE LCD_YSIZE
#endif /* GUITOUCH_CONF_H */
/***************************************************************************************************
文 件:LCDConf.h
功 能: LCD配置
***************************************************************************************************/
#ifndef LCDCONF_H
#define LCDCONF_H
/***************************************************************************************************
* General configuration of LCD
***************************************************************************************************/
#define LCD_XSIZE (480) //* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE (272) //* Y-resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL (16) //16位颜色 按565模式
#define LCD_CONTROLLER (1788) //控制器 LPC1788
#undef WIN32
//**************************************************************************************************
#endif
/*****************************************************************************************
触摸屏支持函数
文件:GUI_X_Touch.c
1:必须的4个硬件函数,他们由GUI_TOUCH_Exec调用
2:GUI_TOUCH_Exec() 需要约0.01秒的调用
*****************************************************************************************/
#include "\embed\vs2008_ucos\drivers\opengl.h"
//X轴测量激活
void GUI_TOUCH_X_ActivateX(void)
{
}
//Y轴测量激活
void GUI_TOUCH_X_ActivateY(void)
{
}
//返回AD转换的X轴结果
int GUI_TOUCH_X_MeasureX(void)
{
return GlTouchGetAdX();
}
//返回AD转换的Y轴结果
int GUI_TOUCH_X_MeasureY(void)
{
return GlTouchGetAdY();
}
/*****************************************************************************************
* uC/GUI
File : GUI_X_uCOS-II.C
*****************************************************************************************/
#include "uCOS_II.H"
#include "LCDConf.h"
#include "GUI_X_uCOSII.h"
#include "\embed\source\lib\basetype.h"
/*****************************************************************************************
* 全局变量
*****************************************************************************************/
static OS_EVENT *DispSem;
static int KeyPressed;
static char KeyIsInited;
static OS_EVENT *KeySem;
/*****************************************************************************************
时间函数
Notes: 系统需要的时间
*****************************************************************************************/
//获取时间
int GUI_X_GetTime (void)
{
return ((int)OSTimeGet());
}
//延时函数 单位是ms
void GUI_X_Delay (int period)
{
//(1000/OS_TICKS_PER_SEC)
OSTimeDly((period*OS_TICKS_PER_SEC)/1000);
//OSTimeDlyHMSM(0,0,0,period);
}
//默认时间是1ms
void GUI_X_ExecIdle(void)
{
OSTimeDly(1);
}
/******************************************************************************************
* 多任务需要的接口函数
以下函数只用多任务环境。 在GUIConf.h定义GUI_OS 1时才有效
******************************************************************************************/
void GUI_X_InitOS (void)
{
DispSem = OSSemCreate(1);
}
void GUI_X_Lock (void)
{
unsigned char err;
OSSemPend(DispSem, 0, &err);
}
void GUI_X_Unlock (void)
{
OSSemPost(DispSem);
}
//返回当前任务ID
unsigned int GUI_X_GetTaskId (void)
{
return ((unsigned int)(OSTCBCur->OSTCBPrio));
}
/*****************************************************************************************
* 键盘接口函数
*****************************************************************************************/
//初始化
void GUI_X_Init (void)
{
KeySem = OSSemCreate(0);
}
static void CheckInit (void)
{
if (KeyIsInited == FALSE)
{
KeyIsInited = TRUE;
GUI_X_Init();
}
}
int GUI_X_GetKey (void)
{
int r;
r = KeyPressed;
CheckInit();
KeyPressed = 0;
return (r);
}
//使用邮箱等待按键的按下
int GUI_X_WaitKey (void)
{
int r;
unsigned char err;
CheckInit();
if (KeyPressed == 0)
{
OSSemPend(KeySem, 0, &err); //等待按键按下。
}
r = KeyPressed; //获取键值
KeyPressed = 0;
return (r);
}
void GUI_X_StoreKey (int k)
{
KeyPressed = k; //给键值
OSSemPost(KeySem); //返回等待
}
unsigned char GetKey(void)
{
return 0xff;
}
//打印运行日志
void GUI_X_Log(const char *s)
{}
void GUI_X_Warn(const char *s)
{}
void GUI_X_ErrorOut(const char *s)
{}
/******************************************************************************************
* uC/GUI
File : GUI_X_uCOSII.h
Purpose : Config / System dependent externals for GUI
*******************************************************************************************/
#ifndef __GUI_X_UCOSII_H_
#define __GUI_X_UCOSII_H_
#include "\embed\source\lib\basetype.h"
//****************************************************************************************
//时间函数
int GUI_X_GetTime (void);
void GUI_X_Delay (int period);
void GUI_X_ExecIdle(void);
//多任务需要的接口函数
void GUI_X_InitOS (void);
void GUI_X_Lock (void);
void GUI_X_Unlock (void);
u32 GUI_X_GetTaskId (void);
//键盘接口函数
void GUI_X_Init (void);
int GUI_X_GetKey (void);
int GUI_X_WaitKey (void);
void GUI_X_StoreKey (int k);
u8 GetKey(void);
//日志记录函数
void GUI_X_Log(const char *s);
void GUI_X_Warn(const char *s);
void GUI_X_ErrorOut(const char *s);
//****************************************************************************************
#endif
/***************************************************************************************************
文 件:GUI_X_1788.h
功 能:1788底层接口函数实现
***************************************************************************************************/
#ifndef __GUI_X_1788_H_
#define __GUI_X_1788_H_
//**************************************************************************************************
#include "\embed\source\lib\basetype.h"
#include "LCD_ConfDefaults.h"
//**************************************************************************************************
void LCD_L0_DrawBitmap(int x0, int y0, //画位图
int xsize, int ysize,
int BitsPerPixel,
int BytesPerLine,
const U8* pData, int Diff,
const LCD_PIXELINDEX* pTrans);
void LCD_L0_FillRect(int x0, int y0, int x1, int y1); //矩形填充
void LCD_L0_DrawVLine (int x, int y0, int y1); //竖线
void LCD_L0_DrawHLine(int x0, int y, int x1); //横线
void LCD_L0_XorPixel(int x, int y); //反色
unsigned int LCD_L0_GetPixelIndex(int x, int y); //设置某点的颜色
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex); //获取某点的颜色
void delay_Ns (int idly); //延时
//**************************************************************************************************
#endif