1.简介
我们经常需要显示下位机执行状态判断NG或者OK如下图。
接下来我们用lvgl实现一下
首先创建一个容器
ui_Container2 = lv_obj_create(ui_Screen1);
lv_obj_remove_style_all(ui_Container2);
lv_obj_set_width(ui_Container2, 119);
lv_obj_set_height(ui_Container2, 84);
lv_obj_set_x(ui_Container2, 226);
lv_obj_set_y(ui_Container2, -137);
lv_obj_set_align(ui_Container2, LV_ALIGN_CENTER);
然后再容器上创建一个label
ui_okngstate = lv_label_create(ui_Container2);
lv_obj_set_width(ui_okngstate, LV_SIZE_CONTENT); /// 1
lv_obj_set_height(ui_okngstate, LV_SIZE_CONTENT); /// 1
lv_obj_set_align(ui_okngstate, LV_ALIGN_CENTER);
lv_label_set_text(ui_okngstate, "OK");
lv_obj_set_style_text_font(ui_okngstate, &lv_font_montserrat_34, LV_PART_MAIN | LV_STATE_DEFAULT);
接下来创建一个定时器来执行状态值的判断
lv_timer_create(update_container_state, 1000, NULL); // 1000ms 的周期
然后在定时器的回调函数里面判断状态值
void update_container_state(lv_timer_t * timer) {
// 根据标志位来更新容器状态
//flag = !flag; // 切换标志位
if (flag == 1) {
lv_obj_set_style_bg_color(ui_Container2, lv_color_hex(0xFF0000), LV_PART_MAIN | LV_STATE_DEFAULT); // 背景变红
lv_label_set_text(ui_okngstate, "NG"); // 文本变为“NG”
} else {
lv_obj_set_style_bg_color(ui_Container2, lv_color_hex(0x12E95A), LV_PART_MAIN | LV_STATE_DEFAULT); // 背景恢复绿色
lv_label_set_text(ui_okngstate, "OK"); // 文本变为“OK”
}
rt_kprintf("flag: %d\n", flag);
}
flag就是你业务代码的错误码,如果置1,label背景变成红色并且文本改成NG
如果置0,label背景变成绿色并且文本改成OK