sggt/App/APP_WU/Src/apps_gather.c

721 lines
18 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.

/*
* @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