/* * @Author: wujunchao wujunchao@wuxismart.com * @Date: 2024-12-27 11:50:56 * @LastEditors: wujunchao wujunchao@wuxismart.com * @LastEditTime: 2025-01-13 21:16:00 * @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; 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; for(uint8_t i = 0; i < 6; i++) { m5data.io_numbers[i] = 0; } memset(buff_io,0,2); //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(); } break; default: break; } } } void key_functions_main(void) //按键功能 { switch (key) { case KEY_OUT: { key = 0; } break; case KEY_UP: { key = 0; switch (m5data.io_cursor) { case 0: { m5data.io_numbers[0] = (m5data.io_numbers[0] >= 9)?(0):(m5data.io_numbers[0] + 1); } break; case 1: { m5data.io_numbers[1] = (m5data.io_numbers[1] >= 9)?(0):(m5data.io_numbers[1] + 1); } break; case 2: { m5data.io_numbers[2] = (m5data.io_numbers[2] >= 9)?(0):(m5data.io_numbers[2] + 1); } break; case 3: { m5data.io_numbers[3] = (m5data.io_numbers[3] >= 9)?(0):(m5data.io_numbers[3] + 1); } break; case 4: { m5data.io_numbers[4] = (m5data.io_numbers[4] >= 9)?(0):(m5data.io_numbers[4] + 1); } break; case 5: { m5data.io_numbers[5] = (m5data.io_numbers[5] >= 9)?(0):(m5data.io_numbers[5] + 1); } break; default: break; } } break; case KEY_MENU: { key = 0; } break; case KEY_IN: { key = 0; } break; case KEY_LEFT: { key = 0; m5data.io_cursor = (m5data.io_cursor <= 0)?(5):(m5data.io_cursor - 1); } break; case KEY_OK: { key = 0; } break; case KEY_RIGHT: { key = 0; m5data.io_cursor = (m5data.io_cursor >= 5)?(0):(m5data.io_cursor + 1); } break; case KEY_SWITCH: { key = 0; } break; case KEY_SOURCE: { key = 0; } break; case KEY_DOWN: { key = 0; switch (m5data.io_cursor) { case 0: { m5data.io_numbers[0] = (m5data.io_numbers[0] <= 0)?(9):(m5data.io_numbers[0] - 1); } break; case 1: { m5data.io_numbers[1] = (m5data.io_numbers[1] <= 0)?(9):(m5data.io_numbers[1] - 1); } break; case 2: { m5data.io_numbers[2] = (m5data.io_numbers[2] <= 0)?(9):(m5data.io_numbers[2] - 1); } break; case 3: { m5data.io_numbers[3] = (m5data.io_numbers[3] <= 0)?(9):(m5data.io_numbers[3] - 1); } break; case 4: { m5data.io_numbers[4] = (m5data.io_numbers[4] <= 0)?(9):(m5data.io_numbers[4] - 1); } break; case 5: { m5data.io_numbers[5] = (m5data.io_numbers[5] <= 0)?(9):(m5data.io_numbers[5] - 1); } break; default: break; } } break; case KEY_BACK: { key = 0; } break; default: 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(); //动态曲线绘制 //当前工作模式 //IN/OUT //当前输出值 current_io(); //当前工作模式的单位或类型 } 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 current_io(void) //当前输入&输出 { 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); } sprintf(buff_io,"%d",m5data.io_numbers[0]); lv_span_set_text(guider_ui.screen_main_spangroup_7_span, buff_io); sprintf(buff_io,"%d",m5data.io_numbers[1]); lv_span_set_text(guider_ui.screen_main_spangroup_8_span, buff_io); sprintf(buff_io,"%d",m5data.io_numbers[2]); lv_span_set_text(guider_ui.screen_main_spangroup_9_span, buff_io); sprintf(buff_io,"%d",m5data.io_numbers[3]); lv_span_set_text(guider_ui.screen_main_spangroup_10_span, buff_io); sprintf(buff_io,"%d",m5data.io_numbers[4]); lv_span_set_text(guider_ui.screen_main_spangroup_11_span, buff_io); sprintf(buff_io,"%d",m5data.io_numbers[5]); lv_span_set_text(guider_ui.screen_main_spangroup_12_span, buff_io); } 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