/* * Copyright 2024 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 #include #include #include #include #include "rtthread.h" #include "rtdevice.h" #include "rtconfig.h" #include #include #include "lvgl.h" #include #include "gui_guider.h" #if LV_USE_FREEMASTER #include "gg_external_data.h" #endif #include "aic_ui.h" #include "events_init.h" #include "custom.h" #include "nvs_eepom.h" #include "zigbee_fun.h" #include "esp32_clock.h" #include "app_sr_fun.h" #define DBG_TAG "guider" #define DBG_LVL DBG_INFO #include lv_ui guider_ui; //投影仪的音量 const char Air_Projector_volume_ary[5][64]= { "L:/rodata/lvgl_data/projector_vol_1.png", "L:/rodata/lvgl_data/projector_vol_2.png", "L:/rodata/lvgl_data/projector_vol_3.png", "L:/rodata/lvgl_data/projector_vol_4.png", "L:/rodata/lvgl_data/projector_vol_5.png", }; //模式//5 const char Air_conditioner_mode_ary[5][64]= { "L:/rodata/lvgl_data/air_mode1.png", "L:/rodata/lvgl_data/air_mode2.png", "L:/rodata/lvgl_data/air_mode3.png", "L:/rodata/lvgl_data/air_mode4.png", "L:/rodata/lvgl_data/air_mode5.png", }; //风速//4 const char Air_conditioner_fan_ary[4][64]= { "L:/rodata/lvgl_data/air_fan1.png", "L:/rodata/lvgl_data/air_fan2.png", "L:/rodata/lvgl_data/air_fan3.png", "L:/rodata/lvgl_data/air_fan4.png", }; //风向//5 const char Air_conditioner_dir_ary[5][64]= { "L:/rodata/lvgl_data/air_dir1.png", "L:/rodata/lvgl_data/air_dir2.png", "L:/rodata/lvgl_data/air_dir3.png", "L:/rodata/lvgl_data/air_dir4.png", "L:/rodata/lvgl_data/air_dir5.png", }; const char scene_iconbgimg_ary[12][64]= { "",//占位,用于表示使用默认图标 "L:/rodata/lvgl_data/scenbg1.png", "L:/rodata/lvgl_data/scenbg2.png", "L:/rodata/lvgl_data/scenbg3.png", "L:/rodata/lvgl_data/scenbg4.png", "L:/rodata/lvgl_data/scenbg5.png", "L:/rodata/lvgl_data/scenbg6.png", "L:/rodata/lvgl_data/scenbg7.png", "L:/rodata/lvgl_data/scenbg8.png", "L:/rodata/lvgl_data/scenbg9.png", "L:/rodata/lvgl_data/scenbg10.png", "L:/rodata/lvgl_data/scenbg11.png", }; const char onoff_keyligthimgon_ary[16][64]= { "",//占位,用于表示使用默认图标//0 LVGL_PATH(onofflighton1.png),// "L:/rodata/lvgl_data/onofflighton1.png", LVGL_PATH(onofflighton2.png),// "L:/rodata/lvgl_data/onofflighton2.png", LVGL_PATH(onofflighton3.png),// "L:/rodata/lvgl_data/onofflighton3.png", LVGL_PATH(onofflighton4.png),// "L:/rodata/lvgl_data/onofflighton4.png", LVGL_PATH(onofflighton5.png),// "L:/rodata/lvgl_data/onofflighton5.png", LVGL_PATH(onofflighton6.png),// "L:/rodata/lvgl_data/onofflighton6.png", LVGL_PATH(onofflighton7.png),// "L:/rodata/lvgl_data/onofflighton7.png", LVGL_PATH(onofflighton8.png),// "L:/rodata/lvgl_data/onofflighton8.png", LVGL_PATH(onofflighton9.png),// "L:/rodata/lvgl_data/onofflighton9.png", LVGL_PATH(onofflighton10.png),// "L:/rodata/lvgl_data/onofflighton10.png", LVGL_PATH(onofflighton11.png),// "L:/rodata/lvgl_data/onofflighton11.png", LVGL_PATH(onofflighton12.png),// "L:/rodata/lvgl_data/onofflighton12.png", LVGL_PATH(onofflighton13.png),// "L:/rodata/lvgl_data/onofflighton13.png", LVGL_PATH(onofflighton14.png),// "L:/rodata/lvgl_data/onofflighton14.png", LVGL_PATH(onofflighton15.png),// "L:/rodata/lvgl_data/onofflighton15.png", }; const char onoff_keyligthimgoff_ary[16][64]= { "",//占位,用于表示使用默认图标 LVGL_PATH(onofflightoff1.png),// "L:/rodata/lvgl_data/onofflightoff1.png", LVGL_PATH(onofflightoff2.png),// "L:/rodata/lvgl_data/onofflightoff2.png", LVGL_PATH(onofflightoff3.png),// "L:/rodata/lvgl_data/onofflightoff3.png", LVGL_PATH(onofflightoff4.png),// "L:/rodata/lvgl_data/onofflightoff4.png", LVGL_PATH(onofflightoff5.png),// "L:/rodata/lvgl_data/onofflightoff5.png", LVGL_PATH(onofflightoff6.png),// "L:/rodata/lvgl_data/onofflightoff6.png", LVGL_PATH(onofflightoff7.png),// "L:/rodata/lvgl_data/onofflightoff7.png", LVGL_PATH(onofflightoff8.png),// "L:/rodata/lvgl_data/onofflightoff8.png", LVGL_PATH(onofflightoff9.png),// "L:/rodata/lvgl_data/onofflightoff9.png", LVGL_PATH(onofflightoff10.png),// "L:/rodata/lvgl_data/onofflightoff10.png", LVGL_PATH(onofflightoff11.png),// "L:/rodata/lvgl_data/onofflightoff11.png", LVGL_PATH(onofflightoff12.png),// "L:/rodata/lvgl_data/onofflightoff12.png", LVGL_PATH(onofflightoff13.png),// "L:/rodata/lvgl_data/onofflightoff13.png", LVGL_PATH(onofflightoff14.png),// "L:/rodata/lvgl_data/onofflightoff14.png", LVGL_PATH(onofflightoff15.png),// "L:/rodata/lvgl_data/onofflightoff15.png", }; const char onoff_switchlight_icon_ary[20][64]= { "",//占位,用于表示使用默认图标//0 "L:/rodata/lvgl_data/lighgt_icon_01.png",//LVGL_PATH(lighgt_icon_01.png),// "L:/rodata/lvgl_data/onofflighton1.png", "L:/rodata/lvgl_data/lighgt_icon_02.png",//LVGL_PATH(lighgt_icon_02.png),// "L:/rodata/lvgl_data/onofflighton2.png", "L:/rodata/lvgl_data/lighgt_icon_03.png",//LVGL_PATH(lighgt_icon_03.png),// "L:/rodata/lvgl_data/onofflighton3.png", "L:/rodata/lvgl_data/lighgt_icon_04.png",//LVGL_PATH(lighgt_icon_04.png),// "L:/rodata/lvgl_data/onofflighton4.png", "L:/rodata/lvgl_data/lighgt_icon_05.png",//LVGL_PATH(lighgt_icon_05.png),// "L:/rodata/lvgl_data/onofflighton5.png", "L:/rodata/lvgl_data/lighgt_icon_06.png",//LVGL_PATH(lighgt_icon_06.png),// "L:/rodata/lvgl_data/onofflighton6.png", "L:/rodata/lvgl_data/lighgt_icon_07.png",//LVGL_PATH(lighgt_icon_07.png),// "L:/rodata/lvgl_data/onofflighton7.png", "L:/rodata/lvgl_data/lighgt_icon_08.png",//LVGL_PATH(lighgt_icon_08.png),// "L:/rodata/lvgl_data/onofflighton8.png", "L:/rodata/lvgl_data/lighgt_icon_09.png",//LVGL_PATH(lighgt_icon_09.png),// "L:/rodata/lvgl_data/onofflighton9.png", "L:/rodata/lvgl_data/lighgt_icon_10.png",//LVGL_PATH(lighgt_icon_10.png),// "L:/rodata/lvgl_data/onofflighton10.png", "L:/rodata/lvgl_data/lighgt_icon_11.png",//LVGL_PATH(lighgt_icon_11.png),// "L:/rodata/lvgl_data/onofflighton11.png", "L:/rodata/lvgl_data/lighgt_icon_12.png",//LVGL_PATH(lighgt_icon_12.png),// "L:/rodata/lvgl_data/onofflighton12.png", "L:/rodata/lvgl_data/lighgt_icon_13.png",//LVGL_PATH(lighgt_icon_13.png),// "L:/rodata/lvgl_data/onofflighton13.png", "L:/rodata/lvgl_data/lighgt_icon_14.png",//LVGL_PATH(lighgt_icon_14.png),// "L:/rodata/lvgl_data/onofflighton14.png", "L:/rodata/lvgl_data/lighgt_icon_15.png",//LVGL_PATH(lighgt_icon_15.png),// "L:/rodata/lvgl_data/onofflighton15.png", "L:/rodata/lvgl_data/lighgt_icon_16.png",//LVGL_PATH(lighgt_icon_16.png),// "L:/rodata/lvgl_data/onofflighton15.png", "L:/rodata/lvgl_data/lighgt_icon_17.png",//LVGL_PATH(lighgt_icon_17.png),// "L:/rodata/lvgl_data/onofflighton15.png", "L:/rodata/lvgl_data/lighgt_icon_18.png",//LVGL_PATH(lighgt_icon_18.png),// "L:/rodata/lvgl_data/onofflighton15.png", "L:/rodata/lvgl_data/lighgt_icon_19.png",//LVGL_PATH(lighgt_icon_19.png),// "L:/rodata/lvgl_data/onofflighton15.png", }; // lv_font_t *&lv_font_DroidSansFallback_12; // lv_font_t *&lv_font_DroidSansFallback_14; // lv_font_t *&lv_font_simsun_16; // lv_font_t *&lv_font_DroidSansFallback_20; // lv_font_t *lv_font_simsun_48; // lv_font_t * lv_font_DroidSansFallback_60; lv_font_t *ui_font_init(char *path, int size) { printf("path:%s\r\n",path); #if LVGL_VERSION_MAJOR == 8 static lv_ft_info_t info; info.name = path; info.weight = size; info.style = FT_FONT_STYLE_NORMAL; info.mem = NULL; if (!lv_ft_font_init(&info)) return NULL; return info.font; #else lv_font_t *font = lv_freetype_font_create(path, LV_FREETYPE_FONT_RENDER_MODE_BITMAP, size, LV_FREETYPE_FONT_STYLE_NORMAL); return font; #endif //LVGL_VERSION_MAJOR //return NULL; } //上电加载freetype字库及字体 void ui_font_load(void) { // &lv_font_DroidSansFallback_12 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 12); // if (!&lv_font_DroidSansFallback_12) { // //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_12"); // //return; // rt_kprintf("Failed to init &lv_font_DroidSansFallback_12\n"); // } // else{ // rt_kprintf("suss to init &lv_font_DroidSansFallback_12\n"); // } // &lv_font_DroidSansFallback_14 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 14); // if (!&lv_font_DroidSansFallback_14) { // //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_14"); // //return; // rt_kprintf("Failed to init &lv_font_DroidSansFallback_14\n"); // } // else{ // rt_kprintf("suss to init &lv_font_DroidSansFallback_14\n"); // } // &lv_font_simsun_16 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 16); // if (!&lv_font_simsun_16) { // //LV_LOG_ERROR("Failed to init &lv_font_simsun_16"); // //return; // rt_kprintf("Failed to init &lv_font_simsun_16\n"); // } // else{ // rt_kprintf("suss to init &lv_font_simsun_16\n"); // } // &lv_font_DroidSansFallback_20 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 20); // if (!&lv_font_DroidSansFallback_20) { // //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_20"); // //return; // rt_kprintf("Failed to init &lv_font_DroidSansFallback_20\n"); // } // else{ // rt_kprintf("suss to init &lv_font_DroidSansFallback_20\n"); // } // lv_font_simsun_48 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 48); // if (!lv_font_simsun_48) { // //LV_LOG_ERROR("Failed to init lv_font_simsun_48"); // //return; // rt_kprintf("Failed to init lv_font_simsun_48\n"); // } // else{ // rt_kprintf("suss to init lv_font_simsun_48\n"); // } // lv_font_DroidSansFallback_60 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 60); // if (!lv_font_DroidSansFallback_60) { // //LV_LOG_ERROR("Failed to init lv_font_DroidSansFallback_60"); // //return; // rt_kprintf("Failed to init lv_font_DroidSansFallback_60\n"); // } // else{ // rt_kprintf("suss to init lv_font_DroidSansFallback_60\n"); // } } void ui_init_style(lv_style_t * style) { if (style->prop_cnt > 1) lv_style_reset(style); else lv_style_init(style); } void ui_load_scr_animation(lv_ui *ui, lv_obj_t ** new_scr, bool new_scr_del, bool * old_scr_del, ui_setup_scr_t setup_scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool is_clean, bool auto_del) { lv_obj_t * act_scr = lv_scr_act(); #if LV_USE_FREEMASTER if(auto_del) { gg_edata_task_clear(act_scr); } #endif if (auto_del && is_clean) { lv_obj_clean(act_scr); } if (new_scr_del) { setup_scr(ui); } lv_scr_load_anim(*new_scr, anim_type, time, delay, auto_del); *old_scr_del = auto_del; } void ui_move_animation(void * var, int32_t duration, int32_t delay, int32_t x_end, int32_t y_end, lv_anim_path_cb_t path_cb, uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay, lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb) { lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_var(&anim, var); lv_anim_set_time(&anim, duration); lv_anim_set_delay(&anim, delay); lv_anim_set_path_cb(&anim, path_cb); lv_anim_set_repeat_count(&anim, repeat_cnt); lv_anim_set_repeat_delay(&anim, repeat_delay); lv_anim_set_playback_time(&anim, playback_time); lv_anim_set_playback_delay(&anim, playback_delay); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_x); lv_anim_set_values(&anim, lv_obj_get_x(var), x_end); lv_anim_start(&anim); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_y); lv_anim_set_values(&anim, lv_obj_get_y(var), y_end); lv_anim_set_start_cb(&anim, start_cb); lv_anim_set_ready_cb(&anim, ready_cb); lv_anim_set_deleted_cb(&anim, deleted_cb); lv_anim_start(&anim); } void ui_scale_animation(void * var, int32_t duration, int32_t delay, int32_t width, int32_t height, lv_anim_path_cb_t path_cb, uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay, lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb) { lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_var(&anim, var); lv_anim_set_time(&anim, duration); lv_anim_set_delay(&anim, delay); lv_anim_set_path_cb(&anim, path_cb); lv_anim_set_repeat_count(&anim, repeat_cnt); lv_anim_set_repeat_delay(&anim, repeat_delay); lv_anim_set_playback_time(&anim, playback_time); lv_anim_set_playback_delay(&anim, playback_delay); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_width); lv_anim_set_values(&anim, lv_obj_get_width(var), width); lv_anim_start(&anim); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_height); lv_anim_set_values(&anim, lv_obj_get_height(var), height); lv_anim_set_start_cb(&anim, start_cb); lv_anim_set_ready_cb(&anim, ready_cb); lv_anim_set_deleted_cb(&anim, deleted_cb); lv_anim_start(&anim); } void ui_img_zoom_animation(void * var, int32_t duration, int32_t delay, int32_t zoom, lv_anim_path_cb_t path_cb, uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay, lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb) { lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_var(&anim, var); lv_anim_set_time(&anim, duration); lv_anim_set_delay(&anim, delay); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_zoom); lv_anim_set_values(&anim, lv_img_get_zoom(var), zoom); lv_anim_set_path_cb(&anim, path_cb); lv_anim_set_repeat_count(&anim, repeat_cnt); lv_anim_set_repeat_delay(&anim, repeat_delay); lv_anim_set_playback_time(&anim, playback_time); lv_anim_set_playback_delay(&anim, playback_delay); lv_anim_set_start_cb(&anim, start_cb); lv_anim_set_ready_cb(&anim, ready_cb); lv_anim_set_deleted_cb(&anim, deleted_cb); lv_anim_start(&anim); } void ui_img_rotate_animation(void * var, int32_t duration, int32_t delay, lv_coord_t x, lv_coord_t y, int32_t rotate, lv_anim_path_cb_t path_cb, uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay, lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb) { lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_var(&anim, var); lv_anim_set_time(&anim, duration); lv_anim_set_delay(&anim, delay); lv_img_set_pivot(var, x, y); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_angle); lv_anim_set_values(&anim, 0, rotate*10); lv_anim_set_path_cb(&anim, path_cb); lv_anim_set_repeat_count(&anim, repeat_cnt); lv_anim_set_repeat_delay(&anim, repeat_delay); lv_anim_set_playback_time(&anim, playback_time); lv_anim_set_playback_delay(&anim, playback_delay); lv_anim_set_start_cb(&anim, start_cb); lv_anim_set_ready_cb(&anim, ready_cb); lv_anim_set_deleted_cb(&anim, deleted_cb); lv_anim_start(&anim); } void init_scr_del_flag(lv_ui *ui) { ui->screen_main_del = true; ui->setting_del = true; ui->mianinfopage_del = true; ui->langinfopage_del = true; ui->displayinfopage_del = true; ui->smartinfopage_del = true; ui->firstinfopage_del = true; ui->relayinfopage_del = true; ui->scene_del = true; ui->onoff_del = true; ui->onoff1_del = true; ui->onoff2_del = true; ui->onoff3_del = true; ui->onoff4_del = true; ui->onofftime1_del = true; ui->onofftime2_del = true; ui->onofftime3_del = true; ui->onofftime4_del = true; ui->dimmer_del = true; ui->dimmerinfo_del = true; ui->curtain_del = true; ui->device_del = true; ui->dimmerinfo_del = true; ui->curtaininfo_del = true; ui->rollersinfo_del = true; ui->screensaver_del = true; ui->aircontrol_del = true; ui->projectorcontrol_del = true; } void setup_ui(lv_ui *ui) { init_scr_del_flag(ui); setup_scr_screen_main(ui); lv_scr_load(ui->screen_main); } rt_thread_t monitor_thread = RT_NULL; void print_custom_memory_info(void) { rt_size_t total,used,max_used; rt_memory_info(&total,&used,&max_used); // 打印线程信息 rt_kprintf("Total memory: %d bytes\n", total); rt_kprintf("Used memory: %d bytes\n", used); rt_kprintf("max Used memory: %d bytes\n", max_used); } extern long list_thread(void); void monitorTask(void *pvParameter) { // lv_mem_monitor_t mon; while(1) { list_thread(); print_custom_memory_info(); rt_thread_mdelay(5000);// //print_custom_memory_info(); } } #ifdef CONFIG_STARTUP_ANIMATION lv_obj_t *startmain_container; lv_anim_t startanim; // bar对象动画回调函数 static void obj_bar_anim_exec_callback(void * bar, int32_t value) { if (bar != NULL) { lv_bar_set_value((lv_obj_t *)bar, value, LV_ANIM_ON); // 设置进度条对象的值 } } //Call the callback function at the end static void obj_bar_anim_end_callback(lv_anim_t *anim) { printf("anim_end\r\n"); //删除动画 删除启动页 if(startmain_container) { lv_obj_del(startmain_container); startmain_container=NULL; } setup_ui(&guider_ui); events_init(&guider_ui); custom_init(&guider_ui);//有custom_task任务调用初始化 zigbee_uart_int(); esp32Timeinit(); } static void start_log_aimg_application(void) { lv_obj_t * startmain_container = lv_obj_create(lv_scr_act()); if ( startmain_container == NULL) { printf("[%s:%d] create startmain_container failed\n", __FUNCTION__, __LINE__); return; } lv_obj_set_style_pad_all( startmain_container, 0, 0); lv_obj_set_style_border_width( startmain_container, 0, 0);//边框宽 lv_obj_set_style_radius( startmain_container, 0, 0);//圆角大小 lv_obj_set_size( startmain_container, LV_PCT(100), LV_PCT(100)); // 设置尺寸 lv_obj_set_style_bg_opa( startmain_container, LV_OPA_100, 0); // 设置背景不透明度 lv_obj_set_style_bg_color( startmain_container, lv_color_hex(0), 0); // 设置背景颜色 lv_obj_center( startmain_container); #if defined(CONFIG_CUSTOM_GOLDEN)//金安启动logo #elif defined(CONFIG_CUSTOM_MOHAMMAD_SOHAIB)// //Write codes screen_img_1 lv_obj_t *startlogo_img_1 = lv_img_create(startmain_container); lv_obj_set_size(startlogo_img_1, 279, 75); lv_obj_center( startlogo_img_1); lv_img_set_src(startlogo_img_1, LVGL_PATH(mohammad_startlogo.png)); //Write style for startlogo_img_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_img_opa(startlogo_img_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT); // static lv_style_t style_bg; // lv_style_init(&style_bg); // lv_style_reset(&style_bg); // lv_style_set_border_color(&style_bg, lv_color_hex(0xFFFFFF)); // 设置边框颜色 // lv_style_set_border_width(&style_bg, 2); // 设置边框宽度 // lv_style_set_pad_all(&style_bg, 6); // lv_style_set_radius(&style_bg, 6); // 设置圆角弧度 // static lv_style_t style_indic; // lv_style_reset(&style_indic); // lv_style_init(&style_indic); // lv_style_set_bg_opa(&style_indic, LV_OPA_COVER); // 设置背景不透明度 // lv_style_set_bg_color(&style_indic, lv_color_hex(0xFFFFFF)); // lv_style_set_radius(&style_indic, 3); static lv_style_t style_bg; lv_style_init(&style_bg); lv_style_reset(&style_bg); lv_style_set_border_color(&style_bg, lv_color_hex(0x000000)); // 设置边框颜色 lv_style_set_border_width(&style_bg, 0); // 设置边框宽度 lv_style_set_pad_all(&style_bg, 6); lv_style_set_radius(&style_bg, 6); // 设置圆角弧度 static lv_style_t style_indic; lv_style_reset(&style_indic); lv_style_init(&style_indic); lv_style_set_bg_opa(&style_indic, LV_OPA_COVER); // 设置背景不透明度 lv_style_set_bg_color(&style_indic, lv_color_hex(0x000000)); lv_style_set_radius(&style_indic, 3); lv_obj_t * obj_bar = lv_bar_create( startmain_container); if (obj_bar != NULL) { lv_obj_remove_style_all(obj_bar); // 清除所有样式 lv_obj_add_style(obj_bar, &style_bg, 0); lv_obj_add_style(obj_bar, &style_indic, LV_PART_INDICATOR); lv_obj_set_size(obj_bar, 400, 20); lv_obj_align(obj_bar, LV_ALIGN_CENTER, 0,200); lv_anim_init(&startanim); // 初始化动画 lv_anim_set_exec_cb(&startanim, obj_bar_anim_exec_callback); // 添加回调函数 startanim.ready_cb=&obj_bar_anim_end_callback;//动画效果结束后的回调函数,可以根据需求自行填写,lvgl内部其余组件一般是用这个回调做一些收尾工作,比如释放内存 lv_anim_set_time(&startanim, 2000); // 设置动画时长 lv_anim_set_var(&startanim, obj_bar); // 动画绑定对象 lv_anim_set_values(&startanim, 0, 100); // 设置开始值和结束值 lv_anim_set_repeat_count(&startanim, 1); // 重复次数,默认值为1 LV_ANIM_REPEAT_INFINIT用于无限重复 lv_anim_start(&startanim); // 应用动画效果 } #else #endif } #endif void gui_guider_init(void) { rt_kprintf("nvs_eepom_init\r\n"); #if 1 ui_font_load();//加载ttf字库及字号 // //Write codes dimmer_group1_templabel // lv_obj_t *dimmer_group1_templabel = lv_label_create(lv_scr_act()); // //lv_obj_set_pos(dimmer_group1_templabel, 0, 38); // lv_obj_set_size(dimmer_group1_templabel, 480, 50); // lv_obj_set_align(dimmer_group1_templabel, LV_ALIGN_CENTER); // lv_label_set_text(dimmer_group1_templabel, "гджзлмнр椭粟棘酣酥硝硫颊雳翘凿棠晰鼎喳遏晾畴跋跛蛔蜒"); // lv_obj_set_style_text_color(dimmer_group1_templabel, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); // lv_obj_set_style_text_font(dimmer_group1_templabel, &lv_font_DroidSansFallback_14, LV_PART_MAIN|LV_STATE_DEFAULT); nvs_eepom_init(); // rt_kprintf("gui_guider_init\r\n"); //Create a GUI-Guider app memset(&guider_ui,0,sizeof(guider_ui));//统一置0 #if defined(CONFIG_STARTUP_ANIMATION) start_log_aimg_application(); #else setup_ui(&guider_ui); events_init(&guider_ui); custom_init(&guider_ui);//有custom_task任务调用初始化 zigbee_uart_int(); esp32Timeinit(); #endif ////speech_uart_int(); //上电设置亮度 disp_driver_backlight_set(GET_nvs_Sys_Info_backlight()); LOG_I("backlight:0x%d",GET_nvs_Sys_Info_backlight()); //创建任务 监控内存 monitor_thread = rt_thread_create("monitor", //名称 monitorTask, //线程代码 RT_NULL, //参数 4096, //栈大小 11, //优先级 10); //时间片 if (monitor_thread != RT_NULL) { rt_thread_startup(monitor_thread); //线程进入就绪态 } else { LOG_I("monitor_thread create failure\n"); } #else // #define IMG_SWICH_test "L:/rodata/lvgl_data/test1.png" lv_obj_t *testimg_obj=lv_img_create(lv_scr_act()); lv_obj_set_size(testimg_obj, 386, 128); lv_obj_center(testimg_obj); lv_img_set_src(testimg_obj, LVGL_PATH(dimmer_color_temp_info.png)); #endif } //亮度 0~100 void disp_driver_backlight_set(int brightness) { //turn on the LcD backlight #if defined(KERNEL_RTTHREAD) && defined(AIC_PWM_BACKLIGHT_CHANNEL) struct rt_device_pwm *pwm_dev; pwm_dev = (struct rt_device_pwm *)rt_device_find("pwm"); /* pwm frequency: 1KHz = 1000000ns */ rt_pwm_set(pwm_dev, AIC_PWM_BACKLIGHT_CHANNEL,1000000, 10000 * brightness); rt_pwm_enable(pwm_dev, AIC_PWM_BACKLIGHT_CHANNEL); #endif }