lkdGui是一款为单色显示屏制作的图形化界面,lkdGui主要定位于工业控制领域,用于简单漂亮的图形界面设计。它的源代码全部使用c语言编写,符合c99标准。它包含了常用的画图函数如画点、画线、画矩形、文字显示、按钮控件、进度条控件。它使用`窗口`进行统一管理和调度,使得各个应用显示模块之间低耦合,方便应用程序的开发。
lkdGui源码介绍
1.lkdGui_source文件夹:它包含了lkdGui的所有源码
A.include文件夹:它包含了Gui所有的.h文件。移植时应将此路径加入工程项目。
a.lkdGui.h:此文件里包含所有的Gui函数接口。用户使用Gui函数时应该包含此头文件。
b.lkdGuiConfig.h:此文件用来配置和裁剪Gui.
c.lkdGuiTypedef.h:此文件定义了Gui相关的数据结构,使用者不必看它。
B.port文件夹:它里边包含的是移植相关的文件。
a.fontDriver文件夹:它包含常用的字模库、字库芯片驱动等。使用者可以在这里面加入字体相关的驱动。
b.lcdDriverPort文件夹:它包含常用的液晶驱动。使用者可以在这里面加入液晶相关的驱动。
c.lcdDriverPort.c:Gui的液晶驱动移植接口。用户应该填充里面的相关函数。
d.userFontPort.c:Gui的字体驱动移植接口。用户应该填充里面的相关函数。
e.userAppPort.c:这个输入应用层,里面包含了初始化、窗口管理等函数。永和可以直接在这里面写应用。
C.source文件夹:Gui绘图、窗口管理等相关函数实现源码。
图片来源:公众号嵌入式的日常
lkdGui移植
上节的源码介绍中已经提到了移植相关的工作在port文件夹中。分为字体移植接口和液晶移植接口。1.字体移植接口:包含fontDriver文件夹和userFontPort.c。移植流程如下:
A.用户先看fontDriver文件夹下有没有自己要用的字体库或字库芯片驱动。如果没有则需要添加。
B.然后修改userFontPort.c。填充此文件中的相关函数。
a.GetDfontData():此函数用于获取汉字字模。字体库中应该包含获取字模的函数.用此函数调用即可。
b.GetSfontData():此函数用于获取ASII码字模。使用如GetDfontData()。
c.用lkdFont结构体对象声明自己的字体->初始化->用GuiFontSet()设置为系统默认字体。
2.液晶移植接口:包含lcdDriverPort文件夹和lcdDriverPort.c。移植流程如下:
A.用户先看lcdDriverPort文件夹下有没有自己要用的液晶驱动。如果没有则需要添加。
B.然后修改lcdDriverPort.c。填充此文件中的相关函数。(根据需求可以只填部分函数)。下面是必须要填充的。
a.GuiUpdateDisplayAll():此函数用于将缓存的数据刷新到液晶。
b.GuiDrawPoint():画点函数。在液晶固定位置画点。3.修改lkdGuiConfig.h中液晶大小相关宏GUI_LCM_XMAX,GUI_LCM_YMAX.
4.用户使用接口:用户可使用的接口函数都包含在lkdGui.h中。userAppPort.c是用户使用的模板。
lkdGui窗口介绍
lkdGui使用窗口作为管理、调度单元。用户所有的绘图都应该在具体的某个窗口里边。
1、lkdGuiConfig.h中的GUIWINMANAGE_NUM用于修改窗口最大嵌套数量。
2、GuiWinInit()系统上电时应该使用它初始化窗口相关资源。
3、GuiWinDisplay()是窗口调度函数,需要程序一直能执行到。
4、lkdWin是窗口的结构体。用户使用它创建任意多个窗口实体对象。lkdWin->WindowFunction()是用户在此窗口里画图等的接口。
5、GuiWinAdd()函数用于将lkdWin结构的窗口实体对象加入到窗口调度栈中。
6、GuiWinDeleteTop()函数用于将顶部的窗口实体对象从窗口调度栈中移除。
7、GuiGetTopWin()函数可以获取窗口调度栈中顶部的窗口(当前显示的窗口)。
lkdGui菜单介绍
菜单是lkdGui里一个有特色的控件,而且在工业控制中经常使用。具体使用请参看例程。
lkdGui字体介绍
lkdGui可以添加很多字体库,在使用过程中使用GuiFontSet()函数来切换。使用GetCurrentFont()函数可以获取当前的字体指针;
图片来源:公众号嵌入式的日常
其他控件和绘图函数
见lkdGui.h。里面有详细的使用说明。
如何在RT-Thread上使用lkdGui
听取了使用者的意见后,lkdGui在第一版的基础上对源码程序进行了整理,更新到版本V0.0.1.同时,为了方便使用,将lkdGui加入到了RT-Thread的软件包中。使用者只需在RT-Thread的管理工具env中选中lkdGui即可(关于RT-Thread的使用请参看RT-Thread官网)。下图是lkdGui在menuconfig中的位置:
全部0条评论
快来发表一下你的评论吧 !