UCGUI专业论坛
     
  UCGUI简介 UCGUI下载 最新文章 访客留言 进入UCGUI论坛 关于UCGUI  


 
 
 
中国珠海
论坛简介

    UCGUI专业网站,致力于嵌入式GUI图形系统技术,专业论坛提供UCGUI设计架构及源码学习研究,它期盼与网友交流嵌入式图形方面的知识,并尽自已的努力去帮助需要这方面帮助的朋友,它不断的学习,或许这个网站能记录它进步的过程吧!

                                                     ---是为序[UCGUI]

1.0......UCGUI整体简介.
...............UCGUI简介.
...............本文档的目的
...... .........前提学习要求.
1.1.....要求
...............目标硬件系统.
...............开发环境(编译器).
1.2.....UCGUI特性.
...... ........示例.
1.3.....UCGUI设计策略.
...... ........微型.


UCGUI

UCGUI是一种嵌入式应用中的图形支持系统.它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示.

它的设计架构是模块化的, 由不同的模块中的不同层组成, 由一个LCD驱动层来包含所有对LCD的具体图形操作, UCGUI可以在任何的CPU上运行, 因为它是100%的标准C代码编写的.

UCGUI能够适应大多数的使用黑白或彩色LCD的应用, 它提供非常好的允许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系.


本文档的目的

本文档描述如何在嵌入式应用中安装,配制,使用UCGUI的图形用户接口, 并讲解UCGUI的内部设计架构.

前提

本文档假定你已经备坚实的C语言程序设计方面的知识, 如果你觉得自己这方面还不够, 那么我们推荐Kernighan 和 Richie的"C语言程序设计"给你, 它描述了最新的C标准, 即ANSI C标准, 本文档不须要具备汇编语言方面的知识.

第一章

1.1 要求
对于开发UCGUI图形应用不须什么目标系统, 大部分的图形应用开发都可以在模拟器下进行; 但是最终的目的是通常还是在目标系统上运行程序.

目标系统(硬件)
你的目标系统必须具备如下几点:
[1].CPU(8/16/32/64位)
[2].必要的RAM和ROM存储
[3].LCD显示器(任何类型及分辩率的)

对于内存的需求取决于你选用的UCGUI的功能模块以及你所使用的目标系统上的编译器的效率. 内存的占用量无法估计准确的值, 下面就一些的数值适用于多数的目标系统.

小型系统(不含窗口管理功能)
[1].RAM:100字节
[2].堆栈:500字节
[3].ROM:10~25K(取决于选用的UCGUI功能模块)

大型系统(包含窗口管理及各种窗体控件功能)
[1].RAM: 2-6 kb (决于选用的应用中建立窗口的数量)
[2].堆栈: 1200 bytes
[3].ROM: 30-60 kb (决于选用的UCGUI功能模块)

还要注意ROM的需求量随着你在应用程序中使用的字体数目而增长,以上的所有值都是粗糙的估计, 并不准确.

开发环境(编译器)

目标系统中采用的什么样的CPU并不重要, 但必须要有与所用CPU相对应的C编译器,如果你所使用的编译器有什么局限性, 请联系我们, 我们会告知你这些局限性会不会在你编译程序时产生问题, 大多数的16/32/64位的CPU或DSP上的编译器都可以正常使用, 大部分8位的编译也都可以正常编译.

并不须要C++编译器, 不过它也可以正常使用, 如果有须求的话, 应用程序也可以在C++环境下正常编译使用.

1.2 UCGUI的特性
UCGUI的设计目标是为使用LCD作为图形显示装置的应用提供高效的/与LCD控制器独立及处理器独立的图形用户接口. 它适合于单任务环境及多任务环境, 如私用的操作系统或是商业的RTOS(实时操作系统). UCGUI以C源码形式提供, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示.它包含以下特性:

一般特性

[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, 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提供触摸屏及鼠标支持.

PC下的工具

[1] 模拟器及查看器.
[2] 位图转器工具.
[3] 字体转换工具.
 

1.3 UCGUI中的基本设计策略----微型.

与其它一些同样是嵌入式的GUI图形系统相比, UCGUI很明显的一大区别是:微型; 这微型的特征主要体现在两点:节省空间, 包括代码空间与程序运行占用空间.

-----代码空间占用少, 是指其对于同样的功能, 其实现简单,结构简单,设计简单,复杂的功能放弃;

-----程序运行占用空间少, 是指支持GUI运行时, 所消耗的变量空间小, 这对于本来RAM空间就紧张的小型嵌入式应用, 是非常的重要的. 程序运行消息消耗的空间小, 主要有两个方面:

[1]. 消息处理不用队列, 而是采取两个变量, 一个变量记载当前消息,一个变量记载先前消息,当前消息从外部输入驱动中获取更新, 处理消息时与先前消息进行比较, 处理完消息再将当前消息更新到先前消息变量中.这样处理起来,比起采用消息队列, 就省了不知道多少空间了,因为在启用MOSUE类设备时,移动消息是非常多的.不采用消息队列, 也导致了UGGUI中的所有的消息处理都是同步的, 但这对于UCGUI来说也不是什么严重的问题, 并不是必须的功能; 没有消息队列, 则每个消息的处理不能占用大量的时间, 否则严重影响消息处理的灵敏度,造成消息的丢失.但是这些问题都是可以接受的, 因来带来的空间效率带有帮助了.

[2]. 单一运行绪:UCGUI运行的时候, 仅有一条执行路径, 也就是单一运行绪.这与MINIGUI多线程版是有很大的差别的,熟悉MINIGUI的朋友都知道MINIGUI分了三个版本, 多进程版/多线程版/单一版.多线程版分如下线程:

-----用户程序是一个线程.
-----桌面程序是一个线程.
-----事集收集是一个线程.
-----时间Timer是一个线程.
-----创建窗口也可以单独启用一个线程.

分了这些程, 当然有些好处, 如计时器/消息接收不至被消息处理阻塞; 但是UCGUI中没有这些复杂的机制, 从而少了很多的线程同步以及与其它系统的相关性(便于移植).而且在资源占用了又少了一层, 节省了线程资源.

[3]. 剪切处理, 窗口系统的剪切处理有两个要素, 一是时间效率;二是空间效率. UCGUI中采取的是空间策略, 每进行一次图形绘制,都必须处理剪切; 在时间效率优先的系统当中, 会计算过后就保存每个窗口的剪切矩形, 如果是在这个窗口上绘图, 就无须每一次绘图操作都进行剪切处理, 只须要判断是否处于剪切矩形之内即可, 当然这个判断也是很讲究策略的, 因为剪切矩形是一个系列,如果是绘制一个矩形, 这个矩形被分布在几个剪切矩形当中, 这个时候也能采取两种办法:一是逐点判断之后画点;二是再进行一次剪切计算,剪切出可以绘制的矩形.这两个方法其实也体现了空间与时间的问题, 不过第二种方法在时间上很优, 在空间上也仅是占用一时, 所以是比较优的. 但是如果要计算过每个窗体的剪切矩形后, 要保存起来, 供窗体上再次作画时用, 这个空间占用则是比较大的.

 

 

 


本站内容谨供参考 版权所有:UCGUI专业论坛 网页制作:UCGUI 技术支持:UCGUI专业论坛
QQ:106719880 MSN:ucgui@163.com E-mail:ucgui@163.com

备案证件号:粤ICP备05087399号