#include "lvgl.h" #include "img_def.h" #include "mxc_meter.h" #include "img_basic.h" #include "lan_str_table.h" //全局变量定时器 lv_timer_t* pTime_refresh_timer; /******************1.函数声明******************/ void Generator_src_win(lv_obj_t * scr_parent_main); void Generator_SubUI_Gtor_src_win(lv_obj_t * scr_parent_main); void Generator_SubUI_ERROR_src_win(lv_obj_t * scr_parent_main); static void WinKey_event_MainToGtor_handle(lv_event_t* e); static void WinKey_event_GtorToErr_handle(lv_event_t* e); static void WinKey_event_ErrToMain_handle(lv_event_t* e); /*****************2.函数实现********************/ static void WinKey_event_MainToGtor_handle(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); uint8_t key_code = 0; uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("=============WinKey_event_handle==========.\n"); if (code == LV_EVENT_KEY) { uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("key_code = 0x%02x . code = 0x%02d \n", key_code, code); switch (key_code) { case LV_KEY_W: printf("LV_KEY_ENTER.\n"); //close_ui_refresh_timer(); close_all_win(); if(pTime_refresh_timer!=NULL){ lv_timer_del(pTime_refresh_timer); pTime_refresh_timer = NULL; } //主界面进入到类型界面 Generator_SubUI_Gtor_src_win(get_root_win()); break; default: break; } } } static void WinKey_event_GtorToErr_handle(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); uint8_t key_code = 0; uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("=============WinKey_event_handle==========.\n"); if (code == LV_EVENT_KEY) { uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("key_code = 0x%02x . code = 0x%02d \n", key_code, code); switch (key_code) { case LV_KEY_W: printf("LV_KEY_ENTER.\n"); //close_ui_refresh_timer(); close_all_win(); if(pTime_refresh_timer!=NULL){ lv_timer_del(pTime_refresh_timer); pTime_refresh_timer = NULL; } //主界面进入到类型界面 // Generator_SubUI_ERROR_src_win(get_root_win()); Generator_test1_src_win(get_root_win()); break; default: break; } } } static void WinKey_event_ErrToMain_handle(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); uint8_t key_code = 0; uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("=============WinKey_event_handle==========.\n"); if (code == LV_EVENT_KEY) { uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("key_code = 0x%02x . code = 0x%02d \n", key_code, code); switch (key_code) { case LV_KEY_W: printf("LV_KEY_ENTER.\n"); //close_ui_refresh_timer(); close_all_win(); if(pTime_refresh_timer!=NULL){ lv_timer_del(pTime_refresh_timer); pTime_refresh_timer = NULL; } //主界面进入到类型界面 // Generator_src_win(get_root_win()); Generator_test1_src_win(get_root_win()); break; default: break; } } } static void test_win1_handle(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); uint8_t key_code = 0; uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("=============test_win1_handle==========.\n"); if (code == LV_EVENT_KEY) { uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; // printf("key_code = 0x%02x . code = 0x%02d \n", key_code, code); switch (key_code) { case LV_KEY_W: printf("LV_KEY_ENTER.\n"); //close_ui_refresh_timer(); close_all_win(); if(pTime_refresh_timer!=NULL) { lv_timer_del(pTime_refresh_timer); pTime_refresh_timer = NULL; } //主界面进入到类型界面 Generator_test2_src_win(get_root_win()); break; default: break; } } } static void test_win2_handle(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); uint8_t key_code = 0; uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; printf("=============test_win2_handle==========.\n"); if (code == LV_EVENT_KEY) { uint32_t *key = lv_event_get_param(e); key_code = (uint8_t)*key; // printf("key_code = 0x%02x . code = 0x%02d \n", key_code, code); switch (key_code) { case LV_KEY_W: printf("LV_KEY_ENTER.\n"); //close_ui_refresh_timer(); close_all_win(); if(pTime_refresh_timer!=NULL) { lv_timer_del(pTime_refresh_timer); pTime_refresh_timer = NULL; } //主界面进入到类型界面 Generator_src_win(get_root_win()); break; default: break; } } } /******************3.定时器****************/ #if 0 void refresh_MainUItimer_cb(lv_timer_t* pTimer) { static uint16_t arc_num=60,speed=0,voltage=0,current=0,power=0;//转速 电压 电流 功率 static uint8_t oil_quantity=0,time_num=0,load_num=0,frequency_num=0;//油量 时间 负载 频率 static uint8_t arc_flag=0,oil_flag=0; //检查定时器指针合法性 lv_obj_t *parent = pTimer->user_data; if(!lv_obj_is_valid(parent)) { printf("parent lv_obj_is_valid() fail.\n"); return; } if(NULL == parent) { printf("parent NULL\n"); return; } //获取MainUI创建的各子对象的指针 //转速数据 lv_obj_t* arc1 = lv_obj_get_child(parent, 1); lv_obj_t* arc2 = lv_obj_get_child(parent, 2); lv_obj_t* pRotrateNum = lv_obj_get_child(parent, 4); lv_obj_t* pVoltageNum = lv_obj_get_child(parent, 5); lv_obj_t* pCurrentNum = lv_obj_get_child(parent, 6); lv_obj_t* img_bt = lv_obj_get_child(parent, 7); lv_obj_t* img_power = lv_obj_get_child(parent, 8); lv_obj_t* img_error = lv_obj_get_child(parent, 9); lv_obj_t* pOilColor = lv_obj_get_child(parent, 10); lv_obj_t* pRunTime = lv_obj_get_child(parent, 11); lv_obj_t* pLeftTime = lv_obj_get_child(parent, 12); lv_obj_t* pTotalTime = lv_obj_get_child(parent, 13); lv_obj_t* pFreqNum = lv_obj_get_child(parent, 14); lv_obj_t* pPercentNum = lv_obj_get_child(parent, 15); lv_obj_t* pPowerNum = lv_obj_get_child(parent, 17); lv_arc_set_value(arc1,arc_num); lv_arc_set_value(arc2,arc_num); lv_label_set_text_fmt(pRotrateNum, "%d", speed); lv_label_set_text_fmt(pVoltageNum, "%d", voltage); lv_label_set_text_fmt(pCurrentNum, "%d", current); //油量 lv_bar_set_value(pOilColor, oil_quantity, LV_ANIM_OFF); lv_label_set_text_fmt(pRunTime, "%d", time_num); lv_label_set_text_fmt(pLeftTime, "%d", time_num); lv_label_set_text_fmt(pTotalTime, "%d", time_num); lv_label_set_text_fmt(pFreqNum, "%d", load_num); lv_label_set_text_fmt(pPercentNum, "%d", frequency_num); lv_label_set_text_fmt(pPowerNum, "%d", power); if((time_num/10)%2==0) { lv_obj_clear_flag(img_bt,LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(img_power,LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(img_error,LV_OBJ_FLAG_HIDDEN); } else { lv_obj_add_flag(img_bt,LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(img_power,LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(img_error,LV_OBJ_FLAG_HIDDEN); } speed+=100; if(speed >=10000) speed =0; power+=100; if(power >=60000) power =0; voltage++; if(voltage>=1000) voltage=0; current++; if(current>=100) current=0; time_num++; if(time_num>=100) time_num=0; load_num++; if(time_num>=100) time_num=0; frequency_num++; if(time_num>=100) time_num=0; if(oil_flag%2==0) oil_quantity++; else oil_quantity--; if(arc_flag%2==0) arc_num++; else arc_num--; if(arc_flag%2==0) arc_num++; else arc_num--; //模拟器跑60-76 板子跑20-37 if(arc_num>77 || arc_num<=60) arc_flag++; if(oil_quantity>=95) oil_flag++; } #else void refresh_MainUItimer_cb(lv_timer_t* pTimer) { static uint16_t arc_num=60;//转速 电压 电流 功率 static uint8_t oil_quantity=0,time_num=0;//油量 时间 负载 频率 static uint8_t arc_flag=0,oil_flag=0; //检查定时器指针合法性 lv_obj_t *parent = pTimer->user_data; if(!lv_obj_is_valid(parent)) { printf("parent lv_obj_is_valid() fail.\n"); return; } if(NULL == parent) { printf("parent NULL\n"); return; } //获取MainUI创建的各子对象的指针 //转速数据 lv_obj_t* arc1 = lv_obj_get_child(parent, 1); lv_obj_t* arc2 = lv_obj_get_child(parent, 2); lv_obj_t* pRotrateNum = lv_obj_get_child(parent, 4); lv_obj_t* pVoltageNum = lv_obj_get_child(parent, 5); lv_obj_t* pCurrentNum = lv_obj_get_child(parent, 6); lv_obj_t* img_bt = lv_obj_get_child(parent, 7); lv_obj_t* img_power = lv_obj_get_child(parent, 8); lv_obj_t* img_error = lv_obj_get_child(parent, 9); lv_obj_t* pOilColor = lv_obj_get_child(parent, 10); lv_obj_t* pRunTime = lv_obj_get_child(parent, 11); lv_obj_t* pLeftTime = lv_obj_get_child(parent, 12); lv_obj_t* pTotalTime = lv_obj_get_child(parent, 13); lv_obj_t* pFreqNum = lv_obj_get_child(parent, 14); lv_obj_t* pPercentNum = lv_obj_get_child(parent, 15); lv_obj_t* pPowerNum = lv_obj_get_child(parent, 17); lv_arc_set_value(arc1, arc_num); lv_arc_set_value(arc2, arc_num); lv_label_set_text_fmt(pRotrateNum, "%d", g_UserData.uiData.mEngineSpeed); lv_label_set_text_fmt(pVoltageNum, "%d", g_UserData.uiData.mVoltValue); lv_label_set_text_fmt(pCurrentNum, "%d", g_UserData.uiData.mCurrentValue); //油量 lv_bar_set_value(pOilColor, g_UserData.uiData.mOilValue, LV_ANIM_OFF); lv_label_set_text_fmt(pRunTime, "%d", g_UserData.uiData.mRunTime); lv_label_set_text_fmt(pLeftTime, "%d", g_UserData.uiData.mLeftTime); lv_label_set_text_fmt(pTotalTime, "%d", g_UserData.uiData.mTotalTime); lv_label_set_text_fmt(pFreqNum, "%d", g_UserData.uiData.mFreqValue); lv_label_set_text_fmt(pPercentNum, "%d", g_UserData.uiData.mPercentValue); lv_label_set_text_fmt(pPowerNum, "%d", g_UserData.uiData.mPowerValue); if((time_num/10)%2==0) { lv_obj_clear_flag(img_bt,LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(img_power,LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(img_error,LV_OBJ_FLAG_HIDDEN); } else { lv_obj_add_flag(img_bt,LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(img_power,LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(img_error,LV_OBJ_FLAG_HIDDEN); } if(oil_flag%2==0) oil_quantity++; else oil_quantity--; if(arc_flag%2==0) arc_num++; else arc_num--; if(arc_flag%2==0) arc_num++; else arc_num--; //模拟器跑60-76 板子跑20-37 if(arc_num>77 || arc_num<=60) arc_flag++; } #endif #if 0 void refresh_TWOUItimer_cb(lv_timer_t* pTimer) { static uint16_t temp=0,voltage=0,count=0;//温度 电压 次数 static uint8_t temp_flag=0,voltage_flag=0,count_flag=0; //检查定时器指针合法性 lv_obj_t *parent = pTimer->user_data; if(!lv_obj_is_valid(parent)) return; if(NULL == parent) return; //获取MainUI创建的各子对象的指针 lv_obj_t* temp_label1 = lv_obj_get_child(parent, 16); lv_obj_t* voltage_label = lv_obj_get_child(parent, 17); lv_obj_t* temp_label2 = lv_obj_get_child(parent, 18); lv_obj_t* temp_label3 = lv_obj_get_child(parent, 19); lv_obj_t* reversal_times = lv_obj_get_child(parent, 20); lv_label_set_text_fmt(temp_label1, "%d°C", temp); lv_label_set_text_fmt(temp_label2, "%d°C", temp); lv_label_set_text_fmt(temp_label3, "%d°C", temp); lv_label_set_text_fmt(voltage_label, "%d V", voltage); lv_label_set_text_fmt(reversal_times, "%d", count); if(temp_flag%2==0) temp++; else temp--; if(temp>=255 || temp==0) temp_flag++; if(voltage_flag%2==0) voltage++; else voltage--; if(voltage>=300 || voltage==0) voltage_flag++; if(count_flag%2==0) count++; else count--; if(count>=50 || count==0) count_flag++; } #else void refresh_TWOUItimer_cb(lv_timer_t* pTimer) { static uint16_t temp=0,voltage=0,count=0;//温度 电压 次数 static uint8_t temp_flag=0,voltage_flag=0,count_flag=0; //检查定时器指针合法性 lv_obj_t *parent = pTimer->user_data; if(!lv_obj_is_valid(parent)) return; if(NULL == parent) return; //获取MainUI创建的各子对象的指针 lv_obj_t* IGBTtemp_label1 = lv_obj_get_child(parent, 16); lv_obj_t* voltage_label = lv_obj_get_child(parent, 17); lv_obj_t* MCUtemp_label2 = lv_obj_get_child(parent, 18); lv_obj_t* Cylindertemp_label3 = lv_obj_get_child(parent, 19); lv_obj_t* reversal_times = lv_obj_get_child(parent, 20); //lv_label_set_text_fmt(temp_label1, "%d°C", temp); //lv_label_set_text_fmt(temp_label2, "%d°C", temp); //lv_label_set_text_fmt(temp_label3, "%d°C", temp); //lv_label_set_text_fmt(voltage_label, "%d V", voltage); //lv_label_set_text_fmt(reversal_times, "%d", count); lv_label_set_text_fmt(IGBTtemp_label1, "%d°C", g_UserData.inverterData.IGBTTemper); lv_label_set_text_fmt(MCUtemp_label2, "%d°C", g_UserData.inverterData.MCUTemper); lv_label_set_text_fmt(Cylindertemp_label3, "%d°C", g_UserData.upLoadData.mCylinderTemp); lv_label_set_text_fmt(voltage_label, "%d V", g_UserData.inverterData.BusVolt); lv_label_set_text_fmt(reversal_times, "%d", g_UserData.upLoadData.mRevDragStartUP); } #endif /******************4.界面入口******************/ //获取主屏幕 void Generator_src_win(lv_obj_t * scr_parent_main) { // lv_obj_t * scr_parent_main = get_root_win(); //liulin 2024.3.18 //先初始化全局结构体 SystemDataInit(); lv_obj_t* MainUI_win = lv_obj_create(scr_parent_main); lv_obj_set_scrollbar_mode(MainUI_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(MainUI_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(MainUI_win, 0, 0); // lv_obj_set_style_radius(MainUI_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(MainUI_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(MainUI_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(MainUI_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(MainUI_win, LV_OBJ_FLAG_SCROLLABLE); //异形进度条弧 0 lv_obj_t* arc_img = lv_img_big_create(MainUI_win, arc_src, 52, 60, 3, 0); // 1 lv_obj_t *ui_Arc1 = lv_arc_create(MainUI_win); lv_obj_set_size(ui_Arc1, 2400, 2400); lv_obj_set_pos(ui_Arc1, -816, 373); lv_obj_set_align( ui_Arc1, LV_ALIGN_CENTER ); lv_arc_set_value(ui_Arc1, 60); lv_arc_set_bg_angles(ui_Arc1,270,0); lv_arc_set_mode(ui_Arc1, LV_ARC_MODE_REVERSE); lv_obj_set_style_arc_color(ui_Arc1, lv_color_hex(0x4040FF), LV_PART_MAIN | LV_STATE_DEFAULT ); lv_obj_set_style_arc_opa(ui_Arc1, 0, LV_PART_MAIN| LV_STATE_DEFAULT); lv_obj_set_style_arc_color(ui_Arc1, lv_color_hex(0xFFFFFF), LV_PART_INDICATOR | LV_STATE_DEFAULT ); lv_obj_set_style_arc_opa(ui_Arc1, 255, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_arc_width(ui_Arc1, 480, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_arc_rounded(ui_Arc1, false, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui_Arc1, lv_color_hex(0xFFFFFF), LV_PART_KNOB | LV_STATE_DEFAULT ); lv_obj_set_style_bg_opa(ui_Arc1, 0, LV_PART_KNOB| LV_STATE_DEFAULT); //2 lv_obj_t *ui_Arc2 = lv_arc_create(MainUI_win); lv_obj_set_size(ui_Arc2,2500,2500); lv_obj_set_pos(ui_Arc2, -816, 378); lv_obj_set_align( ui_Arc2, LV_ALIGN_CENTER ); lv_arc_set_value(ui_Arc2, 60); lv_arc_set_bg_angles(ui_Arc2,270,0); lv_arc_set_mode(ui_Arc2, LV_ARC_MODE_REVERSE); lv_obj_set_style_arc_color(ui_Arc2, lv_color_hex(0x4040FF), LV_PART_MAIN | LV_STATE_DEFAULT ); lv_obj_set_style_arc_opa(ui_Arc2, 0, LV_PART_MAIN| LV_STATE_DEFAULT); lv_obj_set_style_arc_color(ui_Arc2, lv_color_hex(0x1A1A1A), LV_PART_INDICATOR | LV_STATE_DEFAULT ); lv_obj_set_style_arc_opa(ui_Arc2, 255, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_arc_width(ui_Arc2, 500, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_arc_rounded(ui_Arc2, false, LV_PART_INDICATOR| LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui_Arc2, lv_color_hex(0xFFFFFF), LV_PART_KNOB | LV_STATE_DEFAULT ); lv_obj_set_style_bg_opa(ui_Arc2, 0, LV_PART_KNOB| LV_STATE_DEFAULT); //3 lv_obj_t* demo_bg = lv_img_big_create(MainUI_win,demo_bg_src,0,0,9,0); //转速数据和单位 4 lv_obj_t * pLabel_RotrateNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_RotrateNum, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_RotrateNum, "1200"); //实际使用需要换成一个变量 lv_obj_align(pLabel_RotrateNum, LV_ALIGN_TOP_LEFT, 30, 9); //电压数据和单位 5 lv_obj_t * pLabel_VoltageNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_VoltageNum, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_VoltageNum, "220"); lv_obj_align(pLabel_VoltageNum, LV_ALIGN_TOP_LEFT, 316, 9); //电流数据和单位 6 lv_obj_t * pLabel_CurrentNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_CurrentNum, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CurrentNum, "12"); lv_obj_align(pLabel_CurrentNum, LV_ALIGN_TOP_LEFT, 428, 9); //加载蓝牙 7 lv_obj_t* pBlueTooth = lv_img_create(MainUI_win); lv_obj_align(pBlueTooth, LV_ALIGN_TOP_LEFT, 449, 53); lv_img_set_src(pBlueTooth, IMG_BLUETOOTH_ICO); //加载发电 8 lv_obj_t* pPower = lv_img_create(MainUI_win); lv_obj_align(pPower, LV_ALIGN_TOP_LEFT, 449, 93); lv_img_set_src(pPower, IMG_POWER_ICO); //加载故障 9 lv_obj_t* pError = lv_img_create(MainUI_win); lv_obj_align(pError, LV_ALIGN_TOP_LEFT, 449, 132); lv_img_set_src(pError, IMG_ERROR_ICO); //设置油箱颜色变化 static lv_style_t style; lv_style_init(&style); //lv_style_set_radius(&style, 0); //设置方形进度条 lv_style_set_bg_opa(&style, LV_OPA_COVER); lv_style_set_bg_color(&style, lv_color_hex(0xff0000)); lv_style_set_bg_grad_color(&style, lv_color_hex(0x00ff00)); lv_style_set_bg_grad_dir(&style, LV_GRAD_DIR_HOR); lv_style_set_bg_main_stop(&style, 0); lv_style_set_bg_grad_stop(&style, 255); // 10 lv_obj_t* pbar_Oilcolor = lv_bar_create(MainUI_win); lv_bar_set_value(pbar_Oilcolor, 10, LV_ANIM_OFF); lv_obj_set_size(pbar_Oilcolor, 150, 35); lv_obj_align(pbar_Oilcolor, LV_ALIGN_TOP_LEFT, 60, 240); lv_obj_add_style(pbar_Oilcolor, &style, LV_PART_INDICATOR); lv_obj_set_style_bg_color(pbar_Oilcolor, lv_color_black(), LV_PART_MAIN); lv_obj_set_style_radius(pbar_Oilcolor, 0, LV_PART_MAIN | LV_STATE_DEFAULT); //设置方形进度条 lv_obj_set_style_radius(pbar_Oilcolor, 0, LV_PART_INDICATOR | LV_STATE_DEFAULT); //时间1数据和单位 11 lv_obj_t* pLabel_Time1Num = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_Time1Num, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Time1Num, "15"); lv_obj_align(pLabel_Time1Num, LV_ALIGN_TOP_LEFT, 256, 253); //时间2数据和单位 12 lv_obj_t* pLabel_Time2Num = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_Time2Num, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Time2Num, "125"); lv_obj_align(pLabel_Time2Num, LV_ALIGN_TOP_LEFT, 58, 296); //时间3数据和单位 13 lv_obj_t* pLabel_Time3Num = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_Time3Num, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Time3Num, "235"); lv_obj_align(pLabel_Time3Num, LV_ALIGN_TOP_LEFT, 187, 296); //百分比数据和单位 14 lv_obj_t* pLabel_PercnetNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_PercnetNum, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_PercnetNum, "76"); lv_obj_align(pLabel_PercnetNum, LV_ALIGN_TOP_LEFT, 337, 296); //频率和单位 15 lv_obj_t* pLabel_FreqNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_FreqNum, LV_FONT_MXC_FZHZGB_CT_19PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_FreqNum, "50"); lv_obj_align(pLabel_FreqNum, LV_ALIGN_TOP_LEFT, 414, 296); //power标记,进度条待实现 16 lv_obj_t* pLabel_PowerLabel = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_PowerLabel, LV_FONT_MXC_FZHZGB_CT_36PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_PowerLabel, "P"); lv_obj_align(pLabel_PowerLabel, LV_ALIGN_TOP_LEFT, 12, 49); //power数字和单位 17 lv_obj_t* pLabel_PowerNum = lv_label_create(MainUI_win); lv_obj_set_style_text_font(pLabel_PowerNum, LV_FONT_MXC_FZHZGB_CT_48PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_PowerNum, "12345"); lv_obj_align(pLabel_PowerNum, LV_ALIGN_TOP_LEFT, 32, 124); //将MainUI放到按键编组中,相应按钮时间 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, MainUI_win); lv_obj_add_event_cb(MainUI_win, WinKey_event_MainToGtor_handle, LV_EVENT_KEY, NULL); pTime_refresh_timer = lv_timer_create(refresh_MainUItimer_cb, 50, MainUI_win); } #if 0 void Generator_SubUI_Gtor_src_win(lv_obj_t * scr_parent_main) { //生成窗口对象 // lv_obj_t* scr_parent_main = get_root_win(); lv_obj_t* pSubUI_Gtor_win = lv_obj_create(scr_parent_main); //初始化窗口对象,配置窗口对象属性 lv_obj_set_scrollbar_mode(pSubUI_Gtor_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(pSubUI_Gtor_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(pSubUI_Gtor_win, 0, 0); // lv_obj_set_style_radius(pSubUI_Gtor_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(pSubUI_Gtor_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(pSubUI_Gtor_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(pSubUI_Gtor_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(pSubUI_Gtor_win, LV_OBJ_FLAG_SCROLLABLE); #if 0 lv_obj_t* pUPMainBtn = lv_btn_create(pSubUI_Gtor_win); lv_obj_set_size(pUPMainBtn, 450,160); lv_obj_align(pUPMainBtn, LV_ALIGN_TOP_LEFT, 6, 6); //lv_obj_set_bg_opa(pUPMainBtn, LV_OPA_100, 0); lv_obj_set_style_border_color(pUPMainBtn, lv_color_white(), 0); lv_obj_set_style_bg_color(pUPMainBtn, lv_color_hex(0xffe1d4), LV_STATE_DISABLED); lv_obj_set_style_bg_color(pUPMainBtn, lv_color_black(), LV_STATE_DISABLED); #endif printf("enter Gtor_SubUI!\n"); //lv_obj_t* pSubmenu_win = lv_obj_create(lv_scr_act()); //获取子菜单窗口 lv_obj_t* pPanel_SubUI_Img = NULL; //定义图片指针 lv_img_cache_invalidate_src(NULL); //将缓存全部清除 //加载图像框架 pPanel_SubUI_Img = lv_img_big_create(pSubUI_Gtor_win, panel_Gtor_SubUI_src, 15, 8, 8, 0); //逆变器类型label Inverter type lv_obj_t * pLabel_Inverter_Type = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Inverter_Type, LV_FONT_MXC_MSYAHEI_CT_14PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Type, "逆变器类型:"); lv_obj_align(pLabel_Inverter_Type, LV_ALIGN_TOP_LEFT, 31, 46); //客户信息title label lv_obj_t * pLabel_Custom = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Custom, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Custom, "客户信息"); lv_obj_align(pLabel_Custom, LV_ALIGN_TOP_LEFT, 133, 36); //客户信息数据 lv_obj_t * pLabel_CustomData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CustomData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CustomData, "ICMX-A2"); lv_obj_align(pLabel_CustomData, LV_ALIGN_TOP_LEFT, 131, 61); //软件版本title label lv_obj_t * pLabel_software = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_software, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_software, "软件版本"); lv_obj_align(pLabel_software, LV_ALIGN_TOP_LEFT, 203, 36); //软件版本数据 lv_obj_t * pLabel_softwareData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_softwareData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_softwareData, "ICMX-2.57"); lv_obj_align(pLabel_softwareData, LV_ALIGN_TOP_LEFT, 198, 61); //硬件版本title label lv_obj_t * pLabel_hardware = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_hardware, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_hardware, "硬件版本"); lv_obj_align(pLabel_hardware, LV_ALIGN_TOP_LEFT, 280, 36); //硬件版本数据 lv_obj_t * pLabel_hardwareData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_hardwareData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_hardwareData, "ICMX-2.57"); lv_obj_align(pLabel_hardwareData, LV_ALIGN_TOP_LEFT, 275, 61); //程序发行时间title label lv_obj_t* pLabel_Time = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Time, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Time, "程序发行时间"); lv_obj_align(pLabel_Time, LV_ALIGN_TOP_LEFT, 361, 36); //时间数据 lv_obj_t* pLabel_TimeData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_TimeData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_TimeData, "2024-2-26"); lv_obj_align(pLabel_TimeData, LV_ALIGN_TOP_LEFT, 363, 61); //逆变器常规数据label lv_obj_t * pLabel_Inverter_Data = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Inverter_Data, LV_FONT_MXC_MSYAHEI_CT_14PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Data, "逆变器常规数据:"); lv_obj_align(pLabel_Inverter_Data, LV_ALIGN_TOP_LEFT, 31, 113); //单片机内部温度 title label lv_obj_t* pLabel_Temperature = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Temperature, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Temperature, "单片机内部温度"); lv_obj_align(pLabel_Temperature, LV_ALIGN_TOP_LEFT, 163, 103); //内部温度数据 lv_obj_t* pLabel_TemperatureData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_TemperatureData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_TemperatureData, "65°C"); lv_obj_align(pLabel_TemperatureData, LV_ALIGN_TOP_LEFT, 186, 128); //IGBT温度 title label lv_obj_t* pLabel_IGBTTemp = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_IGBTTemp, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_IGBTTemp, "IGBT温度"); lv_obj_align(pLabel_IGBTTemp, LV_ALIGN_TOP_LEFT, 275, 103); //IGBT温度数据 lv_obj_t* pLabel_IGBTTempData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_IGBTTempData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_IGBTTempData, "65°C"); lv_obj_align(pLabel_IGBTTempData, LV_ALIGN_TOP_LEFT, 280, 128); //直流母线电压 title label lv_obj_t* pLabel_Voltage = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Voltage, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Voltage, "直流母线电压"); lv_obj_align(pLabel_Voltage, LV_ALIGN_TOP_LEFT, 367, 103); //IGBT温度数据 lv_obj_t* pLabel_VoltageData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_VoltageData, LV_FONT_MXC_MSYAHEI_CT_10PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_VoltageData, "220V"); lv_obj_align(pLabel_VoltageData, LV_ALIGN_TOP_LEFT, 382, 128); //反拖启动次数label lv_obj_t * pLabel_Startups = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Startups, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Startups, "反拖启动次数"); lv_obj_align(pLabel_Startups, LV_ALIGN_TOP_LEFT, 56, 201); lv_obj_t * pLabel_StartupsNum = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_StartupsNum, LV_FONT_MXC_MSYAHEI_CT_64PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_StartupsNum, "5"); lv_obj_align(pLabel_StartupsNum, LV_ALIGN_TOP_LEFT, 91, 245); //缸温 lv_obj_t * pLabel_CylinderTemp = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CylinderTemp, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CylinderTemp, "缸温"); lv_obj_align(pLabel_CylinderTemp, LV_ALIGN_TOP_LEFT, 352, 201); lv_obj_t * pLabel_CylinderTempData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CylinderTempData, LV_FONT_MXC_MSYAHEI_CT_56PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CylinderTempData, "89°C"); lv_obj_align(pLabel_CylinderTempData, LV_ALIGN_TOP_LEFT, 309, 245); //将GtorUI放到按键编组中,相应按钮时间,切换到Err界面 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, pSubUI_Gtor_win); lv_obj_add_event_cb(pSubUI_Gtor_win, WinKey_event_GtorToErr_handle, LV_EVENT_KEY, NULL); // return pSubUI_Gtor_win; } #else void Generator_SubUI_Gtor_src_win(lv_obj_t * scr_parent_main) { //生成窗口对象 // lv_obj_t* scr_parent_main = get_root_win(); lv_obj_t* pSubUI_Gtor_win = lv_obj_create(scr_parent_main); //初始化窗口对象,配置窗口对象属性 lv_obj_set_scrollbar_mode(pSubUI_Gtor_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(pSubUI_Gtor_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(pSubUI_Gtor_win, 0, 0); // lv_obj_set_style_radius(pSubUI_Gtor_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(pSubUI_Gtor_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(pSubUI_Gtor_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(pSubUI_Gtor_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(pSubUI_Gtor_win, LV_OBJ_FLAG_SCROLLABLE); printf("enter Gtor_SubUI!\n"); //lv_obj_t* pSubmenu_win = lv_obj_create(lv_scr_act()); //获取子菜单窗口 // lv_obj_t* pPanel_SubUI_Img = NULL; //定义图片指针 lv_img_cache_invalidate_src(NULL); //将缓存全部清除 //加载图像框架 0 lv_obj_t* pPanel_SubUI_Img = lv_img_big_create(pSubUI_Gtor_win, panel_Gtor_SubUI_src, 16, 59, 7, 0); /***************** 文本部分 ******************/ //逆变器类型label Inverter type 1 lv_obj_t * pLabel_Inverter_Type = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Inverter_Type, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Type, "逆变器类型"); lv_obj_align(pLabel_Inverter_Type, LV_ALIGN_TOP_LEFT, 31, 19); //客户信息title label 2 lv_obj_t * pLabel_Custom = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Custom, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Custom, "客户信息"); lv_obj_align(pLabel_Custom, LV_ALIGN_TOP_LEFT, 41, 67); //程序发行时间title label 3 lv_obj_t* pLabel_Time = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Time, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Time, "发行时间"); lv_obj_align(pLabel_Time, LV_ALIGN_TOP_LEFT, 40, 124); //软件版本title label 4 lv_obj_t * pLabel_software = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_software, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_software, "软件版本"); lv_obj_align(pLabel_software, LV_ALIGN_TOP_LEFT, 40, 187); //硬件版本title label 5 lv_obj_t * pLabel_hardware = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_hardware, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_hardware, "硬件版本"); lv_obj_align(pLabel_hardware, LV_ALIGN_TOP_LEFT, 40, 247); //逆变器常规数据label 6 lv_obj_t * pLabel_Inverter_Data = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Inverter_Data, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Data, "逆变器常规数据"); lv_obj_align(pLabel_Inverter_Data, LV_ALIGN_TOP_LEFT, 185, 18); //IGBT温度 title label 7 lv_obj_t* pLabel_IGBTTemp = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_IGBTTemp, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_IGBTTemp, "IGBT温度"); lv_obj_align(pLabel_IGBTTemp, LV_ALIGN_TOP_LEFT, 210, 74); //直流母线电压 title label 8 lv_obj_t* pLabel_Voltage = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Voltage, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Voltage, "直流母线电压"); lv_obj_align(pLabel_Voltage, LV_ALIGN_TOP_LEFT, 196, 155); //单片机内部温度 title label 9 lv_obj_t* pLabel_Temperature = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Temperature, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Temperature, "单片机内部温度"); lv_obj_align(pLabel_Temperature, LV_ALIGN_TOP_LEFT, 187, 235); //缸温 10 lv_obj_t * pLabel_CylinderTemp = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CylinderTemp, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CylinderTemp, "缸温"); lv_obj_align(pLabel_CylinderTemp, LV_ALIGN_TOP_LEFT, 391, 74); //反拖启动次数label 11 lv_obj_t * pLabel_Startups = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_Startups, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_obj_set_style_text_align(pLabel_Startups, LV_TEXT_ALIGN_CENTER, 0); /*Break the long lines*/ lv_label_set_text(pLabel_Startups, "反拖启动\n次数"); lv_obj_align(pLabel_Startups, LV_ALIGN_TOP_LEFT, 376, 192); /***************** 数据部分 ******************/ //客户信息数据 12 lv_obj_t * pLabel_CustomData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CustomData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CustomData, "ICMX-A2"); lv_obj_align(pLabel_CustomData, LV_ALIGN_TOP_LEFT, 37, 92); //时间数据 13 lv_obj_t* pLabel_TimeData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_TimeData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_TimeData, "2024-2-26"); lv_obj_align(pLabel_TimeData, LV_ALIGN_TOP_LEFT, 25, 151); //软件版本数据 14 lv_obj_t * pLabel_softwareData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_softwareData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_softwareData, "ICMX-2.57"); lv_obj_align(pLabel_softwareData, LV_ALIGN_TOP_LEFT, 30, 213); //硬件版本数据 15 lv_obj_t * pLabel_hardwareData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_hardwareData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_hardwareData, "ICMX-2.57"); lv_obj_align(pLabel_hardwareData, LV_ALIGN_TOP_LEFT, 30, 273); //IGBT温度数据 16 lv_obj_t* pLabel_IGBTTempData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_IGBTTempData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_IGBTTempData, "65°C"); lv_obj_align(pLabel_IGBTTempData, LV_ALIGN_TOP_LEFT, 228, 105); //电压数据 17 lv_obj_t* pLabel_VoltageData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_VoltageData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_VoltageData, "220V"); lv_obj_align(pLabel_VoltageData, LV_ALIGN_TOP_LEFT, 228, 188); //内部温度数据 18 lv_obj_t* pLabel_TemperatureData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_TemperatureData, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_TemperatureData, "65°C"); lv_obj_align(pLabel_TemperatureData, LV_ALIGN_TOP_LEFT, 230, 272); //19 lv_obj_t * pLabel_CylinderTempData = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_CylinderTempData, LV_FONT_MXC_MSYAHEI_CT_36PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_CylinderTempData, "89°C"); lv_obj_align(pLabel_CylinderTempData, LV_ALIGN_TOP_LEFT, 370, 120); //20 lv_obj_t * pLabel_StartupsNum = lv_label_create(pSubUI_Gtor_win); lv_obj_set_style_text_font(pLabel_StartupsNum, LV_FONT_MXC_MSYAHEI_CT_36PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_StartupsNum, "5"); lv_obj_align(pLabel_StartupsNum, LV_ALIGN_CENTER, 165, 105); lv_obj_set_style_text_align(pLabel_StartupsNum, LV_TEXT_ALIGN_CENTER, 0); /*Break the long lines*/ //将GtorUI放到按键编组中,相应按钮时间,切换到Err界面 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, pSubUI_Gtor_win); lv_obj_add_event_cb(pSubUI_Gtor_win, WinKey_event_GtorToErr_handle, LV_EVENT_KEY, NULL); pTime_refresh_timer = lv_timer_create(refresh_TWOUItimer_cb, 100, pSubUI_Gtor_win); } #endif void Generator_SubUI_ERROR_src_win(lv_obj_t * scr_parent_main) { // lv_obj_t * scr_parent_main = get_root_win(); lv_obj_t* pSubUI_ERROR_win = lv_obj_create(scr_parent_main); lv_obj_set_scrollbar_mode(pSubUI_ERROR_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(pSubUI_ERROR_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(pSubUI_ERROR_win, 0, 0); // lv_obj_set_style_radius(pSubUI_ERROR_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(pSubUI_ERROR_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(pSubUI_ERROR_win, LV_OBJ_FLAG_SCROLLABLE); printf("enter Error_SubUI!\n"); // lv_obj_t* pPanel_SubUI_Img = NULL; //定义图片指针 lv_img_cache_invalidate_src(NULL); //将缓存全部清除 //加载图像框架 lv_obj_t*pPanel_SubUI_Img = lv_img_big_create(pSubUI_ERROR_win, panel_Error_SubUI_src, 40, 46, 6, 0); //逆变器故障代码label Inverter type lv_obj_t * pLabel_Inverter_Err = lv_label_create(pSubUI_ERROR_win); lv_obj_set_style_text_font(pLabel_Inverter_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Err, "逆变器故障代码"); lv_obj_align(pLabel_Inverter_Err, LV_ALIGN_TOP_LEFT, 178, 10); //反拖故障代码 lv_obj_t * pLabel_Reverse_Err = lv_label_create(pSubUI_ERROR_win); lv_obj_set_style_text_font(pLabel_Reverse_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Reverse_Err, "反拖故障代码"); lv_obj_align(pLabel_Reverse_Err, LV_ALIGN_TOP_LEFT, 187, 154); //将GtorUI放到按键编组中,相应按钮时间,切换到Err界面 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, pSubUI_ERROR_win); lv_obj_add_event_cb(pSubUI_ERROR_win, WinKey_event_ErrToMain_handle, LV_EVENT_KEY, NULL); } void roller1_refresh(lv_timer_t *t) { lv_obj_t *parent = t->user_data; if(!lv_obj_is_valid(parent)){ printf("parent lv_obj_is_valid fail.\n"); return; } if(parent ==NULL){ printf("parent ==NULL\n"); return; } lv_obj_t * fault_codes1 = lv_obj_get_child(parent,0); lv_obj_t * fault_codes2 = lv_obj_get_child(parent,1); lv_obj_t * roller1 = lv_obj_get_child(fault_codes1,0); lv_obj_t * roller2 = lv_obj_get_child(fault_codes2,0); uint8_t num1 = lv_roller_get_selected(roller1); uint8_t num2 = lv_roller_get_selected(roller1); printf("roller1_refresh num1=%d ,num2=%d .\r\n",num1,num2); num1++; num2++; lv_roller_set_selected(roller1, num1, LV_ANIM_OFF); lv_roller_set_selected(roller2, num2, LV_ANIM_OFF); } void roller2_refresh(lv_timer_t *t) { lv_obj_t *parent = t->user_data; if(!lv_obj_is_valid(parent)){ printf("parent lv_obj_is_valid fail.\n"); return; } if(parent ==NULL){ printf("parent ==NULL\n"); return; } lv_obj_t * fault_codes1 = lv_obj_get_child(parent,2); lv_obj_t * fault_codes2 = lv_obj_get_child(parent,3); lv_obj_t * roller1 = lv_obj_get_child(fault_codes1,0); lv_obj_t * roller2 = lv_obj_get_child(fault_codes2,0); uint8_t num1 = lv_roller_get_selected(roller1); uint8_t num2 = lv_roller_get_selected(roller1); printf("roller2_refresh num1=%d ,num2=%d .\r\n",num1,num2); num1++; num2++; lv_roller_set_selected(roller1, num1, LV_ANIM_OFF); lv_roller_set_selected(roller2, num2, LV_ANIM_OFF); } void Generator_test1_src_win(lv_obj_t * scr_parent_main) { // lv_obj_t * scr_parent_main = get_root_win(); lv_obj_t* pSubUI_ERROR_win = lv_obj_create(scr_parent_main); lv_obj_set_scrollbar_mode(pSubUI_ERROR_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(pSubUI_ERROR_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(pSubUI_ERROR_win, 0, 0); // lv_obj_set_style_radius(pSubUI_ERROR_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(pSubUI_ERROR_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(pSubUI_ERROR_win, LV_OBJ_FLAG_SCROLLABLE); printf("enter Error_SubUI!\n"); static lv_style_t frame_style; lv_style_init(&frame_style); /*Set a background color and a radius*/ lv_style_set_radius(&frame_style, 20); lv_style_set_bg_opa(&frame_style, LV_OPA_COVER); lv_style_set_bg_color(&frame_style, lv_color_hex(0x000000)); lv_style_set_border_width(&frame_style, 2); lv_style_set_border_color(&frame_style, lv_color_hex(0xffffff)); lv_obj_t * fault_codes1 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(fault_codes1, &frame_style, 0); lv_obj_set_size(fault_codes1,LV_PCT(85),110); lv_obj_align(fault_codes1,LV_ALIGN_CENTER,0,-70); lv_obj_clear_flag(fault_codes1, LV_OBJ_FLAG_SCROLLABLE); lv_obj_t * fault_codes2 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(fault_codes2, &frame_style, 0); lv_obj_set_size(fault_codes2,LV_PCT(85),110); lv_obj_align(fault_codes2,LV_ALIGN_CENTER,0,80); lv_obj_clear_flag(fault_codes2, LV_OBJ_FLAG_SCROLLABLE); //逆变器故障代码label Inverter type lv_obj_t * pLabel_Inverter_Err = lv_label_create(pSubUI_ERROR_win); lv_obj_set_style_text_font(pLabel_Inverter_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Err, "逆变器故障代码"); lv_obj_align(pLabel_Inverter_Err, LV_ALIGN_TOP_LEFT, 178, 10); //反拖故障代码 lv_obj_t * pLabel_Reverse_Err = lv_label_create(pSubUI_ERROR_win); lv_obj_set_style_text_font(pLabel_Reverse_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Reverse_Err, "反拖故障代码"); lv_obj_align(pLabel_Reverse_Err, LV_ALIGN_TOP_LEFT, 187, 154); static lv_style_t roller_style; lv_style_init(&roller_style); // lv_style_set_bg_color(&roller_style, lv_color_black()); lv_style_set_bg_color(&roller_style, lv_color_hex(0x000000)); lv_style_set_text_color(&roller_style, lv_color_white()); lv_style_set_border_width(&roller_style, 0); lv_style_set_pad_all(&roller_style, 0); lv_obj_t *roller1 = lv_roller_create(fault_codes1); lv_obj_set_size(roller1,LV_PCT(100),LV_PCT(70)); lv_obj_add_style(roller1,&roller_style,0); lv_obj_set_style_bg_opa(roller1, LV_OPA_TRANSP, LV_PART_SELECTED); lv_obj_set_style_text_color(roller1,lv_color_hex(0xff0000),LV_PART_SELECTED); lv_obj_set_style_text_font(roller1, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_roller_set_options(roller1, "0001输出短路\n" "0002直流母线高\n" "0003直流母线低\n" "0004输出电压高\n" "0005输出电压低\n" "0006IGBT温度高\n" "0007输出过流\n" "0008发动机转速丢失\n" "0009单片机温度高\n" "0010硬件峰值电流保护\n" "0011基准电压错误\n" "0012END", LV_ROLLER_MODE_INFINITE); // LV_ROLLER_MODE_NORMAL);//正常滚动 lv_roller_set_visible_row_count(roller1, 3); lv_obj_center(roller1); lv_roller_set_selected(roller1, 1, LV_ANIM_OFF); // pTime_refresh_timer = lv_timer_create(roller_refresh,2000,roller1); // lv_obj_t * list = lv_list_create(fault_codes2); // lv_obj_add_style(list,&roller_style,0); // lv_obj_set_size(list, LV_PCT(100), LV_PCT(100)); // lv_obj_center(list); // lv_obj_set_align(list,LV_ALIGN_CENTER); // // for(uint8_t btn_cnt = 1; btn_cnt <= 2; btn_cnt++) { // char buf[32]; // lv_snprintf(buf, sizeof(buf), "Track %d", (int)btn_cnt); // lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf); // } lv_obj_t *roller2 = lv_roller_create(fault_codes2); lv_obj_set_size(roller2,LV_PCT(100),LV_PCT(70)); lv_obj_add_style(roller2,&roller_style,0); // lv_obj_set_style_bg_opa(roller2, LV_OPA_TRANSP, LV_PART_SELECTED);// lv_obj_set_style_text_font(roller2, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_roller_set_options(roller2, "0001\n" "0002\n" "0003\n" "0004\n" "0005\n" "0006\n" "0007\n" "0008\n" "0009\n" "0010\n" "0011\n" "0012", LV_ROLLER_MODE_INFINITE); // LV_ROLLER_MODE_NORMAL);//正常滚动 lv_roller_set_visible_row_count(roller2, 3); lv_obj_center(roller2); lv_roller_set_selected(roller2, 1, LV_ANIM_OFF); pTime_refresh_timer = lv_timer_create(roller1_refresh, 2000, pSubUI_ERROR_win); //将GtorUI放到按键编组中,相应按钮时间,切换到Err界面 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, pSubUI_ERROR_win); lv_obj_add_event_cb(pSubUI_ERROR_win, test_win1_handle, LV_EVENT_KEY, NULL); } void Generator_test2_src_win(lv_obj_t * scr_parent_main) { // lv_obj_t * scr_parent_main = get_root_win(); lv_obj_t* pSubUI_ERROR_win = lv_obj_create(scr_parent_main); lv_obj_set_scrollbar_mode(pSubUI_ERROR_win, LV_SCROLLBAR_MODE_OFF); //关闭滑轮功能 lv_obj_set_size(pSubUI_ERROR_win, LV_PCT(100), LV_PCT(100)); //设置主界面100%显示 lv_obj_set_style_pad_all(pSubUI_ERROR_win, 0, 0); // lv_obj_set_style_radius(pSubUI_ERROR_win, 0, 0); //圆角大小为0 lv_obj_set_style_border_width(pSubUI_ERROR_win, 0, LV_PART_MAIN); //设置边界宽度为主窗口默认宽度 lv_obj_set_style_border_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置边界为全黑 lv_obj_set_style_bg_color(pSubUI_ERROR_win, lv_color_black(), 0); //设置背景为全黑 lv_obj_clear_flag(pSubUI_ERROR_win, LV_OBJ_FLAG_SCROLLABLE); printf("enter Error_SubUI!\n"); static lv_style_t frame_style; lv_style_init(&frame_style); /*Set a background color and a radius*/ lv_style_set_radius(&frame_style, 20); lv_style_set_bg_opa(&frame_style, LV_OPA_COVER); lv_style_set_bg_color(&frame_style, lv_color_hex(0x4C96C7)); lv_style_set_border_width(&frame_style, 2); lv_style_set_border_color(&frame_style, lv_color_hex(0xffffff)); lv_obj_t * labet_view1 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(labet_view1, &frame_style, 0); lv_obj_set_style_radius(labet_view1,12,0); lv_obj_set_size(labet_view1,180,37); lv_obj_set_pos(labet_view1, 35, 12); lv_obj_clear_flag(labet_view1, LV_OBJ_FLAG_SCROLLABLE); lv_obj_t * labet_view2 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(labet_view2, &frame_style, 0); lv_obj_set_style_radius(labet_view2,12,0); lv_obj_set_size(labet_view2, 180,37); lv_obj_set_pos(labet_view2, 267, 12); lv_obj_clear_flag(labet_view2, LV_OBJ_FLAG_SCROLLABLE); lv_obj_t * fault_codes1 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(fault_codes1, &frame_style, 0); lv_obj_set_size(fault_codes1,180,LV_PCT(78)); lv_obj_set_pos(fault_codes1, 35, 59); lv_obj_clear_flag(fault_codes1, LV_OBJ_FLAG_SCROLLABLE); lv_obj_t * fault_codes2 = lv_obj_create(pSubUI_ERROR_win); lv_obj_add_style(fault_codes2, &frame_style, 0); lv_obj_set_size(fault_codes2, 180,LV_PCT(78)); lv_obj_set_pos(fault_codes2, 267, 59); lv_obj_clear_flag(fault_codes2, LV_OBJ_FLAG_SCROLLABLE); //逆变器故障代码label Inverter type lv_obj_t * pLabel_Inverter_Err = lv_label_create(labet_view1); lv_obj_set_style_text_font(pLabel_Inverter_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Inverter_Err, "逆变器故障代码"); lv_obj_center(pLabel_Inverter_Err); //反拖故障代码 lv_obj_t * pLabel_Reverse_Err = lv_label_create(labet_view2); lv_obj_set_style_text_font(pLabel_Reverse_Err, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_label_set_text(pLabel_Reverse_Err, "反拖故障代码"); lv_obj_center(pLabel_Reverse_Err); //lv_obj_align(pLabel_Reverse_Err, LV_ALIGN_TOP_LEFT, 187, 154); static lv_style_t roller_style; lv_style_init(&roller_style); // lv_style_set_bg_color(&roller_style, lv_color_black()); lv_style_set_bg_color(&roller_style, lv_color_hex(0x000000)); lv_style_set_bg_opa(&roller_style, 0); lv_style_set_text_color(&roller_style, lv_color_white()); lv_style_set_border_width(&roller_style, 0); lv_style_set_pad_all(&roller_style, 0); lv_obj_t *roller1 = lv_roller_create(fault_codes1); lv_obj_set_size(roller1,LV_PCT(100),LV_PCT(100)); lv_obj_add_style(roller1,&roller_style,0); lv_obj_set_style_bg_opa(roller1, LV_OPA_TRANSP, LV_PART_SELECTED); lv_obj_set_style_text_color(roller1,lv_color_hex(0xff0000),LV_PART_SELECTED); lv_obj_set_style_text_font(roller1, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_roller_set_options(roller1, "输出短路\n" "直流母线高\n" "直流母线低\n" "输出电压高\n" "输出电压低\n" "IGBT温度高\n" "输出过流\n" "发动机转速丢失\n" "单片机温度高\n" "硬件峰值电流保护\n" "基准电压错误\n" "END", LV_ROLLER_MODE_INFINITE); // LV_ROLLER_MODE_NORMAL);//正常滚动 lv_roller_set_visible_row_count(roller1, 9); lv_obj_center(roller1); lv_roller_set_selected(roller1, 1, LV_ANIM_OFF); // pTime_refresh_timer = lv_timer_create(roller_refresh,2000,roller1); lv_obj_t *roller2 = lv_roller_create(fault_codes2); lv_obj_set_size(roller2,LV_PCT(100),LV_PCT(70)); lv_obj_add_style(roller2,&roller_style,0); // lv_obj_set_style_text_color(roller1,lv_color_hex(0xff0000),LV_PART_SELECTED); lv_obj_set_style_bg_color(roller2,lv_color_hex(0xff0000),LV_PART_SELECTED); // lv_obj_set_style_bg_opa(roller2, LV_OPA_TRANSP, LV_PART_SELECTED);// lv_obj_set_style_text_font(roller2, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT); lv_roller_set_options(roller2, "低压保护\n" "软件电流保护\n" "硬件电流保护\n" "堵转保护\n" "峰值过流保护\n" "温度故障\n" "点火失败\n" "过压保护\n" "机油故障\n" "END", LV_ROLLER_MODE_INFINITE); // LV_ROLLER_MODE_NORMAL);//正常滚动 lv_roller_set_visible_row_count(roller2, 7); lv_obj_center(roller2); lv_roller_set_selected(roller2, 1, LV_ANIM_OFF); pTime_refresh_timer = lv_timer_create(roller2_refresh,2000,pSubUI_ERROR_win); //将GtorUI放到按键编组中,相应按钮时间,切换到Err界面 lv_obj_t* pDemo_group = get_key_group(); lv_group_add_obj(pDemo_group, pSubUI_ERROR_win); lv_obj_add_event_cb(pSubUI_ERROR_win, test_win2_handle, LV_EVENT_KEY, NULL); } // // //void test_win(lv_obj_t * scr_parent_main){ // // // //}