LCD模拟器.
上编介绍了, 我使用的经改写ucGUI的模拟器, 但此摸拟器和ucGUI的连系太紧密了, 花了大半天的时间, 才将其分离出来, 别分离得不是很好, 但至少可以用了. 现说明如下:
一.LCD模拟器的配置.
#define LCD_XSIZE (640) LCD的宽
#define LCD_YSIZE (480) LCD的高
#define LCD_BITSPERPIXEL (8) LCD单个像素占的位数, 即颜色的位数
#define LCD_FIXEDPALETTE 332 像素的颜色模式, 即RGB占的位数
#define LCD_SWAP_RB 1 Red Blue的位置是否交换
以上这些配置,和ucGUI是一致的, 具体内容可参考ucGUI的资料(网上很多哟)
二.LCD模拟器的对外函数接口
只对外公布二个函数. 即void LCDSIM_SetPixelIndex(int x, int y, int Index)和int LCDSIM_GetPixelIndex(int x, int y)
1. void LCDSIM_SetPixelIndex(int x, int y, int Index)
在LCD上画一个像素点, 坐标是x, y, 颜色为index.
这里的Index不是真正的完整的RGB值, 而是根据上面颜色模式的配置, 对应的值. 也可以理解为我们要写入真实的LCD中的值.
在LCD模拟器中, 它的颜色是使用24位真彩色,即R8G8B8, 而我们模拟的LCD可以没有这么多位, 所以就将LCD仿真的颜色称为index,
它将在内部转化为24位的RGB.
2.int LCDSIM_GetPixelIndex(int x, int y)
取得LCD上,坐标为x,y处的颜色值index, index的意义于上相同.
三. chGUI工程项目的组成.
此项目由三部分组成, 一是LCD模拟器, 不需修改, 只要配置. 二是chGUI部分, 将要开发的主要部分, 三是Applicatio, 以后应用程序的部分, 现在将测试程序放在这里.
GUI部分有一个名为convcolor的目录, 这是从ucGUI借用过来的, 为LCD模拟器所有, 也可以放入GUI中, 目前我的构想是在chGUI中尽量不用这个.
LCD模拟器中,有一个"myType.h", 定义有一些常用的类型, 在chGUI中将使用,
四. LCD模拟器的输入接口
1. int CXM_GetKey(void)
读取一个按键, 为0是没有键被按下.
2. int CXM_TOUCH_GetState(GUI_PID_STATE *pState)
读取触摸屏的状态, 返回为0没有触摸, 非0为有触摸, pState返回坐标
此部分是没有队列缓冲区的, 即可能会丢失输入数据, 不过对我们的应用而已, 够用了.
写字真是比较难啊! 自已心的明白的事,用文字表达出来,总是不够好, 有时会词不达意. 想想那些技术作家, 真是不容易啊!