嵌入式技术论坛
直播中

李红

7年用户 1274经验值
私信 关注
[经验]

介绍一种RT-Thread模拟器simulator LVGL控件

前言

switch button : 开关按钮控件,用的也比较多,这里熟悉下相关的操作

switch 有两个状态:开与关

环境搭建

RT-Thread 4.1.0 或最新版本

BSP 模拟器 simulator

LVGL软件包

功能

LVGL 画个Switch 开关按钮,画个 标签显示开关按钮的状态

操作方法

这里在LVGL 官方的例程里,找到了switch 空间的操作,稍微熟悉 相关大的API,编写switch 按钮的测试代码

存放位置:simulator\applications\lvgl\demo\lv_switch_01.c,

代码如下

#include <rtthread.h>
#include <lvgl.h>

static lv_obj_t *lbl_status = NULL;

static void sw_event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *sw = lv_event_get_target(e);

if (lv_obj_has_state(sw, LV_STATE_CHECKED))
{
    rt_kprintf("%s : power on \r\n", __func__);
    lv_label_set_text(lbl_status, "ON");
    lv_obj_align_to(lbl_status, sw, LV_ALIGN_OUT_RIGHT_MID, 20, 0);    /*Align top of the slider*/
}
else
{
    lv_label_set_text(lbl_status, "OFF");
    lv_obj_align_to(lbl_status, sw, LV_ALIGN_OUT_RIGHT_MID, 20, 0);    /*Align top of the slider*/
    rt_kprintf("%s : power off \r\n", __func__);
}

}

/**

Show an example to switch button
*/
void lv_switch_01_init(void)
{
static rt_bool_t power_flag = RT_FALSE;

lv_obj_t *sw = lv_switch_create(lv_scr_act());
lv_obj_align(sw, LV_ALIGN_TOP_LEFT, 50, 20);
lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
lv_obj_clear_state(sw, LV_STATE_CHECKED);

/* Create a label */
lbl_status = lv_label_create(lv_scr_act());
lv_label_set_text(lbl_status, "OFF");
lv_obj_align_to(lbl_status, sw, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
}

调用的位置:simulator\packages\LVGL-latest\env_support\rt-thread\lv_rt_thread_port.c,也可以放在其他的位置,把代码文件加入 visual studio 2022 的工程里

2.jpg

编译与运行

2.jpg

添加到RT-Thread 模拟器 Visual Studio 2022的工程里,编译并运行,效果如下:

switch 开关按钮API
设置 switch 默认开启状态:lv_obj_add_state(sw, LV_STATE_CHECKED);

设置 switch 默认关闭(灰色)状态:lv_obj_clear_state(sw, LV_STATE_CHECKED);

switch 是否为开启状态:lv_obj_has_state(sw, LV_STATE_CHECKED)

设置 switch 状态改变回调函数:lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, NULL);

小结

开关按钮Switch 用的比较的广泛,如一些电源控制等

使用RT-Thread 模拟器调试LVGL,比较的高效与便捷,并且相关的代码,很容易移植到嵌入式的硬件电路板上。

原作者:张世争

更多回帖

发帖
×
20
完善资料,
赚取积分