sggt/App/APP_WU/Src/apps_gather.c

1842 lines
56 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-02-14 10:54:28
* @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输入IN1输出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; //向上溢出标志
uint8_t overflow_flag_low = 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)?(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:
{
if(m5data.io_numbers[1] >= 9)
{
if( m5data.io_numbers[0]!=9 )
{
m5data.io_numbers[1] = 0;
overflow_flag = 1;
}
else
{
m5data.io_numbers[1] = 9;
}
}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)
{
if( (m5data.io_numbers[0]!=9)||(m5data.io_numbers[1]!=9))
{
m5data.io_numbers[2] = 0;
overflow_flag = 2;
}
else
{
m5data.io_numbers[2] = 9;
}
}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)
{
if( (m5data.io_numbers[0]!=9)||(m5data.io_numbers[1]!=9)||(m5data.io_numbers[2]!=9))
{
m5data.io_numbers[3] = 0;
overflow_flag = 3;
}
else
{
m5data.io_numbers[3] = 9;
}
}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)
{
if( (m5data.io_numbers[0]!=9)||(m5data.io_numbers[1]!=9)||(m5data.io_numbers[2]!=9)||(m5data.io_numbers[3]!=9))
{
m5data.io_numbers[4] = 0;
overflow_flag = 4;
}
else
{
m5data.io_numbers[4] = 9;
}
}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)
{
if( (m5data.io_numbers[0]!=9)||(m5data.io_numbers[1]!=9)||(m5data.io_numbers[2]!=9)||(m5data.io_numbers[3]!=9)||(m5data.io_numbers[4]!=9))
{
m5data.io_numbers[5] = 0;
overflow_flag = 5;
}
else
{
m5data.io_numbers[5] = 9;
}
}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)?(9):(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:
{
if(m5data.io_numbers[0] <= 0)
{
m5data.io_numbers[0] = 0;
overflow_flag_low = 0;
}
else
{
m5data.io_numbers[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] <= 0)
{
if(m5data.io_numbers[0])
{
m5data.io_numbers[1] = 9;
overflow_flag_low = 1;
}
else
{
m5data.io_numbers[1] = 0;
}
}
else
{
m5data.io_numbers[1] = 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:
{
if(m5data.io_numbers[2] <= 0)
{
if(m5data.io_numbers[0]||m5data.io_numbers[1])
{
m5data.io_numbers[2] = 9;
overflow_flag_low = 2;
}
else
{
m5data.io_numbers[2] = 0;
}
}
else
{
m5data.io_numbers[2] = 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:
{
if(m5data.io_numbers[3] <= 0)
{
if(m5data.io_numbers[0]||m5data.io_numbers[1]||m5data.io_numbers[2])
{
m5data.io_numbers[3] = 9;
overflow_flag_low = 3;
}
else
{
m5data.io_numbers[3] = 0;
}
}
else
{
m5data.io_numbers[3] = 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:
{
if(m5data.io_numbers[4] <= 0)
{
if(m5data.io_numbers[0]||m5data.io_numbers[1]||m5data.io_numbers[2]||m5data.io_numbers[3])
{
m5data.io_numbers[4] = 9;
overflow_flag_low = 4;
}
else
{
m5data.io_numbers[4] = 0;
}
}
else
{
m5data.io_numbers[4] = 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:
{
if(m5data.io_numbers[5] <= 0)
{
if(m5data.io_numbers[0]||m5data.io_numbers[1]||m5data.io_numbers[2]||m5data.io_numbers[3]||m5data.io_numbers[4])
{
m5data.io_numbers[5] = 9;
overflow_flag_low = 5;
}
else
{
m5data.io_numbers[5] = 0;
}
}
else
{
m5data.io_numbers[5] = 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;
}
if(overflow_flag_low) //发生向下溢出
{
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_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.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_low = 0;
}
}
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; //当前界面为主界面
scr_main_recover(); //恢复之前显示的数据
}
break;
default:
{
key = 0;
}
break;
}
}
void scr_main_recover(void) //恢复主界面的各项参数显示,用于界面切换(设置界面返回主界面)
{
// 运行时间 和 电池电量 在主界面的函数中已存在,无需额外恢复
// 曲线需要在 setup_scr_screen_main.c 中修改
//ON&OFF
if(m5data.io_mode == IO_ON)
{
lv_span_set_text(guider_ui.screen_main_spangroup_6_span, "ON");
}
else
{
lv_span_set_text(guider_ui.screen_main_spangroup_6_span, "OFF");
}
//输入&输出、工作模式&类型
switch (m5data.io_mode) //输入、输出模式切换
{
case IO_OUTPUT:
{
lv_span_set_text(guider_ui.screen_main_spangroup_3_span, "OUT");
switch (m5data.output_mode) //功能切换
{
case SIG_VOLTAGE:
{
lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Volt");
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:
{
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 IO_INPUT:
{
lv_span_set_text(guider_ui.screen_main_spangroup_3_span, "IN");
switch (m5data.input_mode)
{
case SIG_VOLTAGE:
{
lv_span_set_text(guider_ui.screen_main_spangroup_5_span, "Volt");
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:
{
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;
default:
break;
}
//设定值&测量值
lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.io_numbers[0] ]);
lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.io_numbers[1] ]);
lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.io_numbers[2] ]);
lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.io_numbers[3] ]);
lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.io_numbers[4] ]);
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.io_numbers[5] ]);
}
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;
twk_p = 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 );
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);
}
}
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