UCGUI 联系客服

发布时间 : 星期一 文章UCGUI更新完毕开始阅读40228020aaea998fcd220e05

2.3UcGui用户图形界面

UCGUI的设计目标是为使用LCD作为图形显示装置的应用提供高效的/与LCD

控制器独立及处理器独立的图形用户接口。 它适合于单任务环境及多任务环境, 如私用的操作系统或是商业的RTOS(实时操作系统)。 UCGUI以C源码形式提供, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。(图2。3) 它包含以下特性:

[1] 适用任何8/16/32位CPU, 只要有相对应的标准C编译器。

[2] 任何的控制器的LCD显示器(单色,灰度,颜色), 只要有适合的LCD驱动可用。 [3] 在小模式显示时无须LCD控制器。 [4] 所有接口支持使用宏进行配制。 [5] 显示尺寸可定制。

[6] 字符和位图可在LCD显示器上的任意起点显示,并不仅局限于偶数对齐的地址起点。

[7] 程序在大小和速度上都进行了优化。 [8] 编译时允许进行不同的优化。

[9] 对于缓慢一些的LCD控制器, LCD显存可以映射到内存当中, 从而减少访问次数到最小并达到更高的显示速度。 [10]清晰的设计架构。

[11]支持虚拟显示, 虚拟显示可以比实际尺寸大(即放大)。 图形库

[1] 支持不同颜色深度的位图。 [2] 提供可用的位图转换工具。 [3] 图形运算时绝对不含浮点运算。 [4] 快速画点/线(不含浮点运算)。 [5] 高速画圆及多边形。 [6] 多种画图模式。 字体集

[1] 为基础应用提供多种不同字体:4*6, 6*8, 6*9,8*8, 8*9, 8*16, 8*17, 8*18,

12

24*32, 以及8, 10, 13, 16等几种高度(象素单位)的均衡字体(proportional fonts)。 更详细的信息, 请参考第25章:\标准字体\。 [2] 可以方便的加入及链接进自定义字体。

[3] 只有应用程序中用到的字体被实际链接进最后的执行映象文件中, 因此保证占用最小数量的ROM。

[4] 提供可用的字体转换工具。任何宿主系统(如微软windows系统)上的可用字体均可以经转换后使用。 字符串/数值输出

[1] 支持数值的任何字体下的十进制/二进制/十六制显示。 [2] 支持数值的任何字体下的十进制/二进制/十六制编辑输入。 窗体管理器

[1] 齐全的窗口管理, 包括剪切, 在窗体客户区外 [2] 窗体可以移动及改变大小。 [3] 支持窗口回调函数(可选功能)。

[4] 窗体占用最低RAM(每个窗体占用20个字节)。 可选的类似PC机的窗体控件

[1] 可用的窗体控件(窗体对象, 也称作控件), 操作简便而且容易使用。 触摸屏及鼠标支持

[1]对于窗体控件如按钮, UCGUI提供触摸屏及鼠标支持。

13

2.3 UcGui在VC环境下的模拟实现

第三章 程序设计与实现

3.1uC/os2程序调试与移植

3.3.1设置与处理器编译器相关的参数[OS_CPU。H]

首先uC/os2作为一个老牌的嵌入式操作系统,已经有了很多完善的源代码可供我们学习,站在巨人的肩膀上继续前进。但是我们也认识到,并不是说一个简单的代码给你,你直接烧进开发板就算完成了任务。所以我们第一步就是要设置好与处理器编译器相关的参数。既[OS_CPU。H]文件。不同的编译器会使用不同的字节长度来表示同一数据类型,所以要定义一系列数据类型以确保移植的正确性。

#ifdef OS_CPU_GLOBALS

14

#define OS_CPU_EXT #else

#define OS_CPU_EXT extern #endif

当编译器处理。C 文件时,它强制xxx_EXT(在相应。H 文件中可以找到)为空,(因为xxx_GLOBALS 已经定义)。所以编译器给每个全局变量分配内存空间,而当编译器处理其他。C文件时,xxx_GLOBAL 没有定义,xxx_EXT 被定义为extern,这样用户就可以调用外部全局变量。 typedef unsigned char BOOLEAN;

typedef unsigned char INT8U;/*无符号8位*/ typedef signed char INT16S;/*带符号8位*/ typedef unsigned int INT16U;/*无符号16位*/ typedef signed int INT16S;/*带符号16位*/ typedef unsigned long INT32U;/*无符号32位数*/ typedef signed long INT32S;/*带符号32位数*/ typedef float FP32;/*单精度浮点数*/ typedef double FP64;/*双精度浮点数*/ typedef unsigned int OS_STK;/*堆栈入口宽度*/ typedef unsigned int OS_CPU_SR;/*寄存器宽度*/

#define OS_CRITICAL_METHOD 2 /* 选择开、关中断的方式 */ __swi(0x00) void OS_TASK_SW(void); /* 任务级任务切换函数 */ __swi(0x01) void _OSStartHighRdy(void); /* 运行优先级最高的任务 */ __swi(0x02) void OS_ENTER_CRITICAL(void); /* 关中断 */ __swi(0x03) void OS_EXIT_CRITICAL(void); /* 开中断 */

__swi(0x40) void *GetOSFunctionAddr(int Index); /* 获取系统服务函数入口 */

15