/* * Copyright 2025 NXP * NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used strictly in * accordance with the applicable license terms. By expressly accepting such terms or by downloading, installing, * activating and/or otherwise using the software, you are agreeing that you have read, and that you agree to * comply with and are bound by, such license terms. If you do not agree to be bound by the applicable license * terms, then you may not retain, install, activate or otherwise use the software. */ #include "lvgl.h" #include #include "gui_guider.h" #include "events_init.h" #include "widgets_init.h" #include "custom.h" #include #include #if defined(CONFIG_USER_RELAY_3) void setup_scr_onofftime3(lv_ui *ui) { time_t now; struct tm timeinfo; time(&now); localtime_r(&now, &timeinfo); //Write codes onofftime3 ui->onofftime3 = lv_obj_create(ui->screen_main_tileview_onoffs); lv_obj_set_pos(ui->onofftime3, 0, 0); lv_obj_set_size(ui->onofftime3, 480, 480); lv_obj_set_scrollbar_mode(ui->onofftime3,LV_SCROLLBAR_MODE_OFF);//不显示滚动条 lv_obj_clear_flag(ui->onofftime3, LV_OBJ_FLAG_SCROLLABLE); // 禁止滚动 //Write style for onofftime3, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui->onofftime3, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_grad_dir(ui->onofftime3, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3, 0, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_settings_icon ui->onofftime3_settings_icon = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_settings_icon, LV_OBJ_FLAG_CLICKABLE); lv_img_set_src(ui->onofftime3_settings_icon, LVGL_PATH(settings_icon.png)); lv_img_set_pivot(ui->onofftime3_settings_icon, 50,50); lv_img_set_angle(ui->onofftime3_settings_icon, 0); lv_obj_set_pos(ui->onofftime3_settings_icon, 432, 24); lv_obj_set_size(ui->onofftime3_settings_icon, 27, 27); //Write style for onofftime3_settings_icon, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_settings_icon, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_settings_btn ui->onofftime3_settings_btn = lv_btn_create(ui->onofftime3); ui->onofftime3_settings_btn_label = lv_label_create(ui->onofftime3_settings_btn); lv_label_set_text(ui->onofftime3_settings_btn_label, ""); lv_label_set_long_mode(ui->onofftime3_settings_btn_label, LV_LABEL_LONG_WRAP); lv_obj_align(ui->onofftime3_settings_btn_label, LV_ALIGN_CENTER, 0, 0); lv_obj_set_style_pad_all(ui->onofftime3_settings_btn, 0, LV_STATE_DEFAULT); lv_obj_set_width(ui->onofftime3_settings_btn_label, LV_PCT(100)); lv_obj_set_pos(ui->onofftime3_settings_btn, 418, 12); lv_obj_set_size(ui->onofftime3_settings_btn, 50, 50); //Write style for onofftime3_settings_btn, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_bg_opa(ui->onofftime3_settings_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui->onofftime3_settings_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_settings_btn, 5, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_settings_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_settings_btn, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_settings_btn, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_settings_btn, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_settings_btn, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw1bg ui->onofftime3_sw1bg = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw1bg, LV_OBJ_FLAG_CLICKABLE); //lv_img_set_src(ui->onofftime3_sw1bg,LVGL_PATH(onofftime3_on.png)); if(GET_nvs_Sys_Info_relay1status()&relayfirst_powerflag)//看看是不是上电 {//是上电 按规定设置 if((GET_nvs_Sys_Info_relay1status()&relay_powerflag)==RELAY_STATUS_MEMORY)//断电记忆 恢复断电前(包过重启)的继电器状态 { if(GET_nvs_Sys_Info_relay1()) { //断电前继电器的状态(通电) lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_on.png)); } else//断电前继电器的状态(断电) { lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_off.png)); } } else if((GET_nvs_Sys_Info_relay1status()&relay_powerflag)==RELAY_STATUS_ON)//通电 { SET_nvs_Sys_Info_relay1(true);//强制设置为开(通电) lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_on.png)); } else //if((GET_nvs_Sys_Info_relay1status()&relay_powerflag)==RELAY_STATUS_OFF)//断电 默认 { SET_nvs_Sys_Info_relay1(false);//强制设置为关(断电) lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_off.png)); } } else {//不是上电 if(GET_nvs_Sys_Info_relay1()) {//开 lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_on.png)); } else {//关 lv_img_set_src(guider_ui.onofftime3_sw1bg,LVGL_PATH(onofftime3_off.png)); } } lv_img_set_pivot(ui->onofftime3_sw1bg, 50,50); lv_img_set_angle(ui->onofftime3_sw1bg, 0); lv_obj_set_pos(ui->onofftime3_sw1bg, 340, 72); lv_obj_set_size(ui->onofftime3_sw1bg, 122, 96); //Write style for onofftime3_sw1bg, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw1bg, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw1_light_icon ui->onofftime3_sw1_light_icon = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw1_light_icon, LV_OBJ_FLAG_CLICKABLE); //lv_img_set_src(ui->onofftime3_sw1_light_icon, LVGL_PATH(lighgt_icon_05.png)); if(GET_nvs_Sys_Info_relay1icon())//判断是否使用新的icon { lv_img_set_src(ui->onofftime3_sw1_light_icon,onoff_switchlight_icon_ary[GET_nvs_Sys_Info_relay1icon()]); } else { lv_img_set_src(ui->onofftime3_sw1_light_icon,LVGL_PATH(lighgt_icon_05.png));//icon } lv_img_set_pivot(ui->onofftime3_sw1_light_icon, 50,50); lv_img_set_angle(ui->onofftime3_sw1_light_icon, 0); lv_obj_set_pos(ui->onofftime3_sw1_light_icon, 376, 78); lv_obj_set_size(ui->onofftime3_sw1_light_icon, 50, 50); //Write style for onofftime3_sw1_light_icon, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw1_light_icon, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw1_label ui->onofftime3_sw1_label = lv_label_create(ui->onofftime3); //lv_label_set_text(ui->onofftime3_sw1_label, "Chandelier"); if( strlen((const char*)nvs_Sys_Info_SysInfo.relay1.Label) )//用户自己设置的文字(自由设置 不分语言) { lv_label_set_text_fmt(ui->onofftime3_sw1_label, "%s",nvs_Sys_Info_SysInfo.relay1.Label); } else { lv_label_set_text(ui->onofftime3_sw1_label,Menu_List[GET_nvs_Sys_Info_language()][MENU_LIST_Chandelier]); } lv_label_set_long_mode(ui->onofftime3_sw1_label, LV_LABEL_LONG_DOT); lv_obj_set_pos(ui->onofftime3_sw1_label, 340, 140); lv_obj_set_size(ui->onofftime3_sw1_label, 122, 20); //Write style for onofftime3_sw1_label, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw1_label, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw1_label, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw1_label, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_letter_space(ui->onofftime3_sw1_label, 2, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_line_space(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw1_label, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw1_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw1_btn ui->onofftime3_sw1_btn = lv_btn_create(ui->onofftime3); ui->onofftime3_sw1_btn_label = lv_label_create(ui->onofftime3_sw1_btn); lv_label_set_text(ui->onofftime3_sw1_btn_label, ""); lv_label_set_long_mode(ui->onofftime3_sw1_btn_label, LV_LABEL_LONG_WRAP); lv_obj_align(ui->onofftime3_sw1_btn_label, LV_ALIGN_CENTER, 0, 0); lv_obj_set_style_pad_all(ui->onofftime3_sw1_btn, 0, LV_STATE_DEFAULT); lv_obj_set_width(ui->onofftime3_sw1_btn_label, LV_PCT(100)); lv_obj_set_pos(ui->onofftime3_sw1_btn, 350, 78); lv_obj_set_size(ui->onofftime3_sw1_btn, 100, 80); //Write style for onofftime3_sw1_btn, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_bg_opa(ui->onofftime3_sw1_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui->onofftime3_sw1_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw1_btn, 15, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw1_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw1_btn, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw1_btn, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw1_btn, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw1_btn, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw2bg ui->onofftime3_sw2bg = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw2bg, LV_OBJ_FLAG_CLICKABLE); //lv_img_set_src(ui->onofftime3_sw2bg, LVGL_PATH(onofftime3_off.png)); if(GET_nvs_Sys_Info_relay2status()&relayfirst_powerflag)//看看是不是上电 {//是上电 按规定设置 if((GET_nvs_Sys_Info_relay2status()&relay_powerflag)==RELAY_STATUS_MEMORY)//断电记忆 恢复断电前(包过重启)的继电器状态 { if(GET_nvs_Sys_Info_relay2()) { //断电前继电器的状态(通电) lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_on.png)); } else//断电前继电器的状态(断电) { lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_off.png)); } } else if((GET_nvs_Sys_Info_relay2status()&relay_powerflag)==RELAY_STATUS_ON)//通电 { SET_nvs_Sys_Info_relay2(true);//强制设置为开(通电) lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_on.png)); } else //if((GET_nvs_Sys_Info_relay2status()&relay_powerflag)==RELAY_STATUS_OFF)//断电 默认 { SET_nvs_Sys_Info_relay2(false);//强制设置为关(断电) lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_off.png)); } } else {//不是上电 if(GET_nvs_Sys_Info_relay2()) {//开 lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_on.png)); } else {//关 lv_img_set_src(guider_ui.onofftime3_sw2bg,LVGL_PATH(onofftime3_off.png)); } } lv_img_set_pivot(ui->onofftime3_sw2bg, 50,50); lv_img_set_angle(ui->onofftime3_sw2bg, 0); lv_obj_set_pos(ui->onofftime3_sw2bg, 340, 176); lv_obj_set_size(ui->onofftime3_sw2bg, 122, 96); //Write style for onofftime3_sw2bg, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw2bg, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw2_light_icon ui->onofftime3_sw2_light_icon = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw2_light_icon, LV_OBJ_FLAG_CLICKABLE); // lv_img_set_src(ui->onofftime3_sw2_light_icon, LVGL_PATH(lighgt_icon_08.png)); if(GET_nvs_Sys_Info_relay2icon())//判断是否使用新的icon { lv_img_set_src(ui->onofftime3_sw2_light_icon,onoff_switchlight_icon_ary[GET_nvs_Sys_Info_relay2icon()]); } else { lv_img_set_src(ui->onofftime3_sw2_light_icon,LVGL_PATH(lighgt_icon_08.png));//icon } lv_img_set_pivot(ui->onofftime3_sw2_light_icon, 50,50); lv_img_set_angle(ui->onofftime3_sw2_light_icon, 0); lv_obj_set_pos(ui->onofftime3_sw2_light_icon, 376, 184); lv_obj_set_size(ui->onofftime3_sw2_light_icon, 50, 50); //Write style for onofftime3_sw2_light_icon, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw2_light_icon, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw2_label ui->onofftime3_sw2_label = lv_label_create(ui->onofftime3); // lv_label_set_text(ui->onofftime3_sw2_label, "Downlight"); if( strlen((const char*)nvs_Sys_Info_SysInfo.relay2.Label) )//用户自己设置的文字(自由设置 不分语言) { lv_label_set_text_fmt(ui->onofftime3_sw2_label, "%s",nvs_Sys_Info_SysInfo.relay2.Label); } else { lv_label_set_text(ui->onofftime3_sw2_label,Menu_List[GET_nvs_Sys_Info_language()][MENU_LIST_Downlight]); } lv_label_set_long_mode(ui->onofftime3_sw2_label, LV_LABEL_LONG_DOT); lv_obj_set_pos(ui->onofftime3_sw2_label, 339, 240); lv_obj_set_size(ui->onofftime3_sw2_label, 122, 20); //Write style for onofftime3_sw2_label, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw2_label, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw2_label, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw2_label, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_letter_space(ui->onofftime3_sw2_label, 2, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_line_space(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw2_label, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw2_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw2_btn ui->onofftime3_sw2_btn = lv_btn_create(ui->onofftime3); ui->onofftime3_sw2_btn_label = lv_label_create(ui->onofftime3_sw2_btn); lv_label_set_text(ui->onofftime3_sw2_btn_label, ""); lv_label_set_long_mode(ui->onofftime3_sw2_btn_label, LV_LABEL_LONG_WRAP); lv_obj_align(ui->onofftime3_sw2_btn_label, LV_ALIGN_CENTER, 0, 0); lv_obj_set_style_pad_all(ui->onofftime3_sw2_btn, 0, LV_STATE_DEFAULT); lv_obj_set_width(ui->onofftime3_sw2_btn_label, LV_PCT(100)); lv_obj_set_pos(ui->onofftime3_sw2_btn, 350, 184); lv_obj_set_size(ui->onofftime3_sw2_btn, 100, 80); //Write style for onofftime3_sw2_btn, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_bg_opa(ui->onofftime3_sw2_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui->onofftime3_sw2_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw2_btn, 15, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw2_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw2_btn, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw2_btn, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw2_btn, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw2_btn, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw3bg ui->onofftime3_sw3bg = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw3bg, LV_OBJ_FLAG_CLICKABLE); // lv_img_set_src(ui->onofftime3_sw3bg, LVGL_PATH(onofftime3_off.png)); if(GET_nvs_Sys_Info_relay3status()&relayfirst_powerflag)//看看是不是上电 {//是上电 按规定设置 if((GET_nvs_Sys_Info_relay3status()&relay_powerflag)==RELAY_STATUS_MEMORY)//断电记忆 恢复断电前(包过重启)的继电器状态 { if(GET_nvs_Sys_Info_relay3()) { //断电前继电器的状态(通电) lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_on.png)); } else//断电前继电器的状态(断电) { lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_off.png)); } } else if((GET_nvs_Sys_Info_relay3status()&relay_powerflag)==RELAY_STATUS_ON)//通电 { SET_nvs_Sys_Info_relay3(true);//强制设置为开(通电) lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_on.png)); } else //if((GET_nvs_Sys_Info_relay3status()&relay_powerflag)==RELAY_STATUS_OFF)//断电 默认 { SET_nvs_Sys_Info_relay3(false);//强制设置为关(断电) lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_off.png)); } } else {//不是上电 if(GET_nvs_Sys_Info_relay3()) {//开 lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_on.png)); } else {//关 lv_img_set_src(guider_ui.onofftime3_sw3bg,LVGL_PATH(onofftime3_off.png)); } } lv_img_set_pivot(ui->onofftime3_sw3bg, 50,50); lv_img_set_angle(ui->onofftime3_sw3bg, 0); lv_obj_set_pos(ui->onofftime3_sw3bg, 340, 280); lv_obj_set_size(ui->onofftime3_sw3bg, 122, 96); //Write style for onofftime3_sw3bg, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw3bg, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw3_light_icon ui->onofftime3_sw3_light_icon = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_sw3_light_icon, LV_OBJ_FLAG_CLICKABLE); // lv_img_set_src(ui->onofftime3_sw3_light_icon, LVGL_PATH(lighgt_icon_09.png)); if(GET_nvs_Sys_Info_relay3icon())//判断是否使用新的icon { lv_img_set_src(ui->onofftime3_sw3_light_icon,onoff_switchlight_icon_ary[GET_nvs_Sys_Info_relay3icon()]); } else { lv_img_set_src(ui->onofftime3_sw3_light_icon,LVGL_PATH(lighgt_icon_09.png));//icon } lv_img_set_pivot(ui->onofftime3_sw3_light_icon, 50,50); lv_img_set_angle(ui->onofftime3_sw3_light_icon, 0); lv_obj_set_pos(ui->onofftime3_sw3_light_icon, 376, 288); lv_obj_set_size(ui->onofftime3_sw3_light_icon, 50, 50); //Write style for onofftime3_sw3_light_icon, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_sw3_light_icon, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw3_label ui->onofftime3_sw3_label = lv_label_create(ui->onofftime3); //lv_label_set_text(ui->onofftime3_sw3_label, "Light strip"); if( strlen((const char*)nvs_Sys_Info_SysInfo.relay3.Label) )//用户自己设置的文字(自由设置 不分语言) { lv_label_set_text_fmt(ui->onofftime3_sw3_label, "%s",nvs_Sys_Info_SysInfo.relay3.Label); } else { lv_label_set_text(ui->onofftime3_sw3_label,Menu_List[GET_nvs_Sys_Info_language()][MENU_LIST_Lightstrip]); } lv_label_set_long_mode(ui->onofftime3_sw3_label, LV_LABEL_LONG_DOT); lv_obj_set_pos(ui->onofftime3_sw3_label, 340, 346); lv_obj_set_size(ui->onofftime3_sw3_label, 120, 20); //Write style for onofftime3_sw3_label, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw3_label, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw3_label, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw3_label, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_letter_space(ui->onofftime3_sw3_label, 2, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_line_space(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw3_label, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw3_label, 0, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_sw3_btn ui->onofftime3_sw3_btn = lv_btn_create(ui->onofftime3); ui->onofftime3_sw3_btn_label = lv_label_create(ui->onofftime3_sw3_btn); lv_label_set_text(ui->onofftime3_sw3_btn_label, ""); lv_label_set_long_mode(ui->onofftime3_sw3_btn_label, LV_LABEL_LONG_WRAP); lv_obj_align(ui->onofftime3_sw3_btn_label, LV_ALIGN_CENTER, 0, 0); lv_obj_set_style_pad_all(ui->onofftime3_sw3_btn, 0, LV_STATE_DEFAULT); lv_obj_set_width(ui->onofftime3_sw3_btn_label, LV_PCT(100)); lv_obj_set_pos(ui->onofftime3_sw3_btn, 350, 288); lv_obj_set_size(ui->onofftime3_sw3_btn, 100, 80); //Write style for onofftime3_sw3_btn, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_bg_opa(ui->onofftime3_sw3_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui->onofftime3_sw3_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_sw3_btn, 15, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_sw3_btn, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_sw3_btn, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_sw3_btn, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_sw3_btn, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_sw3_btn, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_clock_bg ui->onofftime3_clock_bg = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_clock_bg, LV_OBJ_FLAG_CLICKABLE); lv_img_set_src(ui->onofftime3_clock_bg, LVGL_PATH(clock_bg.png)); lv_img_set_pivot(ui->onofftime3_clock_bg, 50,50); lv_img_set_angle(ui->onofftime3_clock_bg, 0); lv_obj_set_pos(ui->onofftime3_clock_bg, 18, 48); lv_obj_set_size(ui->onofftime3_clock_bg, 300, 300); //Write style for onofftime3_clock_bg, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_clock_bg, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_clock_time ui->onofftime3_clock_time = lv_label_create(ui->onofftime3); //lv_label_set_text(ui->onofftime3_clock_time, "Wed September 18, 2024"); lv_label_set_long_mode(ui->onofftime3_clock_time, LV_LABEL_LONG_WRAP); lv_obj_set_pos(ui->onofftime3_clock_time, 108, 255); lv_obj_set_size(ui->onofftime3_clock_time, 140, 26); //Write style for onofftime3_clock_time, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_clock_time, lv_color_hex(0x9D7931), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_clock_time, &lv_font_DroidSansFallback_12, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_clock_time, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_letter_space(ui->onofftime3_clock_time, 2, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_line_space(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_clock_time, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_clock_time, 0, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_clock_date ui->onofftime3_clock_date = lv_label_create(ui->onofftime3); //lv_label_set_text(ui->onofftime3_clock_date, "Wed September 18, 2024"); lv_label_set_long_mode(ui->onofftime3_clock_date, LV_LABEL_LONG_WRAP); lv_obj_set_pos(ui->onofftime3_clock_date, 2, 353); lv_obj_set_size(ui->onofftime3_clock_date, 280, 24); //Write style for onofftime3_clock_date, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_border_width(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_radius(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui->onofftime3_clock_date, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui->onofftime3_clock_date, &lv_font_simsun_16, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui->onofftime3_clock_date, 255, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_letter_space(ui->onofftime3_clock_date, 2, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_line_space(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui->onofftime3_clock_date, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_top(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_pad_left(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(ui->onofftime3_clock_date, 0, LV_PART_MAIN|LV_STATE_DEFAULT); if(GET_nvs_Sys_Info_language()==LANG_CH) { lv_label_set_text_fmt(ui->onofftime3_clock_time,"%d年%d月%d日,%s",timeinfo.tm_year+1900,timeinfo.tm_mon+1,timeinfo.tm_mday,Menu_List[GET_nvs_Sys_Info_language()][timeinfo.tm_wday+MENU_LIST_SUN]); lv_label_set_text_fmt(ui->onofftime3_clock_date,"%d年%d月%d日,%s",timeinfo.tm_year+1900,timeinfo.tm_mon+1,timeinfo.tm_mday,Menu_List[GET_nvs_Sys_Info_language()][timeinfo.tm_wday+MENU_LIST_SUN]); } else { lv_label_set_text_fmt(ui->onofftime3_clock_time,"%s %s %d, %d",Menu_List[GET_nvs_Sys_Info_language()][timeinfo.tm_wday+MENU_LIST_SUN],Menu_monList[timeinfo.tm_mon+1],timeinfo.tm_mday,timeinfo.tm_year+1900); lv_label_set_text_fmt(ui->onofftime3_clock_date,"%s %s %d, %d",Menu_List[GET_nvs_Sys_Info_language()][timeinfo.tm_wday+MENU_LIST_SUN],Menu_monList[timeinfo.tm_mon+1],timeinfo.tm_mday,timeinfo.tm_year+1900); } //Write codes onofftime3_clock_hour ui->onofftime3_clock_hour = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_clock_hour, LV_OBJ_FLAG_CLICKABLE); lv_img_set_src(ui->onofftime3_clock_hour, LVGL_PATH(clock_hour.png)); lv_img_set_pivot(ui->onofftime3_clock_hour, 13,150); //lv_img_set_angle(ui->onofftime3_clock_hour, 0); lv_obj_set_pos(ui->onofftime3_clock_hour, 155, 48); lv_obj_set_size(ui->onofftime3_clock_hour, 26, 300); //Write style for onofftime3_clock_hour, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_clock_hour, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_clock_min ui->onofftime3_clock_min = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_clock_min, LV_OBJ_FLAG_CLICKABLE); lv_img_set_src(ui->onofftime3_clock_min, LVGL_PATH(clock_min.png)); lv_img_set_pivot(ui->onofftime3_clock_min, 13,150); //lv_img_set_angle(ui->onofftime3_clock_min, 600); lv_obj_set_pos(ui->onofftime3_clock_min, 155, 48); lv_obj_set_size(ui->onofftime3_clock_min, 26, 300); //Write style for onofftime3_clock_min, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_clock_min, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //Write codes onofftime3_clock_second ui->onofftime3_clock_second = lv_img_create(ui->onofftime3); lv_obj_add_flag(ui->onofftime3_clock_second, LV_OBJ_FLAG_CLICKABLE); lv_img_set_src(ui->onofftime3_clock_second, LVGL_PATH(clock_second.png)); lv_img_set_pivot(ui->onofftime3_clock_second, 13,150); //lv_img_set_angle(ui->onofftime3_clock_second, 1200); lv_obj_set_pos(ui->onofftime3_clock_second, 155, 48); lv_obj_set_size(ui->onofftime3_clock_second, 26, 300); //Write style for onofftime3_clock_second, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(ui->onofftime3_clock_second, 255, LV_PART_MAIN|LV_STATE_DEFAULT); //The custom code of onofftime3. int16_t angle=timeinfo.tm_sec*60;//一圈是60秒 1秒是1格 每秒6°(精度0.1° 所以是60代表6°) printf("ss:%d\r\n",angle); lv_img_set_angle(ui->onofftime3_clock_second, angle); //分 angle=now%3600;//0.1° now的单位是秒 printf("mm:%d\r\n",angle); lv_img_set_angle(ui->onofftime3_clock_min, angle); //时 angle=((timeinfo.tm_hour%12)*60+timeinfo.tm_min)*5;//0.5° printf("hh-angle:%d\r\n",angle); lv_img_set_angle(ui->onofftime3_clock_hour, angle);// //Update current screen layout. lv_obj_update_layout(ui->onofftime3); //取消上电标记 if(GET_nvs_Sys_Info_relay1status()&relayfirst_powerflag)//看看是不是上电 {// SET_nvs_Sys_Info_relay1status(GET_nvs_Sys_Info_relay1status()&(~relayfirst_powerflag));//取消上电标记 } if(GET_nvs_Sys_Info_relay2status()&relayfirst_powerflag)//看看是不是上电 {// SET_nvs_Sys_Info_relay2status(GET_nvs_Sys_Info_relay2status()&(~relayfirst_powerflag));//取消上电标记 } if(GET_nvs_Sys_Info_relay3status()&relayfirst_powerflag)//看看是不是上电 {// SET_nvs_Sys_Info_relay3status(GET_nvs_Sys_Info_relay3status()&(~relayfirst_powerflag));//取消上电标记 } if(GET_nvs_Sys_Info_relay4status()&relayfirst_powerflag)//看看是不是上电 {// SET_nvs_Sys_Info_relay4status(GET_nvs_Sys_Info_relay4status()&(~relayfirst_powerflag));//取消上电标记 } nvs_eepom_sysInfo_update(); //Init events for screen. events_init_onofftime3(ui); } #endif