sggt/App/APP_WU/Src/apps_gather.c

2320 lines
70 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-03-03 15:58:37
* @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;
TABVIEW_DATA tabdata;
// char buff_io[2];
void menu_data_init(void)
{
//general
if(m5data.scr_now != SCREEN_INIT)
{
//加载初始界面
setup_scr_screen_init(&guider_ui);
lv_scr_load(guider_ui.screen_init);
//释放内存
if(m5data.scr_now == SCREEN_SETTING)
{
guider_ui.screen_setting_del = true;
lv_obj_del(guider_ui.screen_setting);
}
if(m5data.scr_now == SCREEN_MAIN)
{
guider_ui.screen_main_del = true;
lv_obj_del(guider_ui.screen_main);
}
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 = 2; //当前游标位置,[000,000]:0~5
m5data.io_cursor_prv = 2; //前一时刻游标位置
m5data.twk_flag = 0; //0停止闪烁1开始闪烁
m5data.io_on2off = IO_OFF;
m5data.io_mode = IO_OUTPUT; //默认工作模式0输入IN1输出OUT
for(uint8_t i = 0; i < 6; i++)
{
m5data.i_numbers[i] = 0;
m5data.o_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
tabdata.tab_cursor = 0;
tabdata.tab_cursor_prv = 0;
tabdata.tab_cursor_inner = 99;
tabdata.tab_cursor_inner_prv = 99;
}
uint8_t menu_reset_flag = 0;
void menu_test5(void)
{
if(menu_reset_flag)
{
menu_reset_flag = 0;
menu_data_init();
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;
}
}
}
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;
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_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.o_numbers[0] = (m5data.o_numbers[0] >= 9)?(9):(m5data.o_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.o_numbers[0] ]);
}
break;
case 1:
{
if(m5data.o_numbers[1] >= 9)
{
if( m5data.o_numbers[0]!=9 )
{
m5data.o_numbers[1] = 0;
overflow_flag = 1;
}
else
{
m5data.o_numbers[1] = 9;
}
}else
{
m5data.o_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.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;
overflow_flag = 2;
}
else
{
m5data.o_numbers[2] = 9;
}
}else
{
m5data.o_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.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;
overflow_flag = 3;
}
else
{
m5data.o_numbers[3] = 9;
}
}else
{
m5data.o_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.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;
overflow_flag = 4;
}
else
{
m5data.o_numbers[4] = 9;
}
}else
{
m5data.o_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.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;
overflow_flag = 5;
}
else
{
m5data.o_numbers[5] = 9;
}
}else
{
m5data.o_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.o_numbers[5] ]);
}
break;
default:
break;
}
if(overflow_flag) //发生向上溢出
{
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 (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.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] ]);
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;
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_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.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_span_set_text(guider_ui.screen_main_spangroup_6_span, "OFF");
}
else
{
m5data.io_on2off = IO_ON;
lv_span_set_text(guider_ui.screen_main_spangroup_6_span, "ON");
}
io_on2off_status(); //更新状态指示
}
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.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_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.o_numbers[0] <= 0)
{
m5data.o_numbers[0] = 0;
overflow_flag_low = 0;
}
else
{
m5data.o_numbers[0] = m5data.o_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.o_numbers[0] ]);
}
break;
case 1:
{
if(m5data.o_numbers[1] <= 0)
{
if(m5data.o_numbers[0])
{
m5data.o_numbers[1] = 9;
overflow_flag_low = 1;
}
else
{
m5data.o_numbers[1] = 0;
}
}
else
{
m5data.o_numbers[1] = m5data.o_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.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;
overflow_flag_low = 2;
}
else
{
m5data.o_numbers[2] = 0;
}
}
else
{
m5data.o_numbers[2] = m5data.o_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.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;
overflow_flag_low = 3;
}
else
{
m5data.o_numbers[3] = 0;
}
}
else
{
m5data.o_numbers[3] = m5data.o_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.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;
overflow_flag_low = 4;
}
else
{
m5data.o_numbers[4] = 0;
}
}
else
{
m5data.o_numbers[4] = m5data.o_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.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;
overflow_flag_low = 5;
}
else
{
m5data.o_numbers[5] = 0;
}
}
else
{
m5data.o_numbers[5] = m5data.o_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.o_numbers[5] ]);
}
break;
default:
break;
}
if(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 (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] ]);
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状态指示
//input_value_show(); //已迁移至运行时间显示runtime_show()
//数值闪烁
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);
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);
}
}
int pvi = 0;
void input_value_show(void)
{
//显示当前测量值
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) //输入输出、ON&OFF状态指示
{
if(m5data.io_on2off == IO_ON)
{
if(m5data.io_mode == IO_OUTPUT)
{
//输入变回黑色,输出变为绿色
lv_style_set_text_color(&guider_ui.screen_main_spangroup_2_span->style, lv_color_hex(0x000000));
lv_style_set_text_color(&guider_ui.screen_main_spangroup_3_span->style, lv_color_hex(0x06ff00));
}
else
{
//输出变回黑色,输入变为绿色
lv_style_set_text_color(&guider_ui.screen_main_spangroup_2_span->style, lv_color_hex(0x06ff00));
lv_style_set_text_color(&guider_ui.screen_main_spangroup_3_span->style, lv_color_hex(0x000000));
}
}
else
{
if(m5data.io_mode == IO_OUTPUT)
{
//输入变回黑色,输出变为红色
lv_style_set_text_color(&guider_ui.screen_main_spangroup_2_span->style, lv_color_hex(0x000000));
lv_style_set_text_color(&guider_ui.screen_main_spangroup_3_span->style, lv_color_hex(0xff0027));
}
else
{
//输出变回黑色,输入变为红色
lv_style_set_text_color(&guider_ui.screen_main_spangroup_2_span->style, lv_color_hex(0xff0027));
lv_style_set_text_color(&guider_ui.screen_main_spangroup_3_span->style, lv_color_hex(0x000000));
}
}
}
void key_functions_setting(void) //按键功能,详细设置菜单界面
{
switch (key)
{
case KEY_BACK:
{
key = 0;
//所有选项卡均未选中时,返回主界面,否则熄灭当前选中
if(tabdata.tab_cursor_inner == 99)
{
//加载主界面
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(); //恢复之前显示的数据
}
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)
{
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:
{
}
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:
{
}
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) //设置界面选项卡内容选中。点亮cursor熄灭cursor_prv
{
if(tab_cont) //内容点亮和熄灭
{
switch (tabdata.tab_cursor)
{
case ITEMS_0:
{
//如果cusor超出当前选项卡的内容数量在此处立即return
switch (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) //熄灭前一时刻的目标
{
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);
}
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);
}
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);
}
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);
}
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 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_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:
{
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.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] ]);
}
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.o_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.o_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.o_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.o_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.o_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.o_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.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.yreal_scd_value = m5data.i_numbers[0]*100 + m5data.i_numbers[1]*10 + m5data.i_numbers[2] + \
m5data.i_numbers[3]*(float32)0.1 + m5data.i_numbers[4]*(float32)0.01 + m5data.i_numbers[5]*(float32)0.001;
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_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