Browse Source

程序页面功能添加

master
忱 沈 5 months ago
parent
commit
9dcdecf916
  1. 95
      applications/lvgl/guider/custom/custom.c
  2. 2
      applications/lvgl/guider/custom/custom.h
  3. 2
      applications/lvgl/guider/generated/gui_guider.h
  4. 6
      applications/lvgl/guider/generated/setup_scr_screen.c
  5. 2
      applications/lvgl/lv__user_gui.c
  6. 2
      applications/lvgl/ui_data_csv.c
  7. 49
      applications/lvgl/ui_data_labels.c
  8. 10
      applications/lvgl/ui_data_labels.h

95
applications/lvgl/guider/custom/custom.c

@ -39,6 +39,9 @@
*/ */
int16_t Work_row = -1; int16_t Work_row = -1;
int16_t Work_step_row = -1; int16_t Work_step_row = -1;
int16_t run_step_row = -1;
int16_t pname_row = -1;
int16_t pname_step_row = -1;
// 绘图回调 // 绘图回调
static void table_style_cb(lv_event_t *e) static void table_style_cb(lv_event_t *e)
{ {
@ -69,6 +72,24 @@ static void table_style_cb(lv_event_t *e)
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字 dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
dsc->label_dsc->font = &lv_font_simsun_24; dsc->label_dsc->font = &lv_font_simsun_24;
} }
else if ((table == guider_ui.screen_run_step)&&(row == run_step_row)) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
dsc->label_dsc->font = &lv_font_simsun_24;
}
else if ((table == guider_ui.screen_pname_row)&&(row == pname_row)) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
dsc->label_dsc->font = &lv_font_simsun_24;
}
else if ((table == guider_ui.screen_pname_step_row)&&(row == pname_step_row)) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
dsc->label_dsc->font = &lv_font_simsun_24;
} ;
} }
} }
} }
@ -134,6 +155,9 @@ static void table_click_event_cb(lv_event_t *e) {
} }
Work_row=-1; Work_row=-1;
Work_step_row=-1; Work_step_row=-1;
run_step_row = -1;
pname_row = -1;
pname_step_row = -1;
//获得来源表 //获得来源表
if(table == guider_ui.screen_list_inf)//总览信息/工艺信息 if(table == guider_ui.screen_list_inf)//总览信息/工艺信息
{ {
@ -147,6 +171,19 @@ static void table_click_event_cb(lv_event_t *e) {
rt_snprintf(sql, sizeof(sql),"%s' AND Step = '%s'",value_W,lv_table_get_cell_value(guider_ui.screen_w_list, row, 0)); rt_snprintf(sql, sizeof(sql),"%s' AND Step = '%s'",value_W,lv_table_get_cell_value(guider_ui.screen_w_list, row, 0));
Work_Program_stepINF_ui(sql); Work_Program_stepINF_ui(sql);
} }
else if(table == guider_ui.screen_run_step){//工艺信息
run_step_row = row;// 写入行号
if(value_W[0] == '\0') return;
}
else if(table == guider_ui.screen_pname_row){//工艺程序信息
pname_row = row;// 写入行号
rt_snprintf(value_W, sizeof(value_W),lv_table_get_cell_value(guider_ui.screen_pname_row, row, 0));
UI_pname_step_row(value_W);
}
else if(table == guider_ui.screen_pname_step_row){//工艺程序细节信息
pname_step_row = row;// 写入行号
if(value_W[0] == '\0') return;
}
} }
// 初始化样式 // 初始化样式
@ -199,11 +236,43 @@ void table_style_init(lv_obj_t *container)
lv_obj_set_style_pad_right(container, 10, LV_PART_ITEMS|LV_STATE_CHECKED); lv_obj_set_style_pad_right(container, 10, LV_PART_ITEMS|LV_STATE_CHECKED);
} }
// 页面事件回调函数
static void tabview_event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *tabview = lv_event_get_target(e);
if (code == LV_EVENT_VALUE_CHANGED) {
// 获取当前选中的 Tab 索引
uint16_t tab_id = lv_tabview_get_tab_act(tabview);
// 根据 tab_id 执行不同操作
switch (tab_id) {
case 0://工单页面
break;
case 1://工艺页面
break;
case 2:
break;
case 3://程序页面
UI_pname_row();
break;
case 4:
break;
}
}
}
void custom_init(lv_ui *ui) void custom_init(lv_ui *ui)
{ {
lv_obj_clear_flag(lv_tabview_get_content(ui->screen_tabview), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动 lv_obj_clear_flag(lv_tabview_get_content(ui->screen_tabview), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动
lv_obj_clear_flag(lv_tabview_get_content(ui->screen_w_io), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动 lv_obj_clear_flag(lv_tabview_get_content(ui->screen_w_io), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动
lv_obj_add_event_cb(ui->screen_tabview, tabview_event_cb, LV_EVENT_VALUE_CHANGED, NULL);//
lv_obj_set_style_pad_all(ui->screen_tabview_tab_1, 0, LV_PART_MAIN); lv_obj_set_style_pad_all(ui->screen_tabview_tab_1, 0, LV_PART_MAIN);
lv_obj_set_style_pad_all(ui->screen_tabview_tab_2, 0, LV_PART_MAIN); lv_obj_set_style_pad_all(ui->screen_tabview_tab_2, 0, LV_PART_MAIN);
lv_obj_set_style_pad_all(ui->screen_tabview_tab_3, 0, LV_PART_MAIN); lv_obj_set_style_pad_all(ui->screen_tabview_tab_3, 0, LV_PART_MAIN);
@ -263,6 +332,32 @@ void custom_init(lv_ui *ui)
lv_table_set_col_width(guider_ui.screen_run_step, 1, 370); lv_table_set_col_width(guider_ui.screen_run_step, 1, 370);
lv_table_set_cell_value(guider_ui.screen_run_step,0,0,""); lv_table_set_cell_value(guider_ui.screen_run_step,0,0,"");
lv_table_set_cell_value(guider_ui.screen_run_step,0,1,"工艺"); lv_table_set_cell_value(guider_ui.screen_run_step,0,1,"工艺");
//程序页面的工艺信息列表
guider_ui.screen_pname_row = lv_table_create(guider_ui.screen_step_set);
table_style_init(guider_ui.screen_pname_row);
lv_obj_add_event_cb(guider_ui.screen_pname_row, table_style_cb, LV_EVENT_DRAW_PART_BEGIN, NULL);
lv_table_set_col_cnt(guider_ui.screen_pname_row,3);
lv_table_set_col_width(guider_ui.screen_pname_row, 0, 430);
lv_table_set_col_width(guider_ui.screen_pname_row, 1, 84);
lv_table_set_col_width(guider_ui.screen_pname_row, 2, 200);
lv_table_set_cell_value(guider_ui.screen_pname_row,0,0,"工艺");
lv_table_set_cell_value(guider_ui.screen_pname_row,0,1,"步骤");
lv_table_set_cell_value(guider_ui.screen_pname_row,0,2,"时间");
//程序页面的步骤列表
guider_ui.screen_pname_step_row = lv_table_create(guider_ui.screen_proess_set);
lv_obj_set_pos(guider_ui.screen_pname_step_row, 0, 0);
lv_obj_set_size(guider_ui.screen_pname_step_row, 300, 50);
table_style_init(guider_ui.screen_pname_step_row);
lv_obj_add_event_cb(guider_ui.screen_pname_step_row, table_style_cb, LV_EVENT_DRAW_PART_BEGIN, NULL);
lv_table_set_row_cnt(guider_ui.screen_pname_step_row,1);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 0, 50);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 1, 250);
lv_table_set_cell_value(guider_ui.screen_pname_step_row,0,0,"");
lv_table_set_cell_value(guider_ui.screen_pname_step_row,0,1,"工艺");
/* Add your codes here */ /* Add your codes here */
} }

2
applications/lvgl/guider/custom/custom.h

@ -17,6 +17,8 @@ extern "C" {
extern int16_t Work_row; extern int16_t Work_row;
extern int16_t Work_step_row; extern int16_t Work_step_row;
extern int16_t pname_row;
extern int16_t pname_step_row;
void custom_init(lv_ui *ui); void custom_init(lv_ui *ui);

2
applications/lvgl/guider/generated/gui_guider.h

@ -452,6 +452,8 @@ typedef struct
lv_obj_t *screen_list_inf; lv_obj_t *screen_list_inf;
lv_obj_t *screen_w_list_NAME; lv_obj_t *screen_w_list_NAME;
lv_obj_t *screen_run_step; lv_obj_t *screen_run_step;
lv_obj_t *screen_pname_row;
lv_obj_t *screen_pname_step_row;
}lv_ui; }lv_ui;
typedef void (*ui_setup_scr_t)(lv_ui * ui); typedef void (*ui_setup_scr_t)(lv_ui * ui);

6
applications/lvgl/guider/generated/setup_scr_screen.c

@ -7188,7 +7188,7 @@ void setup_scr_screen(lv_ui *ui)
//Write codes screen_w_5 //Write codes screen_w_5
ui->screen_w_5 = lv_obj_create(ui->screen_tabview_tab_5); ui->screen_w_5 = lv_obj_create(ui->screen_tabview_tab_5);
lv_obj_set_pos(ui->screen_w_5, 0, 0); lv_obj_set_pos(ui->screen_w_5, 0, 0);
lv_obj_set_size(ui->screen_w_5, 800, 470); lv_obj_set_size(ui->screen_w_5, 800, 460);
lv_obj_set_scrollbar_mode(ui->screen_w_5, LV_SCROLLBAR_MODE_OFF); lv_obj_set_scrollbar_mode(ui->screen_w_5, LV_SCROLLBAR_MODE_OFF);
//Write style for screen_w_5, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. //Write style for screen_w_5, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
@ -7245,7 +7245,7 @@ void setup_scr_screen(lv_ui *ui)
ui->screen_sys_name = lv_label_create(ui->screen_w_5); ui->screen_sys_name = lv_label_create(ui->screen_w_5);
lv_label_set_text(ui->screen_sys_name, "机台名"); lv_label_set_text(ui->screen_sys_name, "机台名");
lv_label_set_long_mode(ui->screen_sys_name, LV_LABEL_LONG_WRAP); lv_label_set_long_mode(ui->screen_sys_name, LV_LABEL_LONG_WRAP);
lv_obj_set_pos(ui->screen_sys_name, 20, 79); lv_obj_set_pos(ui->screen_sys_name, 20, 80);
lv_obj_set_size(ui->screen_sys_name, 100, 30); lv_obj_set_size(ui->screen_sys_name, 100, 30);
//Write style for screen_sys_name, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. //Write style for screen_sys_name, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
@ -7342,7 +7342,7 @@ void setup_scr_screen(lv_ui *ui)
lv_obj_align(ui->screen_sys_save_label, LV_ALIGN_CENTER, 0, 0); lv_obj_align(ui->screen_sys_save_label, LV_ALIGN_CENTER, 0, 0);
lv_obj_set_style_pad_all(ui->screen_sys_save, 0, LV_STATE_DEFAULT); lv_obj_set_style_pad_all(ui->screen_sys_save, 0, LV_STATE_DEFAULT);
lv_obj_set_width(ui->screen_sys_save_label, LV_PCT(100)); lv_obj_set_width(ui->screen_sys_save_label, LV_PCT(100));
lv_obj_set_pos(ui->screen_sys_save, 880, 420); lv_obj_set_pos(ui->screen_sys_save, 880, 400);
lv_obj_set_size(ui->screen_sys_save, 100, 50); lv_obj_set_size(ui->screen_sys_save, 100, 50);
//Write style for screen_sys_save, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. //Write style for screen_sys_save, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.

2
applications/lvgl/lv__user_gui.c

@ -70,10 +70,12 @@ void setup_s_screen(lv_ui *ui)
{ {
//工单 //工单
lv_label_set_text(ui->screen_order, (const char *)Work);//显示当前信息 lv_label_set_text(ui->screen_order, (const char *)Work);//显示当前信息
lv_label_set_text(ui->screen_process, (const char *)Process);
lv_obj_clear_flag(ui->screen_inf_plc, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(ui->screen_inf_plc, LV_OBJ_FLAG_HIDDEN);
}else{ }else{
lv_obj_add_flag(ui->screen_inf_plc, LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(ui->screen_inf_plc, LV_OBJ_FLAG_HIDDEN);
lv_label_set_text(ui->screen_order, "PLC Not Connected");//显示plc断开 lv_label_set_text(ui->screen_order, "PLC Not Connected");//显示plc断开
lv_label_set_text(ui->screen_process, "工艺[停止]");
} }
if(USB_OK)//USB接入 if(USB_OK)//USB接入
{ {

2
applications/lvgl/ui_data_csv.c

@ -331,7 +331,7 @@ int run_csv_to_set(const char *csv_data) {
//数据组信息 //数据组信息
rt_snprintf(Work,sizeof(Work),csv_get_cell(user, 1, 0)); rt_snprintf(Work,sizeof(Work),csv_get_cell(user, 1, 0));
rt_snprintf(Dye,sizeof(Dye),csv_get_cell(user, 1, 1)); rt_snprintf(Dye,sizeof(Dye),csv_get_cell(user, 1, 1));
rt_snprintf(Process,sizeof(Process),csv_get_cell(user, 1, 2)); rt_snprintf(Process,sizeof(Process),"%s:%s","工艺",csv_get_cell(user, 1, 2));
Pump = atoi(csv_get_cell(user, 1, 3)); Pump = atoi(csv_get_cell(user, 1, 3));
Fan = atoi(csv_get_cell(user, 1, 4)); Fan = atoi(csv_get_cell(user, 1, 4));
Swing = atoi(csv_get_cell(user, 1, 5)); Swing = atoi(csv_get_cell(user, 1, 5));

49
applications/lvgl/ui_data_labels.c

@ -374,7 +374,14 @@ void Work_Program_step_ui(char* str_data)
// 表格绘图 // 表格绘图
parse_csv_to_inf(guider_ui.screen_text_inf,"",550,230); parse_csv_to_inf(guider_ui.screen_text_inf,"",550,230);
if((select_data_ui[0]=='N')&&(select_data_ui[1]=='o'))return; if((select_data_ui[0]=='N')&&(select_data_ui[1]=='o')){
parse_csv_to_inf(guider_ui.screen_text_inf,"",550,230);
lv_table_set_col_cnt(guider_ui.screen_w_list,2);
lv_table_set_row_cnt(guider_ui.screen_w_list,0);
lv_table_set_col_width(guider_ui.screen_w_list, 0, 50);
lv_table_set_col_width(guider_ui.screen_w_list, 1, 250);
return;
}
parse_csv_to_table(guider_ui.screen_w_list, select_data_ui,1); parse_csv_to_table(guider_ui.screen_w_list, select_data_ui,1);
lv_table_set_col_width(guider_ui.screen_w_list, 0, 50); lv_table_set_col_width(guider_ui.screen_w_list, 0, 50);
lv_table_set_col_width(guider_ui.screen_w_list, 1, 250); lv_table_set_col_width(guider_ui.screen_w_list, 1, 250);
@ -401,8 +408,9 @@ void Work_Program_stepINF_ui(char* str_data)
parse_csv_to_inf(guider_ui.screen_text_inf,select_data_ui,550,230); parse_csv_to_inf(guider_ui.screen_text_inf,select_data_ui,550,230);
} }
} }
//启动按钮 //启动按钮
void Work_start() void Work_start(void)
{ {
if (Work_NAME[0] == '\0') return; if (Work_NAME[0] == '\0') return;
if(Work_Program_DATA==0) if(Work_Program_DATA==0)
@ -414,7 +422,6 @@ void Work_start()
//启动信息 //启动信息
rt_snprintf(sqlSELECT, sizeof(sqlSELECT),"%s w.WorkOrder = '%s' LIMIT 1;",select_Workorder_R,Work_NAME); rt_snprintf(sqlSELECT, sizeof(sqlSELECT),"%s w.WorkOrder = '%s' LIMIT 1;",select_Workorder_R,Work_NAME);
db_send_select(DB_CMD_SELECT, sqlSELECT, 500,select_data_ui); db_send_select(DB_CMD_SELECT, sqlSELECT, 500,select_data_ui);
rt_kprintf(select_data_ui);
run_csv_to_set(select_data_ui); run_csv_to_set(select_data_ui);
} }
else else
@ -425,3 +432,39 @@ void Work_start()
run_csv_to_table(select_data_ui); run_csv_to_table(select_data_ui);
} }
} }
//
void UI_pname_row(void)
{
pname_row = -1;
pname_step_row = -1;
// 查询工艺数据
db_send_select(DB_CMD_SELECT, select_Program_DATA, 500,select_data_ui);
// 表格绘图
parse_csv_to_table(guider_ui.screen_pname_row, select_data_ui,0);
lv_table_set_col_width(guider_ui.screen_pname_row, 0, 430);
lv_table_set_col_width(guider_ui.screen_pname_row, 1, 80);
lv_table_set_col_width(guider_ui.screen_pname_row, 2, 200);
}
//
void UI_pname_step_row(char* str_data)
{
pname_step_row = -1;
// 查询工艺数据
rt_snprintf(sqlSELECT, sizeof(sqlSELECT),"%s'%s' ORDER BY Step ASC;",select_ProgramSteps_DATA,str_data);
db_send_select(DB_CMD_SELECT, sqlSELECT, 500,select_data_ui);
// 表格绘图
if((select_data_ui[0]=='N')&&(select_data_ui[1]=='o')){
lv_table_set_col_cnt(guider_ui.screen_pname_step_row,2);
lv_table_set_row_cnt(guider_ui.screen_pname_step_row,0);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 0, 50);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 1, 250);
lv_table_set_cell_value(guider_ui.screen_pname_step_row,0,0,"");
lv_table_set_cell_value(guider_ui.screen_pname_step_row,0,1,"步骤工艺");
return;
}
parse_csv_to_table(guider_ui.screen_pname_step_row, select_data_ui,0);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 0, 50);
lv_table_set_col_width(guider_ui.screen_pname_step_row, 1, 250);
}

