监控系统3 - LVGL

目录

一、LVGL

[1. 概念](#1. 概念)

[2. 特点](#2. 特点)

[3. 相关](#3. 相关)

[4. 移植](#4. 移植)

[5. 相关函数](#5. 相关函数)

[1. main.c](#1. main.c)

[2. lv_init](#2. lv_init)

[3. fbdev_init](#3. fbdev_init)

[3. 修改参数](#3. 修改参数)

[4. 快捷操作](#4. 快捷操作)

二、Makefile

三、示例分析

1.main.c

[2. "hello world" 标签](#2. "hello world" 标签)

[3. 按键](#3. 按键)

四、操作函数

[1. 显示字符串](#1. 显示字符串)

[2. 按键](#2. 按键)

[3. 触摸屏](#3. 触摸屏)

[1. evdev_init](#1. evdev_init)

[2. 设备树](#2. 设备树)

[1. I2C芯片](#1. I2C芯片)

[2. 设备树匹配表](#2. 设备树匹配表)

[3. 设备树配置](#3. 设备树配置)

[3. touch.ko](#3. touch.ko)

[4. main.c](#4. main.c)

[五、 图形设计](#五、 图形设计)

[1. 新建画布](#1. 新建画布)

[1. 版本选择](#1. 版本选择)

[2. 开发板](#2. 开发板)

[3. 模板选择](#3. 模板选择)

[4. 配置信息](#4. 配置信息)

[2. 图形设计](#2. 图形设计)

[1. 设计面板](#1. 设计面板)

[2. 按钮跳转](#2. 按钮跳转)

[3. 添加中文](#3. 添加中文)

[4. 执行结果](#4. 执行结果)

[5. 导出代码](#5. 导出代码)

[6. 结合lvgl](#6. 结合lvgl)


一、LVGL

1. 概念

LVGL是一个嵌入式图形库,创建MCU、MPU等显示类型的UI,使图形更优美更高级

放入Linux系统中可视为.c,.h文件进行操作,添加UI功能,实现对显示图案的操作(Linux下一切皆文件)

2. 特点

  1. 轻量且高效​​:专为资源受限的嵌入式系统设计,只需很少的内存和计算资源即可运行。

  2. ​高度可移植​​:不依赖特定的硬件或操作系统,可运行在多种微控制器(MCU)和处理器上,支持多种显示和输入设备。

  3. ​功能丰富​​:提供丰富的现代化UI控件(按钮、滑块、图表、列表等)、动画、抗锯齿、不透明度、平滑滚动等效果。

  4. ​强大的定制性​​:支持自定义主题、样式,甚至可以重绘任何控件的外观。

  5. ​多语言支持​​:内置UTF-8编码支持,可显示多语言字符。

  6. ​开源免费​​:遵循MIT许可证,可免费用于商业项目

3. 相关

framebuffer作为LVGL的底层基础,二者有紧密的关系

framebuffer :是Linux系统提供的一块内存区域,直接对应屏幕像素。它提供了​​画点、画线​​等最基础的绘图能力,相当于一张"画布"

LVGL:是一个高级的图形库,建立在framebuffer(或其他显示驱动)上,提供按钮、标签、滑块等现成的UI组件和动画效果,通过调用framebuffer接口将图像显示到屏幕上

4. 移植

  1. 复制并解压LVGL-V8_3.tar 到虚拟机的rootfs目录下
    lv_drivers 显示设备驱动相关的代码(fb0,分辨率,色深)
    lvgl 图形库的核心代码 (控件)
    lv_port_linux_frame_buffer 用于移植的模板

  2. 进入 LVGL-V8_3.tar 目录创建自己的文件目录 mylvgl

  3. 将 lv_drivers 和 lvgl 放入 lv_port_linux_frame_buffer 中,便于代码管理

  4. 拷贝到mylvgl中准备编写

5. 相关函数

1. main.c

2. lv_init

3. fbdev_init

3. 修改参数

接口选择:800 * 480 色深:RGB888

打开二维码:

4. 快捷操作

ctrl + f 查找

ctrl+d 复制光标所在行插入到下一行

ctrl+p 通过文件名查找

ctrl+g 跳转到指定行

二、Makefile

Makefile调试

show:

echo $()查看变量

三、示例分析

基本示例 - LVGL 9.4 文档

1.main.c

2. "hello world" 标签

3. 按键

四、操作函数

1. 显示字符串

打印hello world

2. 按键

按键显示及回调函数

3. 触摸屏

1. evdev_init

2. 设备树

1. I2C芯片

GT9147屏:4.5寸单层多点

2. 设备树匹配表
3. 设备树配置

设备树下i2c2下的触摸屏设置

复位引脚的电气特性,GT9147

注意 GPIO1_IO09 的引脚是否有复用

3. touch.ko

编译后将ko文件复制到tftpboot目录下,便于启用

编译:

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
复制:

cp arch/arm/boot/zImage /home/linux/tftpboot/

在minicom中执行调用,确认事件event1可以触发回调触屏中断,在main.c中配置回调名

insmod touch.ko

cat /dev/input/event1

4. main.c

在minicom中执行调用

insmod touch.ko

cd final/3-LVGL/mylvgl

./demo

五、 图形设计

恩智浦图形设计器

1. 新建画布

1. 版本选择

v8.3.5

2. 开发板

simulator模拟器

3. 模板选择

emptyUI空

4. 配置信息

2. 图形设计

1. 设计面板

背景 - 文字 - 图表 - 图片 - 二维码 - 按钮

2. 按钮跳转

事件添加

3. 添加中文

  1. window寻找字体

C盘 - Windows - Fonts

  1. 选择字体复制到工程目录下

工程目录下import - font

  1. 导入字体

资源管理 - 字体 - 导入字体

  1. 添加文字时选择字体

4. 执行结果

选择模拟器 - C(c语言编译,用于导入代码替换中)

5. 导出代码

工程 - 代码导出 - zeqhyr

6. 结合lvgl

  1. 将生成代码目录下的 custom 和 generated 复制到 mylvgl 同级目录下

  2. 将 main.c 代码中相关部分添加到 mylvgl 的 main.c 中

添加头文件和全局变量

调用函数

  1. 修改Makefile至最终版

添加 .c 和 .h 文件地址

添加编译许可

相关推荐
Nimsolax11 小时前
Linux网络Socket编程TCP
linux·网络·tcp/ip
青草地溪水旁18 小时前
linux信号(14)——SIGALRM:从“手机闹钟”看SIGALRM:进程的非阻塞定时神器
linux·信号机制
心灵宝贝18 小时前
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)
linux·服务器·数据库
BullSmall19 小时前
linux zgrep命令介绍
linux·运维
emma羊羊20 小时前
【文件读写】图片木马
linux·运维·服务器·网络安全·靶场
wdfk_prog20 小时前
闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
java·linux·数据库
2301_8184115521 小时前
Ubuntu之apt更新源
linux·运维·ubuntu
Damon小智1 天前
玩转CodeX:CodeX安装教程(Windows+Linux+MacOS)
linux·windows·macos·ai·ai编程·codex·gpt-5
CS Beginner1 天前
【Linux】Mysql的基本文件组成和配置
linux·运维·mysql