我们在Gui-Guider中使用的一些控件,生成后会发现在LVGL源码中找不到该控件的定义,这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的,那么我们该如何应用呢?这里拿Digital Clock数字时钟控件举例:
这里我们看到报错找不到函数定义,这时因为Gui-Guider自己的控件不在LVGL源码和其生成的代码中,需要我们自己去手动添加,关于Gui-Guider自己的控件我们可以在Gui-Guider软件安装的文件夹下找到,如下:
找到之后我们就可以把数字时钟控件文件夹下的文件:lv_dclock.c和lv_dclock.h加入到Gui-guider生成的文件夹下(其他地方也可以,看个人习惯),然后将lv_dclock.h加入到lvgl.h文件夹下,这里路径根据lv_dclock.h和lvgl.h文件的相对路径自己修改。
到这里我们就可以找到数字时钟控件的相关函数定义,但这还不够,因为lv_dclock.c和lv_dclock.h调用了Gui-guider自己的一套LVGL源码中的头文件,和我们自己移植的不一样,这里我们需要注释掉其自己调用的头文件,用我们的lvgl.h替代,如下:
lv_dclock.c:/********************** INCLUDES*********************/
#include "lv_dclock.h"
#if LV_USE_DCLOCK != 0
//注释掉原有的头文件
//#include "../../../core/lv_obj.h"
//#include "../../../misc/lv_assert.h"
//#include "../../../core/lv_group.h"
//#include "../../../draw/lv_draw.h"
//#include "../../../misc/lv_color.h"
//#include "../../../misc/lv_math.h"
//#include "../../../misc/lv_bidi.h"
//#include "../../../misc/lv_txt_ap.h"
//#include "../../../misc/lv_printf.h"
//#include "../../../widgets/lv_label.h"lv_dclock.h:#ifndef LV_DCLOCK_H
#define LV_DCLOCK_H#ifdef __cplusplus
extern "C" {
#endif/********************** INCLUDES*********************/
//#include "../../../lv_conf_internal.h" //注释掉原有的lv_conf_internal.h文件//观察lv_conf_internal.h文件,选择需要的参数置位1
#define LV_USE_DCLOCK 1
#define LV_DCLOCK_TEXT_SELECTION 1#if LV_USE_DCLOCK != 0#include <stdarg.h>
#include <stdlib.h>
#include "lvgl.h" //我们自己的lvgl.h头文件,代替其原有调用的一些lvgl有文件
//#include "../../../core/lv_obj.h"
//#include "../../../font/lv_font.h"
//#include "../../../font/lv_symbol_def.h"
//#include "../../../misc/lv_txt.h"
//#include "../../../draw/lv_draw.h"
这里讲一下下面这段代码的由来:
//#include "../../../lv_conf_internal.h" //注释掉原有的lv_conf_internal.h文件//观察lv_conf_internal.h文件,选择需要的参数置位1
#define LV_USE_DCLOCK 1
#define LV_DCLOCK_TEXT_SELECTION 1
这里我们移植的源码其实是没有lv_conf_internal.h这个文件的,这个应该是Gui-guider管理自己的控件使用的配置头文件,我们在lv_dclock.c和lv_dclock.h中都看到了关于宏定义LV_USE_DCLOCK的使用,其配置就在lv_conf_internal.h这个文件中,我们打开该文件直接搜索LV_USE_DCLOCK,可以看到在下面这个地方有关该宏定义的使用,然后琢磨琢磨,把dclock控件要用的宏定义单独拿出来自己#define就可以了;
至此,Gui-Guider1.8.1 数字时钟控件生成代码的使用介绍就到此为止,其他Gui-Guider自有控件的使用也类似;
参考文章:GUI-Guider-1.7的数字时钟控件找不到定义,无法编译-OpenEdv-开源电子网