UCGUI 模拟器分析

2019-04-13 21:16发布

Ucgui模拟器是通过WIN32程序来模拟嵌入式设备在WINDOWS上显示,那它是如何模拟的呢?(另需参照UCGUI的模拟器UCGUISim的设计文档 Ucgui模拟器程序主要完成以下几件事 一.   创建模拟器主窗口,这个窗体包括一些模拟器控制菜单,如打开LOG记录/打开调 {MOD}板显示窗体/新建LCD模拟器窗体,以及暂停/继续模拟器。创建的窗口如下   二.   创建一个LCD模拟显示窗口并初始化其显示所需的各种数据结构,LCD窗口的大小由UCGUILCDConf.h中配制时指定(LCD_XSIZE/LCD_YSIZE),及其它的诸如每个象素占用多少位(LCD_BITSPERPIXEL),首先分配一块足够大的显存(4M)并初始化这块数据为0,每个象素占用不大于 8位时模拟显示屏幕需要用到8位图,还必须初始化要用到的调 {MOD}板。   三.   提供操作LCD模拟显示屏幕的几个基本图形函数,UCGUI是一个设计层次非常清晰的图形系统,它将GUI的底层图形功能作为一层向上层提供最基本的图形功能,只有这一层才与具体的硬件相关,这一层包括基本的画点函数/矩形填充函数/调 {MOD}板初始化函数/颜 {MOD}索引与RGB的转换函数。 四.   提供上层的LOG记录接口的实现,主要完成UCGUI中调试信息的输出,是否输出调试信息可以由UCGUI中的一个开关设置。 五.   开启一个新的线程,在此线程中调用System/Main.c中的main()函数,此函数中再调用MainTask()函数,这个函数即为我们在模拟器中编程必须提供的一个函数,在单任务情形下UCGUI的程序均写在MainTask函数当中,供模拟器开启的线程调用。这里必须分清楚:主线程创建模拟器主窗口及LCD模拟窗口;UCGUI图形应用程序以新开的另外一个线程运行,这个线程结束时则UCGUI图形应用程序结束。模拟器显示模拟程序是通过UCGUILCD的操作(4M显存的操作),所以通过对4M显存的相应显示就OK(LCDSIM.c). 六.    LCD模拟器窗口消息函数当中接收KEY消息及MOUSE消息,并通过UCGUI中的KEYMOUSE接口传送到UCGUI内部以驱动UCGUI事件消息LOOP 利用如下结构体存储需转换的键盘,映射到UCGUI键值 当模拟器响应时,转化到UCGUI的结构体,让UCGUI响应