/* * @Author: wujunchao wujunchao@wuxismart.com * @Date: 2024-12-27 11:50:56 * @LastEditors: wujunchao wujunchao@wuxismart.com * @LastEditTime: 2025-02-06 17:00:55 * @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 } #if 1 /**********test5**********/ MENU_DATA m5data; PLOT_DATA pltdata; // char buff_io[2]; void menu_data_init(void) { //general m5data.scr_now = SCREEN_INIT; m5data.tick_prv = -1; m5data.tick_cur = -1; //screen_init m5data.scr_init_flag = 0; m5data.scr_init_bar = 0; m5data.scr_init_cnt = 0; //screen_main { m5data.runtime_seconds = 0; m5data.runtime_minutes = 0; m5data.runtime_hours = 0; m5data.battery_cnt = 0; m5data.io_cursor = 3; //当前游标位置,[000,000]:0~5 m5data.io_cursor_prv = 3; //前一时刻游标位置 m5data.twk_flag = 0; //0停止闪烁,1开始闪烁 m5data.io_mode = IO_OUTPUT; //默认工作模式,0:输入IN,1:输出OUT for(uint8_t i = 0; i < 6; i++) { m5data.io_numbers[i] = 0; } m5data.input_mode = SIG_VOLTAGE; m5data.input_mode_type = VOLTAGE_MV; m5data.output_mode = SIG_VOLTAGE; m5data.output_mode_type = VOLTAGE_MV; // memset(buff_io,0,2); //用于lvgl文本显示 //图标显示值(int) pltdata.y_pri_low = 0; pltdata.y_pri_up = 100; pltdata.y_scd_low = 0; pltdata.y_scd_up = 100; pltdata.y_pri_value = 0; pltdata.y_scd_value = 0; //实际物理量(float32) pltdata.yreal_pri_low = 4; pltdata.yreal_pri_up = 20; pltdata.yreal_scd_low = 4; pltdata.yreal_scd_up = 20; pltdata.yreal_pri_value = 0; pltdata.yreal_scd_value = 0; } //screen_setting } void menu_test5(void) { 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; } } } uint8_t twk_cnt = 0; //闪烁计数 uint8_t overflow_flag = 0; //溢出标志 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; lv_span_set_text(guider_ui.screen_main_spangroup_3_span, "OUT"); } 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_span_set_text(guider_ui.screen_main_spangroup_5_span, "Volt"); } break; case SIG_CURRENT: //电流 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Fre"); } break; case SIG_TC: //热电偶 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "TC"); } break; case SIG_RTD: //热电阻 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "RTD"); } break; default: break; } } break; case KEY_UP: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) { case 0: { m5data.io_numbers[0] = (m5data.io_numbers[0] >= 9)?(0):(m5data.io_numbers[0] + 1); // sprintf(buff_io,"%d",m5data.io_numbers[0]); // lv_span_set_text(guider_ui.screen_main_spangroup_7_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.io_numbers[0] ]); } break; case 1: { if(m5data.io_numbers[1] >= 9) { m5data.io_numbers[1] = 0; overflow_flag = 1; }else { m5data.io_numbers[1]++; } // sprintf(buff_io,"%d",m5data.io_numbers[1]); // lv_span_set_text(guider_ui.screen_main_spangroup_8_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); } break; case 2: { if(m5data.io_numbers[2] >= 9) { m5data.io_numbers[2] = 0; overflow_flag = 2; }else { m5data.io_numbers[2]++; } // sprintf(buff_io,"%d",m5data.io_numbers[2]); // lv_span_set_text(guider_ui.screen_main_spangroup_9_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); } break; case 3: { if(m5data.io_numbers[3] >= 9) { m5data.io_numbers[3] = 0; overflow_flag = 3; }else { m5data.io_numbers[3]++; } // sprintf(buff_io,"%d",m5data.io_numbers[3]); // lv_span_set_text(guider_ui.screen_main_spangroup_10_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); } break; case 4: { if(m5data.io_numbers[4] >= 9) { m5data.io_numbers[4] = 0; overflow_flag = 4; }else { m5data.io_numbers[4]++; } // sprintf(buff_io,"%d",m5data.io_numbers[4]); // lv_span_set_text(guider_ui.screen_main_spangroup_11_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); } break; case 5: { if(m5data.io_numbers[5] >= 9) { m5data.io_numbers[5] = 0; overflow_flag = 5; }else { m5data.io_numbers[5]++; } // sprintf(buff_io,"%d",m5data.io_numbers[5]); // lv_span_set_text(guider_ui.screen_main_spangroup_12_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]); } break; default: break; } if(overflow_flag) //发生向上溢出 { int oftemp = 0; oftemp = 100000*m5data.io_numbers[0] + 10000*m5data.io_numbers[1] + 1000*m5data.io_numbers[2] + \ 100*m5data.io_numbers[3] + 10*m5data.io_numbers[4] + m5data.io_numbers[5]; switch (overflow_flag) { 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.io_numbers[0] = (oftemp/100000 > 9)?(0):(oftemp/100000); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.io_numbers[0] ]); m5data.io_numbers[1] = (oftemp/10000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); m5data.io_numbers[2] = (oftemp/1000) % 10; lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); m5data.io_numbers[3] = (oftemp/100) % 10; lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); m5data.io_numbers[4] = (oftemp/10) % 10; lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); m5data.io_numbers[5] = oftemp % 10; lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]); overflow_flag = 0; } } break; case KEY_MENU: { key = 0; //加载菜单界面 setup_scr_screen_setting(&guider_ui); lv_scr_load(guider_ui.screen_setting); //切换至菜单后,清除主界面对象,释放内存 guider_ui.screen_main_del = true; lv_obj_del(guider_ui.screen_main); m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单 } break; case KEY_IN: { key = 0; if(m5data.io_mode == IO_OUTPUT) { m5data.io_mode = IO_INPUT; m5data.input_mode = m5data.output_mode; lv_span_set_text(guider_ui.screen_main_spangroup_3_span, "IN"); } 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_span_set_text(guider_ui.screen_main_spangroup_5_span, "Volt"); } break; case SIG_CURRENT: //电流 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Cur"); } break; case SIG_RESISTANT: //电阻 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Res"); } break; case SIG_FREQUENCE: //频率 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Fre"); } break; case SIG_TC: //热电偶 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "TC"); } break; case SIG_RTD: //热电阻 { lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "RTD"); } break; default: break; } } break; case KEY_LEFT: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 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.io_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_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_line_1, IO_CURSOR_START1 + m5data.io_cursor * IO_CURSOR_INTERVAL, 225); // } // else // { // lv_obj_set_pos(guider_ui.screen_main_line_1, IO_CURSOR_START2 + (m5data.io_cursor -3 ) * IO_CURSOR_INTERVAL, 225); // } } break; case KEY_OK: { key = 0; if(m5data.io_mode == IO_ON) { m5data.io_mode = IO_OFF; lv_span_set_text(guider_ui.screen_main_spangroup_6_span, "OFF"); } else { m5data.io_mode = IO_ON; lv_span_set_text(guider_ui.screen_main_spangroup_6_span, "ON"); } } break; case KEY_RIGHT: { key = 0; m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始 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.io_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_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_line_1, IO_CURSOR_START1 + m5data.io_cursor * IO_CURSOR_INTERVAL, 225); // } // else // { // lv_obj_set_pos(guider_ui.screen_main_line_1, IO_CURSOR_START2 + (m5data.io_cursor -3 ) * IO_CURSOR_INTERVAL, 225); // } } 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_span_set_text(guider_ui.screen_main_spangroup_4_span, "mV"); } break; case VOLTAGE_V: { lv_span_set_text(guider_ui.screen_main_spangroup_4_span, "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_span_set_text(guider_ui.screen_main_spangroup_4_span, "mV"); } break; case VOLTAGE_V: { lv_span_set_text(guider_ui.screen_main_spangroup_4_span, "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; // 上、下、左、右 任意一个键按下后,闪烁开始 twk_cnt = 0; //每次按下后闪烁计数清零 switch (m5data.io_cursor) { case 0: { m5data.io_numbers[0] = (m5data.io_numbers[0] <= 0)?(9):(m5data.io_numbers[0] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[0]); // lv_span_set_text(guider_ui.screen_main_spangroup_7_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.io_numbers[0] ]); } break; case 1: { m5data.io_numbers[1] = (m5data.io_numbers[1] <= 0)?(9):(m5data.io_numbers[1] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[1]); // lv_span_set_text(guider_ui.screen_main_spangroup_8_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); } break; case 2: { m5data.io_numbers[2] = (m5data.io_numbers[2] <= 0)?(9):(m5data.io_numbers[2] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[2]); // lv_span_set_text(guider_ui.screen_main_spangroup_9_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); } break; case 3: { m5data.io_numbers[3] = (m5data.io_numbers[3] <= 0)?(9):(m5data.io_numbers[3] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[3]); // lv_span_set_text(guider_ui.screen_main_spangroup_10_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); } break; case 4: { m5data.io_numbers[4] = (m5data.io_numbers[4] <= 0)?(9):(m5data.io_numbers[4] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[4]); // lv_span_set_text(guider_ui.screen_main_spangroup_11_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); } break; case 5: { m5data.io_numbers[5] = (m5data.io_numbers[5] <= 0)?(9):(m5data.io_numbers[5] - 1); // sprintf(buff_io,"%d",m5data.io_numbers[5]); // lv_span_set_text(guider_ui.screen_main_spangroup_12_span, buff_io); lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]); } break; default: break; } } break; // case KEY_BACK: //迁移至函数 key_functions_setting // { // key = 0; // //加载主界面 // setup_scr_screen_main(&guider_ui); // lv_scr_load(guider_ui.screen_main); // //切换至菜单后,清除主界面对象,释放内存 // guider_ui.screen_setting_del = true; // lv_obj_del(guider_ui.screen_setting); // m5data.scr_now = SCREEN_MAIN; //当前界面为主界面 // } // 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) //防止溢出 { m5data.tick_prv = -1; m5data.tick_cur = -1; return; } if(m5data.tick_cur - m5data.tick_prv >= 1000) { 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 { //加载主界面 setup_scr_screen_main(&guider_ui); lv_scr_load(guider_ui.screen_main); //开机动画结束后,清除该对象,释放内存 guider_ui.screen_init_del = true; lv_obj_del(guider_ui.screen_init); m5data.scr_init_flag = 1; //开机动画结束,只执行一次 m5data.scr_now = SCREEN_MAIN; //开机动画结束后,默认进入主界面 } } void scr_main_run(void) //主界面 { //运行时间显示 runtime_show(); //电池电量显示 battery_show(); //动态曲线绘制 plot_drawing(); //当前输出值、工作模式、IN/OUT、ON/OFF、当前工作模式的单位或类型。该部分内容已迁移至按键功能,按键按下后再对显示内容进行设置 //数值闪烁 num_twinkle(); } 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; } 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); } } 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 key_functions_setting(void) //按键功能,详细设置菜单界面 { switch (key) { case KEY_BACK: { key = 0; //加载主界面 setup_scr_screen_main(&guider_ui); lv_scr_load(guider_ui.screen_main); //切换至菜单后,清除主界面对象,释放内存 guider_ui.screen_setting_del = true; lv_obj_del(guider_ui.screen_setting); m5data.scr_now = SCREEN_MAIN; //当前界面为主界面 } break; default: { key = 0; } break; } } uint8_t twk_p = 0; 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; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.io_numbers[0] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ 10 ]); twk_p = 1; } } } break; case 1: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ 10 ]); twk_p = 1; } } } break; case 2: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ 10 ]); twk_p = 1; } } } break; case 3: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ 10 ]); twk_p = 1; } } } break; case 4: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ 10 ]); twk_p = 1; } } } break; case 5: { if(twk_1000ms_flag) { twk_1000ms_flag = 0; twk_cnt++; if(twk_p) { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]); twk_p = 0; }else { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ 10 ]); twk_p = 1; } } } break; default: break; } } if(twk_cnt > 10) // 10秒无动作(上、下、左、右无按下)后停止闪烁 { twk_cnt = 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.io_numbers[0] ]); } break; case 1: { lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]); } break; case 2: { lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]); } break; case 3: { lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]); } break; case 4: { lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]); } break; case 5: { lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]); } break; default: break; } } } void plot_drawing(void) //实时曲线绘制 { if(plot_1500ms_flag) { plot_1500ms_flag = 0; pltdata.yreal_pri_value = m5data.io_numbers[0]*100 + m5data.io_numbers[1]*10 + m5data.io_numbers[2] + \ m5data.io_numbers[3]*(float32)0.1 + m5data.io_numbers[4]*(float32)0.01 + m5data.io_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 ); lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_0, pltdata.y_pri_value); } } void scr_setting_run(void) //详细设置界面 { } /**********test5**********/ #else /**********test4**********/ uint8_t scr_init_bar1 = 0, scr_init_cnt = 0, scr_init_flag = 0; int tick_prv = -1, tick_cur = -1; void menu_test4() { if(scr_init_flag == 0) { scr_init_run(); }else { scr_main_run(); } if(key == 103) { key = 0; menu_test4_reset(); } } void scr_init_run(void) { if( scr_init_cnt <= 4 ) { if( tick_prv == -1 ) { tick_prv = xTaskGetTickCount(); }else { tick_cur = xTaskGetTickCount(); if(tick_cur - tick_prv >= 1000) { tick_prv = -1; tick_cur = -1; scr_init_bar1 = scr_init_cnt*25; lv_bar_set_value(guider_ui.screen_init_bar_1, scr_init_bar1, LV_ANIM_OFF); scr_init_cnt ++; } } }else { if( tick_prv == -1 ) { tick_prv = xTaskGetTickCount(); }else { tick_cur = xTaskGetTickCount(); if(tick_cur - tick_prv >= 250) { scr_init_flag = 1; tick_prv = -1; tick_cur = -1; // lv_scr_load_anim(guider_ui.screen_main, LV_SCR_LOAD_ANIM_NONE, 100, 0, 1); ?会进入错误中断,原因未知 setup_scr_screen_main(&guider_ui); lv_scr_load(guider_ui.screen_main); //开机动画结束后,清除该对象,释放内存 guider_ui.screen_init_del = true; lv_obj_del(guider_ui.screen_init); } } } } SCR_MAIN scr_main; int nowtime_hours = 0, nowtime_minutes = 0, nowtime_seconds = 0; void scr_main_run(void) { //运行时间显示 nowtime_show(); //电池电量显示 battery_show(); //曲线绘制 & 输出输入值显示 dynamic_plot(); } void nowtime_show(void) { if(heart_1000ms_flag) { heart_1000ms_flag = 0; nowtime_seconds++; if(nowtime_seconds > 59) { nowtime_minutes++; nowtime_seconds = 0; } if(nowtime_minutes > 59) { nowtime_hours++; nowtime_minutes = 0; } if(nowtime_hours > 99) { nowtime_seconds = 0; nowtime_minutes = 0; nowtime_hours = 0; } sprintf(scr_main.sig_runtime, "%02d:%02d:%02d",nowtime_hours, nowtime_minutes,nowtime_seconds); lv_span_set_text(guider_ui.screen_main_spangroup_1_span, scr_main.sig_runtime); } } uint8_t bt_cnt = 0; void battery_show(void) { if(battery_3000ms_flag) { battery_3000ms_flag = 0; lv_img_set_src(guider_ui.screen_main_animimg_1, screen_main_animimg_1_imgs[bt_cnt]); bt_cnt = (bt_cnt >= 5)?(0):( bt_cnt + 1); } } uint8_t plot_cnt = 0; void dynamic_plot(void) { if(plot_1500ms_flag) { plot_1500ms_flag = 0; lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_0, 10 * plot_cnt); plot_cnt = (plot_cnt > 9)?(0):( plot_cnt + 1); sprintf(scr_main.sig_data_io, "%03d.%03d", 0, 10 * plot_cnt); lv_span_set_text(guider_ui.screen_main_spangroup_2_span, scr_main.sig_data_io); if(plot_cnt % 2) { lv_span_set_text(guider_ui.screen_main_spangroup_4_span, "OUT"); }else{ lv_span_set_text(guider_ui.screen_main_spangroup_4_span, "IN"); } } } void menu_test4_reset(void) { scr_init_flag = 0; scr_init_bar1 = 0; scr_init_cnt = 0; scr_init_flag = 0; tick_prv = -1; tick_cur = -1; nowtime_hours = 0; nowtime_minutes = 0; nowtime_seconds = 0; bt_cnt = 0; plot_cnt = 0; setup_scr_screen_init(&guider_ui); lv_scr_load(guider_ui.screen_init); guider_ui.screen_main_del = true; lv_obj_del(guider_ui.screen_main); guider_ui.screen_setting_del = true; lv_obj_del(guider_ui.screen_setting); } /**********test4**********/ /**********test3**********/ // uint8_t scr_init_bar1 = 0, scr_init_cnt = 0, scr_init_flag = 0; // int tick_prv = -1, tick_cur = -1; // void menu_test3(void) // { // if(scr_init_flag == 0) // { // scr_init_run(); // }else // { // scr_main_run(); // } // } // void scr_init_run(void) // { // if( scr_init_cnt <= 5 ) // { // if( tick_prv == -1 ) // { // tick_prv = xTaskGetTickCount(); // }else // { // tick_cur = xTaskGetTickCount(); // if(tick_cur - tick_prv >= 1000) // { // tick_prv = -1; // tick_cur = -1; // scr_init_bar1 = scr_init_cnt*20; // lv_bar_set_value(guider_ui.screen_init_bar_1, scr_init_bar1, LV_ANIM_OFF); // scr_init_cnt ++; // } // } // }else // { // if( tick_prv == -1 ) // { // tick_prv = xTaskGetTickCount(); // }else // { // tick_cur = xTaskGetTickCount(); // if(tick_cur - tick_prv >= 250) // { // scr_init_flag = 1; // tick_prv = -1; // tick_cur = -1; // // lv_scr_load_anim(guider_ui.screen_main, LV_SCR_LOAD_ANIM_FADE_OUT, 1000, 250, 1); // init_scr_del_flag(&guider_ui); // setup_scr_screen_main(&guider_ui); // lv_scr_load(guider_ui.screen_main); // } // } // } // } // uint8_t led_bri = 0; // void scr_main_run(void) // { // //LED_LCD // if( tick_prv == -1 ) // { // tick_prv = xTaskGetTickCount(); // }else // { // tick_cur = xTaskGetTickCount(); // if(tick_cur - tick_prv >= 1000) // { // tick_prv = -1; // tick_cur = -1; // led_bri = (led_bri == 0)?(255):(0); // lv_led_set_brightness(guider_ui.screen_main_led_1, led_bri); // } // } // //Menu_LCD // switch(key) // { // case 71: // { // key = 0; // lv_event_send(guider_ui.screen_main_menu_1_cont_1, LV_EVENT_CLICKED, NULL); // lv_meter_set_indicator_value(guider_ui.screen_main_meter_1,guider_ui.screen_main_meter_1_scale_0_ndline_0, 25); // } // break; // case 79: // { // key = 0; // lv_event_send(guider_ui.screen_main_menu_1_cont_2, LV_EVENT_CLICKED, NULL); // lv_meter_set_indicator_value(guider_ui.screen_main_meter_1, guider_ui.screen_main_meter_1_scale_0_ndline_0, 50); // } // break; // case 87: // { // key = 0; // lv_event_send(guider_ui.screen_main_menu_1_cont_3, LV_EVENT_CLICKED, NULL); // lv_meter_set_indicator_value(guider_ui.screen_main_meter_1, guider_ui.screen_main_meter_1_scale_0_ndline_0, 75); // } // break; // case 95: // { // key = 0; // scr_init_flag = 0; // scr_init_bar1 = 0; // scr_init_cnt = 0; // init_scr_del_flag(&guider_ui); // setup_scr_screen_init(&guider_ui); // lv_scr_load(guider_ui.screen_init); // } // default: // { // } // break; // } // } /**********test3**********/ /**********test2**********/ // int bar1_v = 0, bar2_v = 0, bar3_v = 0; // void menu_test2(void) // { // switch(key) // { // case 68: // { // key = 0; // bar1_v = ( bar1_v > 90 )?( 0 ):( bar1_v + 10 ); // lv_bar_set_value(guider_ui.screen_bar_1, bar1_v, LV_ANIM_OFF); // } // break; // case 69: // { // key = 0; // bar2_v = ( bar2_v > 90 )?( 0 ):( bar2_v + 10 ); // lv_bar_set_value(guider_ui.screen_bar_2, bar2_v, LV_ANIM_OFF); // } // break; // case 70: // { // key = 0; // bar3_v = ( bar3_v > 90 )?( 0 ):( bar3_v + 10 ); // lv_bar_set_value(guider_ui.screen_bar_3, bar3_v, LV_ANIM_OFF); // } // break; // default: // { // } // break; // } // } /**********test2**********/ #endif