10
applications/lvgl/ui_data_labels.h

@ -13,6 +13,8 @@
#define select_WorkOrder_DATA "SELECT WorkOrder AS 工单,ProgramName AS 工艺 ,Dyelot || '@' || ReDye AS 领料单,\ #define select_WorkOrder_DATA "SELECT WorkOrder AS 工单,ProgramName AS 工艺 ,Dyelot || '@' || ReDye AS 领料单,\
StartTime AS ,EndTime AS ,Time AS ,lock AS ,State AS ,USER AS FROM WorkOrder WHERE State=101 AND EndTime > " StartTime AS ,EndTime AS ,Time AS ,lock AS ,State AS ,USER AS FROM WorkOrder WHERE State=101 AND EndTime > "
#define select_Program_DATA "SELECT ProgramName AS 工艺 ,Step AS 步骤,Time AS 预计时间 FROM ProgramName" #define select_Program_DATA "SELECT ProgramName AS 工艺 ,Step AS 步骤,Time AS 预计时间 FROM ProgramName"
#define select_ProgramSteps_DATA "SELECT Step AS 步 ,StepName AS 步骤工艺 FROM ProgramSteps WHERE Program="
#define select_WorkorderSteps_DATA "SELECT Step AS 步 ,StepName AS 步骤工艺 FROM WorkorderSteps WHERE WorkOrder="
#define select_Workorder_R "SELECT w.WorkOrder, w.Dyelot, w.ProgramName, s.PumpSpeed, s.Blower, s.Swing, s.ClothWheel, s.Nozzle\ #define select_Workorder_R "SELECT w.WorkOrder, w.Dyelot, w.ProgramName, s.PumpSpeed, s.Blower, s.Swing, s.ClothWheel, s.Nozzle\
FROM WorkOrder w LEFT JOIN WorkOrderSet s ON w.WorkOrder = s.WorkOrder WHERE" FROM WorkOrder w LEFT JOIN WorkOrderSet s ON w.WorkOrder = s.WorkOrder WHERE"
@ -23,9 +25,6 @@ StepID_S1,StepID_S2,StepID_S3 FROM WorkorderSteps WHERE "
P1_S1,P2_S1,P3_S1,P4_S1,P5_S1,P1_S2,P2_S2,P3_S2,P4_S2,P5_S2,P1_S3,P2_S3,P3_S3,P4_S3,P5_S3,ReDye,\ P1_S1,P2_S1,P3_S1,P4_S1,P5_S1,P1_S2,P2_S2,P3_S2,P4_S2,P5_S2,P1_S3,P2_S3,P3_S3,P4_S3,P5_S3,ReDye,\
StepID_S1,StepID_S2,StepID_S3 FROM ProgramSteps WHERE" StepID_S1,StepID_S2,StepID_S3 FROM ProgramSteps WHERE"
#define select_ProgramSteps_DATA "SELECT Step AS 步 ,StepName AS 步骤工艺 FROM ProgramSteps WHERE Program="
#define select_WorkorderSteps_DATA "SELECT Step AS 步 ,StepName AS 步骤工艺 FROM WorkorderSteps WHERE WorkOrder="
#define select_ProgramStepsinf_DATA "SELECT Program AS 工艺 ,Step AS 步号 ,StepName AS 步骤工艺 , ParameterName AS 细节,\ #define select_ProgramStepsinf_DATA "SELECT Program AS 工艺 ,Step AS 步号 ,StepName AS 步骤工艺 , ParameterName AS 细节,\
P1 AS 1 ,P2 AS 2 ,P3 AS 3 ,P4 AS 4 ,P5 AS 5 ,StepName_S1 AS 1 ,P1_S1 AS 1_1 ,P2_S1 AS 1_2,\ P1 AS 1 ,P2 AS 2 ,P3 AS 3 ,P4 AS 4 ,P5 AS 5 ,StepName_S1 AS 1 ,P1_S1 AS 1_1 ,P2_S1 AS 1_2,\
P3_S1 AS 1_3 ,P4_S1 AS 1_4 ,P5_S1 AS 1_5 ,StepName_S2 AS 2 ,P1_S2 AS 2_1 ,P2_S2 AS 2_2, \ P3_S1 AS 1_3 ,P4_S1 AS 1_4 ,P5_S1 AS 1_5 ,StepName_S2 AS 2 ,P1_S2 AS 2_1 ,P2_S2 AS 2_2, \
@ -109,6 +108,9 @@ char* get_time_str(char *buf, size_t size);
void Work_Program_ui(void); void Work_Program_ui(void);
void Work_Program_step_ui(char* str_data); void Work_Program_step_ui(char* str_data);
void Work_Program_stepINF_ui(char* str_data); void Work_Program_stepINF_ui(char* str_data);
void Work_start(); void Work_start(void);
void UI_pname_row(void);
void UI_pname_step_row(char* str_data);
#endif /* APPLICATIONS_LVGL_UI_DATA_LABELS_H_ */ #endif /* APPLICATIONS_LVGL_UI_DATA_LABELS_H_ */

Loading…
Cancel
Save