系统编程-lvgl

带界面的MP3播放器 -- lvgl

目录

[带界面的MP3播放器 -- lvgl](#带界面的MP3播放器 -- lvgl)

一、什么是lvgl?

二、简单使用lvgl

在工程中编写代码

实现带界面的mp3播放器

main.c

events_init.c

events_init.h

补充1:glob函数

补充2:atexit函数


一、什么是lvgl?

-- LVGL是一个开源的嵌入式图形库 ,用于创建图形界面应用程序。它提供了丰富的图形元素和用户界面控件,能够在各种嵌入式平台上运行,包括单片机和微处理器。

-- Gui和LVGL是两个相关的概念。

  • GUI是指图形用户界面,是用户与计算机进行交互的界面。
  • LVGL是一个开源的GUI库,可以用于创建嵌入式系统中的图形用户界面。

-- lvgl提供了一套丰富的图形绘制和交互功能,可以在嵌入式设备上创建漂亮、交互式的用户界面。它支持多种显示控制器和输入设备,并具有高度可定制性。

-- 因此,Gui和LVGL的关系是,LVGL是一种用于创建Gui的库或工具。使用LVGL,开发人员可以更容易地实现各种功能的图形界面,从而提升用户体验

二、简单使用lvgl

  • 1、首先将安装包复制到linux虚拟机中

  • 2、安装需要的库

    sudo apt-get install libsdl2-dev

  • 3.安装好之后,进行软件的安装

    sudo dpkg -i 软件名

  • 4、在左下角的应用找到,打开即可

  • 5、创建项目(可以改项目生成代码的路径)

  • 6、lvgl相关操作

-- 1

-- 2

-- 3

-- 4 设置好之后点击上面的生成代码 会在设置好的路径下生成我们的项目文件

注!!!要确保组件弄正确后再生成代码,如果后续在项目中将代码改过后,然后又回来改组件再次生成代码,那么原先的代码会被覆盖!!!功能模块就要重新写

-- 5 生成好之后 在项目得了路径下使用make进行项目的编译

-- 6 生成的可执行文件放在 该路径下的build下的bin里面,有一个simulator文件:

在工程中编写代码

-- 工程代码中我们会使用到的源文件,只用改变两个文件即可 ,这里有的函数头文件可能会报红,不用管,只要能make成功即可。

实现带界面的mp3播放器

main.c

events_init.c

events_init.h


补充1:glob函数

-- 在 Linux 中, C 语言的 glob 函数用于根据给定的模式查找文件名。 它实现了类似于 shell 的通配符匹配功能

-- 函数原型:

  • int glob(const char *pattern, int flags, int (*errfunc)(const char *epathname, int eerrno), glob_t *pglob);

-- 函数参数

  • const char * pattern:要匹配的路径模式。例如," * .c" 会匹配当前目录下的所有 C 源文件。

  • int flags:控制匹配行为的标志。这些标志可以是以下之一或多个(使用按位或 | 运算符组合):

    -- GLOB_ERR:在访问某个路径时发生错误时,glob 函数会立即返回错误。如果未设置此标志,glob 将在出现错误时继续处理后续路径。

    -- GLOB_MARK:在匹配到的路径名称后面添加一个斜杠(/),表示这是一个目录。

    -- GLOB_NOSORT:不对匹配结果进行排序,结果将按照文件系统的顺序返回。

    -- GLOB_DOT:匹配以点 (.) 开头的文件(如 .git),默认情况下,glob 不匹配这些文件。

  • int (*errfunc)(const char *epathname, int eerrno):一个可选的回调函数,用于处理错误。如果为 NULL,不调用此函数。

  • glob_t *pglob :指向 glob_t 结构的指针。该结构用于存储匹配结果。glob_t 结构定义如下:

    -- gl_pathc:匹配到的路径数量。 -- gl_pathv:指向字符串数组的指针,其中存储了所有匹配的路径。

    typedef struct {
    size_t gl_pathc;
    char **gl_pathv;
    size_t gl_offs;
    } glob_t;

-- 去给的路径下找相应通配符的文件。结果存在结构体中。

补充2:atexit函数

-- atexit 是一个 C 标准库函数,用于注册在程序正常终止时会被调用的函数。

-- 函数原型:

复制代码
#include <stdlib.h>  

int atexit(void (*func)(void));

-- 函数参数

  • func:指向无参数且返回类型为 void 的函数的指针。当 exit 被调用时,这个函数将被执行。

-- 函数返回值

  • 如果成功,atexit 返回 0。如果发生错误(如超出可注册函数的数量),则返回非零值。
相关推荐
Little-Hu34 分钟前
linux线程同步
linux·线程·条件变量·互斥锁·信号量·线程同步·读写锁
楼台的春风1 小时前
【Linux驱动开发 ---- 4.1_sysfs 详解】
linux·运维·c语言·数据库·人工智能·驱动开发·嵌入式硬件
月光技术杂谈1 小时前
linux下MQTT订阅发布验证-mosquitto安装测试流程
linux·mqtt·订阅·mosquitto·发布·mosquitto_pub·mqtt-clients
涟涟涟涟1 小时前
UE5错误 Linux离线状态下错误 请求失败libcurl错误:6无法解析主机名
linux·ue5
听风lighting1 小时前
WebServer实现:muduo库的主丛Reactor架构
linux·运维·网络·c++·socket·webserver
Insist7532 小时前
linux操作系统---小白玩转shell脚本
linux·运维·服务器
Xの哲學2 小时前
hostapd状态机解析
linux·网络·算法·wireless
孞㐑¥2 小时前
Linux之线程同步与互斥
linux·c++·经验分享·笔记
yangshuo12813 小时前
解决node项目nginx静态缓存导致项目重建后页面无变化问题
linux·nginx·缓存
独行soc4 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 01(题目+回答)
linux·科技·安全·面试·职场和发展·区块链