当前位置: 首页 > news >正文

监控系统3 - LVGL

目录

一、LVGL

1. 概念

2. 特点

3. 相关

4. 移植

5. 相关函数

1. main.c

2. lv_init

3. fbdev_init

3. 修改参数

4. 快捷操作

二、Makefile

三、示例分析

1.main.c

2. "hello world" 标签

3. 按键

四、操作函数

1. 显示字符串

2. 按键

3. 触摸屏

1. evdev_init

2. 设备树

1. I2C芯片

2. 设备树匹配表

3. 设备树配置

3. touch.ko

4. main.c

五、 图形设计

1. 新建画布

1. 版本选择

2. 开发板

3. 模板选择

4. 配置信息

2. 图形设计

1. 设计面板

2. 按钮跳转

3. 添加中文

4. 执行结果

5. 导出代码

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

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

        工程目录下import - font

3. 导入字体

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

4. 添加文字时选择字体

4. 执行结果

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

5. 导出代码

        工程 - 代码导出 - zeqhyr

6. 结合lvgl

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

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

添加头文件和全局变量

    调用函数

3. 修改Makefile至最终版

        添加 .c 和 .h 文件地址
        添加编译许可

http://www.dtcms.com/a/462879.html

相关文章:

  • 20-数组
  • 防水补漏东莞网站建设河北省建设厅办事大厅网站
  • logosc网站怎么做的减少wordpress响应时间
  • ps做的网站在线设计装修的网站
  • Python-UV环境管理实战
  • 江门建设建筑网站一个人做网站难吗
  • 网站开发使用哪些开发语言长沙的网站建设
  • 光效网站制作网站副本
  • 网站推广经典案例网站优化关键词排名自己怎么做
  • 电子商务网站建设实验原理集约化网站群建设
  • RocketMQ如何使用Netty
  • 哪个网站可以做片头深圳小程序建设公司
  • 腾讯开始数字人mousetalk 部署笔记
  • 做影视网站侵权吗免费刷推广链接的网站
  • 悠悠我心的个人网站怎么做网站侧边栏怎么做
  • 基于机器学习方法的网球比赛胜负趋势预测
  • 金华职院优质校建设网站网站设置在设备之间共享什么意思
  • Day 09(上) B2a实例分析-----如何理解Sensitive detector 和 Hit
  • h5网站需要哪些技术欧模网室内设计网官网
  • 基于CNN和Transformer的分割技术的论文感悟
  • 怎么开设网站 优帮云简单描述一下网站制作的流程
  • 昌平网站建设自建房平面图设计软件
  • 佛山顺德网站建设公司哪家好做外贸网站的好处
  • 《计算》第九十章读书笔记
  • 快速掌握java中数组的排序
  • 从数据孤岛到生态协同:采购管理系统的跨系统集成方案
  • 厦门建站网址费用平台制作专业网站制作
  • 做网站的地方咋做网站
  • 提升板式换热器换热效率
  • 前端核心框架vue之项目篇(cli、vite 5/5)