嵌入式Linux中lvgl集成 GUI Guider 界面
界面设计及代码导出
GUI Guider软件版本:1.10
下载地址点击 GUI Guider
开发板:创龙 RK3562 + Ubuntu 20.04 SDK,7寸mipi屏幕800x1280
LVGL 版本:v8.3(与 GUI Guider 兼容)
`
创建工程选择lvgl8.3这个版本
根据屏幕信息设置相关的参数,这里使用1280x800的一个屏幕
放4个按钮来验证最终画面显示是否超出区域以及显示方向和触摸是否正确
通过模拟器查看是否正常,以及生成c代码
模拟器画面
代码移植
在GUI Guider工程目录中生成的代码只使用custom和generated
lvgl工程见 嵌入式Linux系统移植lvgl
将custom和generated这两个文件夹放到工程中与lvgl平级的目录
修改顶层Mekefile添加两个文件夹的头文件路径和c文件路径。
# ===================================================
# 添加头文件路径
CFLAGS += -I$(LVGL_DIR)/lvgl -I$(LVGL_DIR)/lvgl/src -I$(LVGL_DIR)/lv_drivers
CFLAGS += -I$(LVGL_DIR)/custom
CFLAGS += -I$(LVGL_DIR)/generated
# 添加c文件路径
# custom/目录
CSRCS += $(wildcard $(LVGL_DIR)/custom/*.c)
# generated/ 核心文件
CSRCS += $(wildcard $(LVGL_DIR)/generated/*.c)
# generated/ 子目录资源
CSRCS += $(wildcard $(LVGL_DIR)/generated/images/*.c)
CSRCS += $(wildcard $(LVGL_DIR)/generated/guider_fonts/*.c)
CSRCS += $(wildcard $(LVGL_DIR)/generated/guider_customer_fonts/*.c)
# ===========================================================

修改main.c
包含头文件
#include “generated/gui_guider.h”
lv_ui guider_ui;
注释默认的demo
调用自定义的demo
在lv_port_linux_frame_buffer-release-v8.3/generated/gui_guider.c中void setup_ui(lv_ui *ui)函数作为界面的入口函数
在main中调用setup_ui(&guider_ui);
make clean
make -j20
编译后生成demo可行文件
发送到开发板
scp demo root@192.168.137.112:~
在开发板执行demo程序
./demo
屏幕可以显示和触摸,但是显示方向不对,只显示初了一部分,设计设计界面是横屏1280x800,但现在是竖屏显示

修改main.c
将屏幕分辨率修改为物理屏幕的分辨率并添加画面旋转函数
disp_drv.hor_res = 800;
disp_drv.ver_res = 1280;
翻转画面
lv_disp_t * disp = lv_disp_drv_register(&disp_drv);
lv_disp_set_rotation(disp, LV_DISP_ROT_90);
编译下载验证
画面显示正常 但是触摸不对

问题
在lvgl/src/core/ lv_indev.c 中无lv_indev_set_rotation()函数来实现触摸的旋转,只有手动旋转,试了几遍,没能调好,屏幕横屏分辨率是1280x800,触摸区域被限制在画面左侧800*800的一个区域,在这个区域内触摸正常,但画面右侧剩余的区域触摸区域与显示画面指针无法对应
有点像是软件配置的触摸区域没有完全与实际触摸的区域相重合,暂未解决触摸的问题。
更多推荐
所有评论(0)