MXC_A39_20240320/MXC-A39/lv_user_code/app/GeneratorMainUI.c

902 lines
36 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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());
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());
break;
default:
break;
}
}
}
/******************3.定时器******************/
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);
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++;
}
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++;
}
/******************4.界面入口******************/
//获取主屏幕
void Generator_src_win(lv_obj_t * scr_parent_main)
{
// lv_obj_t * scr_parent_main = get_root_win();
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, 37);
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 roller_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;
}
uint8_t num = lv_roller_get_selected(parent);
printf("num=%d .\r\n",num);
num++;
lv_roller_set_selected(parent, num, LV_ANIM_OFF);
}
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);
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 style;
lv_style_init(&style);
lv_style_set_bg_color(&style, lv_color_black());
lv_style_set_text_color(&style, lv_color_white());
lv_style_set_border_width(&style, 0);
lv_style_set_pad_all(&style, 0);
lv_obj_add_style(lv_scr_act(), &style, 0);
lv_obj_t *roller1 = lv_roller_create(pSubUI_ERROR_win);
lv_obj_align(roller1, LV_ALIGN_TOP_LEFT, 69, 84);
lv_obj_add_style(roller1,&style,0);
lv_obj_set_style_text_font(roller1, LV_FONT_MXC_MSYAHEI_CT_18PX, LV_STATE_DEFAULT);
lv_roller_set_options(roller1,
"JAAAAAAA\n"
"FBBBBBB\n"
"MC\n"
"ADDDD\n"
"MEEEEEEE\n"
"JFFFFFFFFFFF\n"
"JGGGG\n"
"AHHHHHHHHHHHH\n"
"SIIIII\n"
"OJJJ\n"
"NKKKKKKKK\n"
"DLLLL",
LV_ROLLER_MODE_INFINITE);
//LV_ROLLER_MODE_NORMAL);//正常滚动
lv_roller_set_visible_row_count(roller1, 3);
lv_obj_center(roller1);
lv_timer_t * time_refresh_timer = lv_timer_create(roller_refresh,1000,roller1);
//将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 test_win(lv_obj_t * scr_parent_main){
//
//
//
//}