/* * @Author: wujunchao wujunchao@wuxismart.com * @Date: 2024-12-27 11:50:56 * @LastEditors: wujunchao wujunchao@wuxismart.com * @LastEditTime: 2025-03-06 18:48:20 * @FilePath: \signal_generator\App\APP_WU\Src\apps_gather.c * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #include "apps_gather.h" //用于头文件打包汇总,函数和变量注释 // lv_conf.h { line:282->CPU&FPS; line:289->MEM used } /**********test5**********/ MENU_DATA m5data; PLOT_DATA pltdata; TABVIEW_DATA tabdata; void menu_data_init(void) { //general m5data.scr_now = SCREEN_INIT; m5data.tick_prv = -1; //前一时刻,用于计时 m5data.tick_cur = -1; //当前时刻,用于计时 m5data.menu_reset_flag = 0; //复位使能标志,置1后复位,复位完成后变回0 //screen_init m5data.scr_init_flag = 0; //是否进行过初始化(开机动画) m5data.scr_init_bar = 0; //进度条值,0~100 m5data.scr_init_cnt = 0; //进度条计数(控制进度条动画) //screen_main // { m5data.runtime_seconds = 0; //秒 m5data.runtime_minutes = 0; //分钟 m5data.runtime_hours = 0; //小时 memset(m5data.runtime_show, 0, 16); //存放显示时间的字符串 m5data.battery_cnt = 0; //电池计数 m5data.io_cursor = 2; //当前游标位置,[000,000]:0~5 m5data.io_cursor_prv = 2; //前一时刻游标位置 m5data.twk_flag = 0; //0停止闪烁,1开始闪烁 m5data.twk_flip = 0; //0显示,1不显示 m5data.twk_cnt = 0; //闪烁计数 m5data.overflow_flag_low = 0; //向上溢出 m5data.overflow_flag_up = 0; //向下溢出 m5data.io_on2off = IO_OFF; //初始为关闭状态 m5data.io_mode = IO_OUTPUT; //默认工作模式,0:输入IN,1:输出OUT for(uint8_t i = 0; i < 6; i++) //用于数值显示的数组,初值为0 { m5data.i_numbers[i] = 0; //输入值/测量值 m5data.o_numbers[i] = 0; //输出值/设定值 } m5data.input_mode = SIG_VOLTAGE; //输入功能初始为电压模式 m5data.input_mode_type = VOLTAGE_V; //电压单位初始为V m5data.output_mode = SIG_VOLTAGE; //输出功能初始为电压模式 m5data.output_mode_type = VOLTAGE_V;//电压单位初始为V //chart组件显示(int) pltdata.y_pri_low = 0; //主轴的显示下限,0,通常不做修改 pltdata.y_pri_up = 100; //主轴的显示上限,100,通常不做修改 pltdata.y_scd_low = 0; //副轴的显示下限,0,通常不做修改 pltdata.y_scd_up = 100; //副轴的显示上限,100,通常不做修改 pltdata.y_pri_value = 0; //主轴的实时显示值,0~100 pltdata.y_scd_value = 0; //副轴的实时显示值,0~100 //实际物理量(float32) pltdata.yreal_pri_low = 0; //实际值的显示下限,主轴 pltdata.yreal_pri_up = 30; //实际值的显示上限,主轴 pltdata.yreal_scd_low = 0; //实际值的显示下限,副轴 pltdata.yreal_scd_up = 30; //实际值的显示上限,副轴 pltdata.yreal_pri_value = 0; //主轴的实时值,即输出/设定值 pltdata.yreal_scd_value = 0; //副轴的实时值,即输入/测量值 // } //screen_setting tabdata.tab_cursor = 0; //选项卡的游标(焦点) tabdata.tab_cursor_prv = 0; //前一刻的选项卡游标 tabdata.tab_cursor_inner = 99; //某一选项卡内部的游标 tabdata.tab_cursor_inner_prv = 99; //前一刻的~ tabdata.content00 = 0; //第0个选项卡的第0个内容 tabdata.content01_mV = 500; //第0个选项卡的第1个内容 tabdata.content01_V = 30; //第0个选项卡的第1个内容 tabdata.content02_mV = 0; //第0个选项卡的第2个内容 tabdata.content02_V = 0; //第0个选项卡的第2个内容 } void menu_reset(void) { //界面复位 //加载初始界面 setup_scr_screen_init(&guider_ui); lv_scr_load(guider_ui.screen_init); //释放内存 switch (m5data.scr_now) { case SCREEN_MAIN: { lv_obj_del(guider_ui.screen_main); } break; case SCREEN_SETTING: { lv_obj_del(guider_ui.screen_setting); } break; default: break; } //参数复位 menu_data_init(); } void menu_test5(void) { if(m5data.menu_reset_flag) { menu_reset(); //触发显示内容复位 m5data.menu_reset_flag = 0; return; } if(m5data.scr_init_flag == 0) { scr_init_run(); //播放开机动画 } else { switch (m5data.scr_now) { case SCREEN_MAIN: { scr_main_run(); //主界面显示 key_functions_main(); //主界面的按键功能 } break; case SCREEN_SETTING: { scr_setting_run(); //设置界面 key_functions_setting(); //设置界面的按键功能 } break; default: break; } } } void key_functions_main(void) { uint8_t cursor_temp = 0; //临时游标,替代枚举变量进行加减运算 switch (key) { case KEY_OUT: { key = 0; if(m5data.io_mode == IO_INPUT) { m5data.io_mode = IO_OUTPUT; m5data.output_mode = m5data.input_mode; io_on2off_status(); //更新状态指示 } else { cursor_temp = (uint8_t)m5data.output_mode; cursor_temp = (cursor_temp >= 5)?(0):(cursor_temp + 1); m5data.output_mode = (SIG_FUNCTIONS)cursor_temp; } switch (m5data.output_mode) { case SIG_VOLTAGE: //电压 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Volt"); } break; case SIG_CURRENT: //电流 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre"); } break; case SIG_TC: //热电偶 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc"); } break; case SIG_RTD: //热电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD"); } break; default: break; } } break; case KEY_UP: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 m5data.twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) { case 0: { m5data.o_numbers[0] = (m5data.o_numbers[0] >= 9)?(9):(m5data.o_numbers[0] + 1); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); } break; case 1: { if(m5data.o_numbers[1] >= 9) { if( m5data.o_numbers[0]!=9 ) { m5data.o_numbers[1] = 0; m5data.overflow_flag_up = 1; } else { m5data.o_numbers[1] = 9; } }else { m5data.o_numbers[1]++; } lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); } break; case 2: { if(m5data.o_numbers[2] >= 9) { if( (m5data.o_numbers[0]!=9)||(m5data.o_numbers[1]!=9)) { m5data.o_numbers[2] = 0; m5data.overflow_flag_up = 2; } else { m5data.o_numbers[2] = 9; } }else { m5data.o_numbers[2]++; } lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); } break; case 3: { if(m5data.o_numbers[3] >= 9) { if( (m5data.o_numbers[0]!=9)||(m5data.o_numbers[1]!=9)||(m5data.o_numbers[2]!=9)) { m5data.o_numbers[3] = 0; m5data.overflow_flag_up = 3; } else { m5data.o_numbers[3] = 9; } }else { m5data.o_numbers[3]++; } lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); } break; case 4: { if(m5data.o_numbers[4] >= 9) { if( (m5data.o_numbers[0]!=9)||(m5data.o_numbers[1]!=9)||(m5data.o_numbers[2]!=9)||(m5data.o_numbers[3]!=9)) { m5data.o_numbers[4] = 0; m5data.overflow_flag_up = 4; } else { m5data.o_numbers[4] = 9; } }else { m5data.o_numbers[4]++; } lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); } break; case 5: { if(m5data.o_numbers[5] >= 9) { if( (m5data.o_numbers[0]!=9)||(m5data.o_numbers[1]!=9)||(m5data.o_numbers[2]!=9)||(m5data.o_numbers[3]!=9)||(m5data.o_numbers[4]!=9)) { m5data.o_numbers[5] = 0; m5data.overflow_flag_up = 5; } else { m5data.o_numbers[5] = 9; } }else { m5data.o_numbers[5]++; } lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } break; default: break; } if(m5data.overflow_flag_up) //发生向上溢出 { int oftemp = 0; oftemp = 100000*m5data.o_numbers[0] + 10000*m5data.o_numbers[1] + 1000*m5data.o_numbers[2] + \ 100*m5data.o_numbers[3] + 10*m5data.o_numbers[4] + m5data.o_numbers[5]; switch (m5data.overflow_flag_up) { case 1: { oftemp += 100000; } break; case 2: { oftemp += 10000; } break; case 3: { oftemp += 1000; } break; case 4: { oftemp += 100; } break; case 5: { oftemp += 10; } break; default: break; } m5data.o_numbers[0] = (oftemp/100000 > 9)?(9):(oftemp/100000); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); m5data.o_numbers[1] = (oftemp/10000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); m5data.o_numbers[2] = (oftemp/1000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); m5data.o_numbers[3] = (oftemp/100) % 10; lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); m5data.o_numbers[4] = (oftemp/10) % 10; lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); m5data.o_numbers[5] = oftemp % 10; lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); m5data.overflow_flag_up = 0; } } break; case KEY_MENU: { key = 0; //为保障安全,进入菜单页面后功能关闭,输入输出值清零 m5data.io_on2off = IO_OFF; for(uint8_t i = 0; i < 6; i++) //用于数值显示的数组,初值为0 { m5data.i_numbers[i] = 0; //输入值/测量值 m5data.o_numbers[i] = 0; //输出值/设定值 } m5data.twk_flag = 0; //闪烁中止 m5data.twk_cnt = 0; //闪烁计数清零 m5data.twk_flip = 0; //0显示,1不显示 //加载菜单界面 setup_scr_screen_setting(&guider_ui); lv_scr_load(guider_ui.screen_setting); //切换至菜单后,清除主界面对象,释放内存 lv_obj_del(guider_ui.screen_main); m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单 scr_setting_recover(); } break; case KEY_IN: { key = 0; if(m5data.io_mode == IO_OUTPUT) { m5data.io_mode = IO_INPUT; m5data.input_mode = m5data.output_mode; io_on2off_status(); //更新状态指示 } else { cursor_temp = (uint8_t)m5data.input_mode; cursor_temp = (cursor_temp >= 5)?(0):(cursor_temp + 1); m5data.input_mode = (SIG_FUNCTIONS)cursor_temp; } switch (m5data.input_mode) { case SIG_VOLTAGE: //电压 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Volt"); } break; case SIG_CURRENT: //电流 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre"); } break; case SIG_TC: //热电偶 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc"); } break; case SIG_RTD: //热电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD"); } break; default: break; } } break; case KEY_LEFT: { key = 0; m5data.twk_flag = 1; //上、下、左、右 任意一个键按下后,闪烁开始 m5data.twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) //避免游标移动的瞬间数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值 { case 0: { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } break; default: break; } m5data.io_cursor_prv = m5data.io_cursor; m5data.io_cursor = (m5data.io_cursor <= 0)?(5):(m5data.io_cursor - 1); if(m5data.io_cursor <= 2) { lv_obj_set_pos(guider_ui.screen_main_img_3, IO_CURSOR_START1 + IO_CURSOR_INTERVAL * m5data.io_cursor, IO_CURSOR_Y); } else { lv_obj_set_pos(guider_ui.screen_main_img_3, IO_CURSOR_START2 + IO_CURSOR_INTERVAL * (m5data.io_cursor - 3), IO_CURSOR_Y); } } break; case KEY_OK: { key = 0; if(m5data.io_on2off == IO_ON) { m5data.io_on2off = IO_OFF; lv_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF"); } else { m5data.io_on2off = IO_ON; lv_label_set_text(guider_ui.screen_main_label_ONOFF, "ON"); } io_on2off_status(); //更新状态指示 } break; case KEY_RIGHT: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 m5data.twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) //避免游标移动的瞬间数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值 { case 0: { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } break; default: break; } m5data.io_cursor_prv = m5data.io_cursor; m5data.io_cursor = (m5data.io_cursor >= 5)?(0):(m5data.io_cursor + 1); if(m5data.io_cursor <= 2) { lv_obj_set_pos(guider_ui.screen_main_img_3, IO_CURSOR_START1 + IO_CURSOR_INTERVAL * m5data.io_cursor, IO_CURSOR_Y); } else { lv_obj_set_pos(guider_ui.screen_main_img_3, IO_CURSOR_START2 + IO_CURSOR_INTERVAL * (m5data.io_cursor - 3), IO_CURSOR_Y); } } break; case KEY_SWITCH: { key = 0; switch (m5data.io_mode) //输入、输出模式切换 { case IO_OUTPUT: { switch (m5data.output_mode) //功能切换 { case SIG_VOLTAGE: { cursor_temp = (uint8_t)m5data.output_mode_type; cursor_temp = !cursor_temp; m5data.output_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp; switch (m5data.output_mode_type) //功能类型切换,电压V/mV { case VOLTAGE_MV: { lv_label_set_text(guider_ui.screen_main_label_unit, "mV"); pltdata.yreal_pri_up = tabdata.content01_mV; pltdata.yreal_scd_up = tabdata.content01_mV; pltdata.yreal_pri_low = tabdata.content02_mV; pltdata.yreal_scd_low = tabdata.content02_mV; } break; case VOLTAGE_V: { lv_label_set_text(guider_ui.screen_main_label_unit, "V"); pltdata.yreal_pri_up = tabdata.content01_V; pltdata.yreal_scd_up = tabdata.content01_V; pltdata.yreal_pri_low = tabdata.content02_V; pltdata.yreal_scd_low = tabdata.content02_V; } break; default: break; } } break; case SIG_CURRENT: {} break; case SIG_RESISTANT: {} break; case SIG_FREQUENCE: {} break; case SIG_TC: {} break; case SIG_RTD: {} break; default: break; } } break; case IO_INPUT: { switch (m5data.input_mode) { case SIG_VOLTAGE: { cursor_temp = (uint8_t)m5data.input_mode_type; cursor_temp = !cursor_temp; m5data.input_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp; switch (m5data.input_mode_type) //功能类型切换,电压V/mV { case VOLTAGE_MV: { lv_label_set_text(guider_ui.screen_main_label_unit, "mV"); } break; case VOLTAGE_V: { lv_label_set_text(guider_ui.screen_main_label_unit, "V"); } break; default: break; } } break; case SIG_CURRENT: {} break; case SIG_RESISTANT: {} break; case SIG_FREQUENCE: {} break; case SIG_TC: {} break; case SIG_RTD: {} break; default: break; } } break; default: break; } } break; case KEY_SOURCE: { key = 0; } break; case KEY_DOWN: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 m5data.twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) { case 0: { if(m5data.o_numbers[0] <= 0) { m5data.o_numbers[0] = 0; } else { m5data.o_numbers[0] = m5data.o_numbers[0] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); } break; case 1: { if(m5data.o_numbers[1] <= 0) { if(m5data.o_numbers[0]) { m5data.o_numbers[1] = 9; m5data.overflow_flag_low = 1; } else { m5data.o_numbers[1] = 0; } } else { m5data.o_numbers[1] = m5data.o_numbers[1] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); } break; case 2: { if(m5data.o_numbers[2] <= 0) { if(m5data.o_numbers[0]||m5data.o_numbers[1]) { m5data.o_numbers[2] = 9; m5data.overflow_flag_low = 2; } else { m5data.o_numbers[2] = 0; } } else { m5data.o_numbers[2] = m5data.o_numbers[2] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); } break; case 3: { if(m5data.o_numbers[3] <= 0) { if(m5data.o_numbers[0]||m5data.o_numbers[1]||m5data.o_numbers[2]) { m5data.o_numbers[3] = 9; m5data.overflow_flag_low = 3; } else { m5data.o_numbers[3] = 0; } } else { m5data.o_numbers[3] = m5data.o_numbers[3] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); } break; case 4: { if(m5data.o_numbers[4] <= 0) { if(m5data.o_numbers[0]||m5data.o_numbers[1]||m5data.o_numbers[2]||m5data.o_numbers[3]) { m5data.o_numbers[4] = 9; m5data.overflow_flag_low = 4; } else { m5data.o_numbers[4] = 0; } } else { m5data.o_numbers[4] = m5data.o_numbers[4] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); } break; case 5: { if(m5data.o_numbers[5] <= 0) { if(m5data.o_numbers[0]||m5data.o_numbers[1]||m5data.o_numbers[2]||m5data.o_numbers[3]||m5data.o_numbers[4]) { m5data.o_numbers[5] = 9; m5data.overflow_flag_low = 5; } else { m5data.o_numbers[5] = 0; } } else { m5data.o_numbers[5] = m5data.o_numbers[5] - 1; } lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } break; default: break; } if(m5data.overflow_flag_low) //发生向下溢出 { int oftemp = 0; oftemp = 100000*m5data.o_numbers[0] + 10000*m5data.o_numbers[1] + 1000*m5data.o_numbers[2] + \ 100*m5data.o_numbers[3] + 10*m5data.o_numbers[4] + m5data.o_numbers[5]; switch (m5data.overflow_flag_low) { case 1: { oftemp -= 100000; } break; case 2: { oftemp -= 10000; } break; case 3: { oftemp -= 1000; } break; case 4: { oftemp -= 100; } break; case 5: { oftemp -= 10; } break; default: break; } m5data.o_numbers[0] = (oftemp/100000 > 9)?(0):(oftemp/100000); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); m5data.o_numbers[1] = (oftemp/10000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); m5data.o_numbers[2] = (oftemp/1000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); m5data.o_numbers[3] = (oftemp/100) % 10; lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); m5data.o_numbers[4] = (oftemp/10) % 10; lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); m5data.o_numbers[5] = oftemp % 10; lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); m5data.overflow_flag_low = 0; } } break; case KEY_BACK: //闲置,预留 { key = 0; } break; default: { key = 0; } break; } } void scr_init_run(void) { if( m5data.scr_init_cnt <= SCREEN_INIT_CNT_MAX ) { if( m5data.tick_prv == -1 ) { m5data.tick_prv = xTaskGetTickCount(); //记录起始时刻 }else { m5data.tick_cur = xTaskGetTickCount(); //记录当前时刻 if(m5data.tick_cur < m5data.tick_prv) //防止溢出(当前tick小于前一刻的tick) { m5data.tick_prv = -1; //溢出后复位并返回 m5data.tick_cur = -1; return; } if(m5data.tick_cur - m5data.tick_prv >= 1000) //tick间隔达到目标后,执行功能 { m5data.tick_prv = -1; m5data.tick_cur = -1; m5data.scr_init_bar = m5data.scr_init_cnt * ( 100/SCREEN_INIT_CNT_MAX ); lv_bar_set_value(guider_ui.screen_init_bar_1, m5data.scr_init_bar, LV_ANIM_OFF); m5data.scr_init_cnt ++; } } } else { // //开机动画结束后,清除初始界面内部组件,保留对象,释放内存 // lv_obj_clean(guider_ui.screen_init); //加载主界面 setup_scr_screen_main(&guider_ui); lv_scr_load(guider_ui.screen_main); //删除初始界面对象,释放剩余内存 lv_obj_del(guider_ui.screen_init); m5data.scr_init_flag = 1; //开机动画结束,只执行一次 m5data.scr_now = SCREEN_MAIN; //开机动画结束后,默认进入主界面 } } void scr_main_run(void) { //运行时间显示 runtime_show(); //1000ms //电池电量显示 battery_show(); //3000ms //动态曲线绘制 plot_drawing(); //1500ms //当前输入值/测量值显示,已迁移至runtime_show(),两者共用 heart_1000ms_flag //input_value_show(); //1000ms //数值闪烁 num_twinkle(); //1000ms } void runtime_show(void) { if(heart_1000ms_flag) { heart_1000ms_flag = 0; m5data.runtime_seconds ++; if( m5data.runtime_seconds > 59) //秒溢出 { m5data.runtime_minutes ++; //溢出后分钟进一 m5data.runtime_seconds = 0; } if(m5data.runtime_minutes > 59) //分钟溢出 { m5data.runtime_hours ++; //溢出后小时进一 m5data.runtime_minutes = 0; } if(m5data.runtime_hours > 99) //小时溢出 { m5data.runtime_seconds = 0; //溢出后全部归零 m5data.runtime_minutes = 0; m5data.runtime_hours = 0; } // 00:00:00 sprintf(m5data.runtime_show, "%02d:%02d:%02d",m5data.runtime_hours, m5data.runtime_minutes, m5data.runtime_seconds); lv_span_set_text(guider_ui.screen_main_spangroup_1_span, m5data.runtime_show); input_value_show(); //显示当前测量值 } } void battery_show(void) { //用于测试显示功能,每隔3秒切换一帧动画 if(battery_3000ms_flag) { battery_3000ms_flag = 0; lv_img_set_src(guider_ui.screen_main_animimg_1, screen_main_animimg_1_imgs[m5data.battery_cnt]); m5data.battery_cnt = (m5data.battery_cnt >= 5)?(0):( m5data.battery_cnt + 1); } } void input_value_show(void) { int32_t pvi = 0; pvi = (int32_t)(pltdata.yreal_scd_value * 1000); //副轴用于绘制实时输入测量值 //显示当前测量值 m5data.i_numbers[0] = (pvi/100000 > 9)?(0):(pvi/100000); lv_img_set_src(guider_ui.screen_main_animimg_9, screen_main_animimg_9_imgs[ m5data.i_numbers[0] ]); m5data.i_numbers[1] = (pvi/10000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_10, screen_main_animimg_10_imgs[ m5data.i_numbers[1] ]); m5data.i_numbers[2] = (pvi/1000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_11, screen_main_animimg_11_imgs[ m5data.i_numbers[2] ]); m5data.i_numbers[3] = (pvi/100) % 10; lv_img_set_src(guider_ui.screen_main_animimg_12, screen_main_animimg_12_imgs[ m5data.i_numbers[3] ]); m5data.i_numbers[4] = (pvi/10) % 10; lv_img_set_src(guider_ui.screen_main_animimg_13, screen_main_animimg_13_imgs[ m5data.i_numbers[4] ]); m5data.i_numbers[5] = pvi % 10; lv_img_set_src(guider_ui.screen_main_animimg_14, screen_main_animimg_14_imgs[ m5data.i_numbers[5] ]); } void io_on2off_status(void) { switch (m5data.io_on2off) { case IO_ON: { switch (m5data.io_mode) { case IO_OUTPUT: { //输入变回黑色,输出变为绿色 lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x06ff00), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case IO_INPUT: { //输出变回黑色,输入变为绿色 lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x06ff00), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); } break; default: break; } } break; case IO_OFF: { switch (m5data.io_mode) { case IO_OUTPUT: { //输入变回黑色,输出变为红色 lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0xff0027), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case IO_INPUT: { //输出变回黑色,输入变为红色 lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0xff0027), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT); } break; default: break; } } break; default: break; } } void key_functions_setting(void) { switch (key) { case KEY_BACK: { key = 0; //所有选项卡均未选中时,返回主界面,否则熄灭当前选中 if(tabdata.tab_cursor_inner == 99) { tabdata.tab_cursor = 0; //加载主界面 setup_scr_screen_main(&guider_ui); lv_scr_load(guider_ui.screen_main); //切换至菜单后,清除主界面对象,释放内存 lv_obj_del(guider_ui.screen_setting); m5data.scr_now = SCREEN_MAIN; //当前界面为主界面 scr_main_recover(); //恢复之前显示的数据 } else { //某个选项卡被选中时,熄灭内部选中的内容 switch (tabdata.tab_cursor) { case ITEMS_0: { setting_items_check(99, tabdata.tab_cursor_inner, 1); //熄灭当前内容 tabdata.tab_cursor_inner = 99; tabdata.tab_cursor_inner_prv = 99; } break; case ITEMS_1: { tabdata.tab_cursor_inner = 99; tabdata.tab_cursor_inner_prv = 99; } break; case ITEMS_2: { tabdata.tab_cursor_inner = 99; tabdata.tab_cursor_inner_prv = 99; } break; case ITEMS_3: { tabdata.tab_cursor_inner = 99; tabdata.tab_cursor_inner_prv = 99; } break; default: break; } } } break; case KEY_UP: { key = 0; if(tabdata.tab_cursor_inner == 99) //内部游标为99时,说明未选中任何一个选项卡,此时的up和down用于切换选项卡 { tabdata.tab_cursor_prv = tabdata.tab_cursor; tabdata.tab_cursor = (tabdata.tab_cursor <= 0)?(3):(tabdata.tab_cursor - 1); setting_items_check(tabdata.tab_cursor, tabdata.tab_cursor_prv, 0); } else { //选中某一选项卡后,对选项卡内部的内容进行选择 switch (tabdata.tab_cursor) { case ITEMS_0: { switch (tabdata.tab_cursor_inner) { case CONTENT_0_0: { tabdata.content00 = !tabdata.content00; //单位改变时,相关数值也要跟随 setting_update(ITEMS_0, CONTENT_0_0); setting_update(ITEMS_0, CONTENT_0_1); setting_update(ITEMS_0, CONTENT_0_2); } break; case CONTENT_0_1: { if(tabdata.content00) { tabdata.content01_mV = (tabdata.content01_mV >= 500)?(tabdata.content02_mV):(tabdata.content01_mV + 1); } else { tabdata.content01_V = (tabdata.content01_V >= 30)?(tabdata.content02_V):(tabdata.content01_V + 1); } setting_update(ITEMS_0, CONTENT_0_1); } break; case CONTENT_0_2: { if(tabdata.content00) { tabdata.content02_mV = (tabdata.content02_mV >= tabdata.content01_mV)?(0):(tabdata.content02_mV + 1); } else { tabdata.content02_V = (tabdata.content02_V >= tabdata.content01_V)?(0):(tabdata.content02_V + 1); } setting_update(ITEMS_0, CONTENT_0_2); } break; default: break; } } break; case ITEMS_1: { } break; case ITEMS_2: { } break; case ITEMS_3: { } break; default: break; } } } break; case KEY_DOWN: { key = 0; if(tabdata.tab_cursor_inner == 99) { tabdata.tab_cursor_prv = tabdata.tab_cursor; tabdata.tab_cursor = (tabdata.tab_cursor >= 3)?(0):(tabdata.tab_cursor + 1); setting_items_check(tabdata.tab_cursor, tabdata.tab_cursor_prv, 0); } else { switch (tabdata.tab_cursor) { case ITEMS_0: { } break; case ITEMS_1: { } break; case ITEMS_2: { } break; case ITEMS_3: { } break; default: break; } } } break; case KEY_OK: { key = 0; switch (tabdata.tab_cursor) { case ITEMS_0: { if(tabdata.tab_cursor_inner == 99) { tabdata.tab_cursor_inner = 0; tabdata.tab_cursor_inner_prv = 0; setting_items_check(tabdata.tab_cursor_inner, 99, 1); } else { } } break; case ITEMS_1: { tabdata.tab_cursor_inner = 0; } break; case ITEMS_2: { tabdata.tab_cursor_inner = 0; } break; case ITEMS_3: { tabdata.tab_cursor_inner = 0; } break; default: break; } } break; case KEY_LEFT: { key = 0; switch (tabdata.tab_cursor) { case ITEMS_0: { tabdata.tab_cursor_inner_prv = tabdata.tab_cursor_inner; tabdata.tab_cursor_inner = (tabdata.tab_cursor_inner <= 0)?(2):(tabdata.tab_cursor_inner - 1); setting_items_check(tabdata.tab_cursor_inner, tabdata.tab_cursor_inner_prv, 1); } break; case ITEMS_1: {} break; case ITEMS_2: {} break; case ITEMS_3: { } break; default: break; } } break; case KEY_RIGHT: { key = 0; switch (tabdata.tab_cursor) { case ITEMS_0: { tabdata.tab_cursor_inner_prv = tabdata.tab_cursor_inner; tabdata.tab_cursor_inner = (tabdata.tab_cursor_inner >= 2)?(0):(tabdata.tab_cursor_inner + 1); setting_items_check(tabdata.tab_cursor_inner, tabdata.tab_cursor_inner_prv, 1); } break; case ITEMS_1: {} break; case ITEMS_2: {} break; case ITEMS_3: { } break; default: break; } } break; default: { key = 0; } break; } } void setting_items_check(uint8_t cursor, uint8_t cursor_prv, uint8_t tab_cont) { if(tab_cont) //内容点亮和熄灭 { switch (tabdata.tab_cursor) { case ITEMS_0: { switch (cursor) //点亮cursor { case 0: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_01, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case 1: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_03, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case 2: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_05, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; default: break; } switch (cursor_prv) //熄灭cursor_prv { case 0: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_01, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case 1: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_03, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case 2: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_05, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; default: break; } } break; case ITEMS_1: { } break; case ITEMS_2: { } break; case ITEMS_3: { } break; default: break; } } else //标签点亮和熄灭 { switch (cursor) //点亮当前选中目标 { case ITEMS_0: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s0, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_clear_flag(guider_ui.screen_setting_label_01, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(guider_ui.screen_setting_label_03, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(guider_ui.screen_setting_label_05, LV_OBJ_FLAG_HIDDEN); } break; case ITEMS_1: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s1, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_add_flag(guider_ui.screen_setting_label_01, LV_OBJ_FLAG_HIDDEN); } break; case ITEMS_2: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s2, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_add_flag(guider_ui.screen_setting_label_03, LV_OBJ_FLAG_HIDDEN); } break; case ITEMS_3: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s3, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT); lv_obj_add_flag(guider_ui.screen_setting_label_05, LV_OBJ_FLAG_HIDDEN); } break; default: break; } switch (cursor_prv) //熄灭前一时刻的目标 { case ITEMS_0: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s0, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case ITEMS_1: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case ITEMS_2: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s2, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; case ITEMS_3: { lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s3, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); } break; default: break; } } } void setting_update(uint8_t ite, uint8_t con) { char str_temp[10]; switch (ite) { case ITEMS_0: { switch (con) { case CONTENT_0_0: { if(tabdata.content00) { lv_label_set_text(guider_ui.screen_setting_label_01, "mV"); } else { lv_label_set_text(guider_ui.screen_setting_label_01, "V"); } } break; case CONTENT_0_1: { if(tabdata.content00) { sprintf(str_temp,"%d",tabdata.content01_mV); lv_label_set_text(guider_ui.screen_setting_label_03, str_temp); pltdata.yreal_pri_up = tabdata.content01_mV; pltdata.yreal_scd_up = tabdata.content01_mV; } else { sprintf(str_temp,"%d",tabdata.content01_V); lv_label_set_text(guider_ui.screen_setting_label_03, str_temp); pltdata.yreal_pri_up = tabdata.content01_V; pltdata.yreal_scd_up = tabdata.content01_V; } } break; case CONTENT_0_2: { if(tabdata.content00) { sprintf(str_temp,"%d",tabdata.content02_mV); lv_label_set_text(guider_ui.screen_setting_label_05, str_temp); pltdata.yreal_pri_low = tabdata.content02_mV; pltdata.yreal_scd_low = tabdata.content02_mV; } else { sprintf(str_temp,"%d",tabdata.content02_V); lv_label_set_text(guider_ui.screen_setting_label_05, str_temp); pltdata.yreal_pri_low = tabdata.content02_V; pltdata.yreal_scd_low = tabdata.content02_V; } } break; default: break; } } break; case ITEMS_1: {} break; case ITEMS_2: {} break; case ITEMS_3: {} break; default: break; } } void scr_main_recover(void) { // 运行时间 和 电池电量 在主界面的函数中已存在,无需额外恢复 // 曲线需要在 setup_scr_screen_main.c 中修改 io_on2off_status(); //IN&OUT, ON&OFF //输入&输出、工作模式&类型 switch (m5data.io_mode) //输入、输出模式切换 { case IO_OUTPUT: { switch (m5data.output_mode) //功能切换 { case SIG_VOLTAGE: { lv_label_set_text(guider_ui.screen_main_label_Mode, "Volt"); switch (m5data.output_mode_type) //功能类型切换,电压V/mV { case VOLTAGE_MV: { lv_label_set_text(guider_ui.screen_main_label_unit, "mV"); pltdata.yreal_pri_up = tabdata.content01_mV; pltdata.yreal_scd_up = tabdata.content01_mV; pltdata.yreal_pri_low = tabdata.content02_mV; pltdata.yreal_scd_low = tabdata.content02_mV; } break; case VOLTAGE_V: { lv_label_set_text(guider_ui.screen_main_label_unit, "V"); pltdata.yreal_pri_up = tabdata.content01_V; pltdata.yreal_scd_up = tabdata.content01_V; pltdata.yreal_pri_low = tabdata.content02_V; pltdata.yreal_scd_low = tabdata.content02_V; } break; default: break; } } break; case SIG_CURRENT: //电流 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre"); } break; case SIG_TC: //热电偶 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc"); } break; case SIG_RTD: //热电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD"); } break; default: break; } } break; case IO_INPUT: { switch (m5data.input_mode) { case SIG_VOLTAGE: { lv_label_set_text(guider_ui.screen_main_label_Mode, "Volt"); switch (m5data.input_mode) //功能类型切换,电压V/mV { case VOLTAGE_MV: { lv_label_set_text(guider_ui.screen_main_label_unit, "mV"); pltdata.yreal_pri_up = tabdata.content01_mV; pltdata.yreal_scd_up = tabdata.content01_mV; pltdata.yreal_pri_low = tabdata.content02_mV; pltdata.yreal_scd_low = tabdata.content02_mV; } break; case VOLTAGE_V: { lv_label_set_text(guider_ui.screen_main_label_unit, "V"); pltdata.yreal_pri_up = tabdata.content01_V; pltdata.yreal_scd_up = tabdata.content01_V; pltdata.yreal_pri_low = tabdata.content02_V; pltdata.yreal_scd_low = tabdata.content02_V; } break; default: break; } } break; case SIG_CURRENT: //电流 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre"); } break; case SIG_TC: //热电偶 { lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc"); } break; case SIG_RTD: //热电阻 { lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD"); } break; default: break; } } break; default: break; } //设定值&测量值 lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } void num_twinkle(void) //数值闪烁 { if(m5data.twk_flag == 0) { return; } else { //闪烁开始 switch (m5data.io_cursor) //闪烁指定位置 { case 0: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; case 1: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; case 2: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; case 3: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; case 4: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; case 5: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; m5data.twk_cnt++; if(m5data.twk_flip) { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); m5data.twk_flip = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ 10 ]); m5data.twk_flip = 1; } } } break; default: break; } } if(m5data.twk_cnt > TWINKLE_CNT_MAX) // 10秒无动作(上、下、左、右无按下)后停止闪烁 { m5data.twk_cnt = 0; m5data.twk_flip = 0; m5data.twk_flag = 0; m5data.io_cursor_prv = m5data.io_cursor; switch (m5data.io_cursor) //防止空白残留 { case 0: { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]); } break; default: break; } } } //实时曲线绘制 //将实际值线性转换成绘图值 void plot_drawing(void) { if(plot_1500ms_flag) { plot_1500ms_flag = 0; //输出曲线 pltdata.yreal_pri_value = m5data.o_numbers[0]*100 + m5data.o_numbers[1]*10 + m5data.o_numbers[2] + \ m5data.o_numbers[3]*(float32)0.1 + m5data.o_numbers[4]*(float32)0.01 + m5data.o_numbers[5]*(float32)0.001; pltdata.y_pri_value = ( pltdata.y_pri_up - pltdata.y_pri_low ) * \ ( pltdata.yreal_pri_value - pltdata.yreal_pri_low ) / ( pltdata.yreal_pri_up - pltdata.yreal_pri_low ); if(pltdata.y_pri_value >= pltdata.y_pri_up) pltdata.y_pri_value = pltdata.y_pri_up; if(pltdata.y_pri_value <= pltdata.y_pri_low) pltdata.y_pri_value = pltdata.y_pri_low; lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_0, pltdata.y_pri_value); //输入曲线 pltdata.y_scd_value = ( pltdata.y_scd_up - pltdata.y_scd_low ) * \ ( pltdata.yreal_scd_value - pltdata.yreal_scd_low ) / ( pltdata.yreal_scd_up - pltdata.yreal_scd_low ); if(pltdata.y_scd_value >= pltdata.y_scd_up) pltdata.y_scd_value = pltdata.y_scd_up; if(pltdata.y_scd_value <= pltdata.y_scd_low) pltdata.y_scd_value = pltdata.y_scd_low; lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_1, pltdata.y_scd_value); } } void scr_setting_recover(void) { //在这里恢复选项卡0的显示内容 //ITEMS_0 char str_temp[10]; if(tabdata.content00) { lv_label_set_text(guider_ui.screen_setting_label_01, "mV"); sprintf(str_temp,"%d",tabdata.content01_mV); lv_label_set_text(guider_ui.screen_setting_label_03, str_temp); sprintf(str_temp,"%d",tabdata.content02_mV); lv_label_set_text(guider_ui.screen_setting_label_05, str_temp); } else { lv_label_set_text(guider_ui.screen_setting_label_01, "V"); sprintf(str_temp,"%d",tabdata.content01_V); lv_label_set_text(guider_ui.screen_setting_label_03, str_temp); sprintf(str_temp,"%d",tabdata.content02_V); lv_label_set_text(guider_ui.screen_setting_label_05, str_temp); } } void scr_setting_run(void) //详细设置界面 { } /**********test5**********/