sggt/App/APP_WU/Src/apps_gather.c

2187 lines
71 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-06 18:48:20
* @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 }
/**********test5**********/
MENU_DATA m5data;
PLOT_DATA pltdata;
TABVIEW_DATA tabdata;
void menu_data_init(void)
{
//general
m5data.scr_now = SCREEN_INIT;
m5data.tick_prv = -1; //前一时刻,用于计时
m5data.tick_cur = -1; //当前时刻,用于计时
m5data.menu_reset_flag = 0; //复位使能标志置1后复位复位完成后变回0
//screen_init
m5data.scr_init_flag = 0; //是否进行过初始化(开机动画)
m5data.scr_init_bar = 0; //进度条值0~100
m5data.scr_init_cnt = 0; //进度条计数(控制进度条动画)
//screen_main
// {
m5data.runtime_seconds = 0; //秒
m5data.runtime_minutes = 0; //分钟
m5data.runtime_hours = 0; //小时
memset(m5data.runtime_show, 0, 16); //存放显示时间的字符串
m5data.battery_cnt = 0; //电池计数
m5data.io_cursor = 2; //当前游标位置,[000,000]:0~5
m5data.io_cursor_prv = 2; //前一时刻游标位置
m5data.twk_flag = 0; //0停止闪烁1开始闪烁
m5data.twk_flip = 0; //0显示1不显示
m5data.twk_cnt = 0; //闪烁计数
m5data.overflow_flag_low = 0; //向上溢出
m5data.overflow_flag_up = 0; //向下溢出
m5data.io_on2off = IO_OFF; //初始为关闭状态
m5data.io_mode = IO_OUTPUT; //默认工作模式0输入IN1输出OUT
for(uint8_t i = 0; i < 6; i++) //用于数值显示的数组初值为0
{
m5data.i_numbers[i] = 0; //输入值/测量值
m5data.o_numbers[i] = 0; //输出值/设定值
}
m5data.input_mode = SIG_VOLTAGE; //输入功能初始为电压模式
m5data.input_mode_type = VOLTAGE_V; //电压单位初始为V
m5data.output_mode = SIG_VOLTAGE; //输出功能初始为电压模式
m5data.output_mode_type = VOLTAGE_V;//电压单位初始为V
//chart组件显示int
pltdata.y_pri_low = 0; //主轴的显示下限0通常不做修改
pltdata.y_pri_up = 100; //主轴的显示上限100通常不做修改
pltdata.y_scd_low = 0; //副轴的显示下限0通常不做修改
pltdata.y_scd_up = 100; //副轴的显示上限100通常不做修改
pltdata.y_pri_value = 0; //主轴的实时显示值0~100
pltdata.y_scd_value = 0; //副轴的实时显示值0~100
//实际物理量float32
pltdata.yreal_pri_low = 0; //实际值的显示下限,主轴
pltdata.yreal_pri_up = 30; //实际值的显示上限,主轴
pltdata.yreal_scd_low = 0; //实际值的显示下限,副轴
pltdata.yreal_scd_up = 30; //实际值的显示上限,副轴
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; //前一刻的~
tabdata.content00 = 0; //第0个选项卡的第0个内容
tabdata.content01_mV = 500; //第0个选项卡的第1个内容
tabdata.content01_V = 30; //第0个选项卡的第1个内容
tabdata.content02_mV = 0; //第0个选项卡的第2个内容
tabdata.content02_V = 0; //第0个选项卡的第2个内容
}
void menu_reset(void)
{
//界面复位
//加载初始界面
setup_scr_screen_init(&guider_ui);
lv_scr_load(guider_ui.screen_init);
//释放内存
switch (m5data.scr_now)
{
case SCREEN_MAIN:
{
lv_obj_del(guider_ui.screen_main);
}
break;
case SCREEN_SETTING:
{
lv_obj_del(guider_ui.screen_setting);
}
break;
default:
break;
}
//参数复位
menu_data_init();
}
void menu_test5(void)
{
if(m5data.menu_reset_flag)
{
menu_reset(); //触发显示内容复位
m5data.menu_reset_flag = 0;
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;
}
}
}
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_label_set_text(guider_ui.screen_main_label_Mode, "Volt");
}
break;
case SIG_CURRENT: //电流
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur");
}
break;
case SIG_RESISTANT: //电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Res");
}
break;
case SIG_FREQUENCE: //频率
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre");
}
break;
case SIG_TC: //热电偶
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
}
break;
case SIG_RTD: //热电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD");
}
break;
default:
break;
}
}
break;
case KEY_UP:
{
key = 0;
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
switch (m5data.io_cursor)
{
case 0:
{
m5data.o_numbers[0] = (m5data.o_numbers[0] >= 9)?(9):(m5data.o_numbers[0] + 1);
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;
m5data.overflow_flag_up = 1;
}
else
{
m5data.o_numbers[1] = 9;
}
}else
{
m5data.o_numbers[1]++;
}
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;
m5data.overflow_flag_up = 2;
}
else
{
m5data.o_numbers[2] = 9;
}
}else
{
m5data.o_numbers[2]++;
}
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;
m5data.overflow_flag_up = 3;
}
else
{
m5data.o_numbers[3] = 9;
}
}else
{
m5data.o_numbers[3]++;
}
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;
m5data.overflow_flag_up = 4;
}
else
{
m5data.o_numbers[4] = 9;
}
}else
{
m5data.o_numbers[4]++;
}
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;
m5data.overflow_flag_up = 5;
}
else
{
m5data.o_numbers[5] = 9;
}
}else
{
m5data.o_numbers[5]++;
}
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]);
}
break;
default:
break;
}
if(m5data.overflow_flag_up) //发生向上溢出
{
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 (m5data.overflow_flag_up)
{
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] ]);
m5data.overflow_flag_up = 0;
}
}
break;
case KEY_MENU:
{
key = 0;
//为保障安全,进入菜单页面后功能关闭,输入输出值清零
m5data.io_on2off = IO_OFF;
for(uint8_t i = 0; i < 6; i++) //用于数值显示的数组初值为0
{
m5data.i_numbers[i] = 0; //输入值/测量值
m5data.o_numbers[i] = 0; //输出值/设定值
}
m5data.twk_flag = 0; //闪烁中止
m5data.twk_cnt = 0; //闪烁计数清零
m5data.twk_flip = 0; //0显示1不显示
//加载菜单界面
setup_scr_screen_setting(&guider_ui);
lv_scr_load(guider_ui.screen_setting);
//切换至菜单后,清除主界面对象,释放内存
lv_obj_del(guider_ui.screen_main);
m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单
scr_setting_recover();
}
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_label_set_text(guider_ui.screen_main_label_Mode, "Volt");
}
break;
case SIG_CURRENT: //电流
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur");
}
break;
case SIG_RESISTANT: //电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Res");
}
break;
case SIG_FREQUENCE: //频率
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre");
}
break;
case SIG_TC: //热电偶
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
}
break;
case SIG_RTD: //热电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD");
}
break;
default:
break;
}
}
break;
case KEY_LEFT:
{
key = 0;
m5data.twk_flag = 1; //上、下、左、右 任意一个键按下后,闪烁开始
m5data.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_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF");
}
else
{
m5data.io_on2off = IO_ON;
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "ON");
}
io_on2off_status(); //更新状态指示
}
break;
case KEY_RIGHT:
{
key = 0;
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.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_label_set_text(guider_ui.screen_main_label_unit, "mV");
pltdata.yreal_pri_up = tabdata.content01_mV;
pltdata.yreal_scd_up = tabdata.content01_mV;
pltdata.yreal_pri_low = tabdata.content02_mV;
pltdata.yreal_scd_low = tabdata.content02_mV;
}
break;
case VOLTAGE_V:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "V");
pltdata.yreal_pri_up = tabdata.content01_V;
pltdata.yreal_scd_up = tabdata.content01_V;
pltdata.yreal_pri_low = tabdata.content02_V;
pltdata.yreal_scd_low = tabdata.content02_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_label_set_text(guider_ui.screen_main_label_unit, "mV");
}
break;
case VOLTAGE_V:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "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; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
switch (m5data.io_cursor)
{
case 0:
{
if(m5data.o_numbers[0] <= 0)
{
m5data.o_numbers[0] = 0;
}
else
{
m5data.o_numbers[0] = m5data.o_numbers[0] - 1;
}
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;
m5data.overflow_flag_low = 1;
}
else
{
m5data.o_numbers[1] = 0;
}
}
else
{
m5data.o_numbers[1] = m5data.o_numbers[1] - 1;
}
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;
m5data.overflow_flag_low = 2;
}
else
{
m5data.o_numbers[2] = 0;
}
}
else
{
m5data.o_numbers[2] = m5data.o_numbers[2] - 1;
}
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;
m5data.overflow_flag_low = 3;
}
else
{
m5data.o_numbers[3] = 0;
}
}
else
{
m5data.o_numbers[3] = m5data.o_numbers[3] - 1;
}
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;
m5data.overflow_flag_low = 4;
}
else
{
m5data.o_numbers[4] = 0;
}
}
else
{
m5data.o_numbers[4] = m5data.o_numbers[4] - 1;
}
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;
m5data.overflow_flag_low = 5;
}
else
{
m5data.o_numbers[5] = 0;
}
}
else
{
m5data.o_numbers[5] = m5data.o_numbers[5] - 1;
}
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]);
}
break;
default:
break;
}
if(m5data.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 (m5data.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] ]);
m5data.overflow_flag_low = 0;
}
}
break;
case KEY_BACK: //闲置,预留
{
key = 0;
}
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) //防止溢出当前tick小于前一刻的tick
{
m5data.tick_prv = -1; //溢出后复位并返回
m5data.tick_cur = -1;
return;
}
if(m5data.tick_cur - m5data.tick_prv >= 1000) //tick间隔达到目标后执行功能
{
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
{
// //开机动画结束后,清除初始界面内部组件,保留对象,释放内存
// lv_obj_clean(guider_ui.screen_init);
//加载主界面
setup_scr_screen_main(&guider_ui);
lv_scr_load(guider_ui.screen_main);
//删除初始界面对象,释放剩余内存
lv_obj_del(guider_ui.screen_init);
m5data.scr_init_flag = 1; //开机动画结束,只执行一次
m5data.scr_now = SCREEN_MAIN; //开机动画结束后,默认进入主界面
}
}
void scr_main_run(void)
{
//运行时间显示
runtime_show(); //1000ms
//电池电量显示
battery_show(); //3000ms
//动态曲线绘制
plot_drawing(); //1500ms
//当前输入值/测量值显示已迁移至runtime_show(),两者共用 heart_1000ms_flag
//input_value_show(); //1000ms
//数值闪烁
num_twinkle(); //1000ms
}
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;
}
// 000000
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);
}
}
void input_value_show(void)
{
int32_t pvi = 0;
pvi = (int32_t)(pltdata.yreal_scd_value * 1000); //副轴用于绘制实时输入测量值
//显示当前测量值
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)
{
switch (m5data.io_on2off)
{
case IO_ON:
{
switch (m5data.io_mode)
{
case IO_OUTPUT:
{
//输入变回黑色,输出变为绿色
lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x06ff00), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case IO_INPUT:
{
//输出变回黑色,输入变为绿色
lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x06ff00), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
default:
break;
}
}
break;
case IO_OFF:
{
switch (m5data.io_mode)
{
case IO_OUTPUT:
{
//输入变回黑色,输出变为红色
lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0xff0027), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case IO_INPUT:
{
//输出变回黑色,输入变为红色
lv_obj_set_style_text_color(guider_ui.screen_main_label_IN, lv_color_hex(0xff0027), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(guider_ui.screen_main_label_OUT, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
default:
break;
}
}
break;
default:
break;
}
}
void key_functions_setting(void)
{
switch (key)
{
case KEY_BACK:
{
key = 0;
//所有选项卡均未选中时,返回主界面,否则熄灭当前选中
if(tabdata.tab_cursor_inner == 99)
{
tabdata.tab_cursor = 0;
//加载主界面
setup_scr_screen_main(&guider_ui);
lv_scr_load(guider_ui.screen_main);
//切换至菜单后,清除主界面对象,释放内存
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) //内部游标为99时说明未选中任何一个选项卡此时的up和down用于切换选项卡
{
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:
{
switch (tabdata.tab_cursor_inner)
{
case CONTENT_0_0:
{
tabdata.content00 = !tabdata.content00;
//单位改变时,相关数值也要跟随
setting_update(ITEMS_0, CONTENT_0_0);
setting_update(ITEMS_0, CONTENT_0_1);
setting_update(ITEMS_0, CONTENT_0_2);
}
break;
case CONTENT_0_1:
{
if(tabdata.content00)
{
tabdata.content01_mV = (tabdata.content01_mV >= 500)?(tabdata.content02_mV):(tabdata.content01_mV + 1);
}
else
{
tabdata.content01_V = (tabdata.content01_V >= 30)?(tabdata.content02_V):(tabdata.content01_V + 1);
}
setting_update(ITEMS_0, CONTENT_0_1);
}
break;
case CONTENT_0_2:
{
if(tabdata.content00)
{
tabdata.content02_mV = (tabdata.content02_mV >= tabdata.content01_mV)?(0):(tabdata.content02_mV + 1);
}
else
{
tabdata.content02_V = (tabdata.content02_V >= tabdata.content01_V)?(0):(tabdata.content02_V + 1);
}
setting_update(ITEMS_0, CONTENT_0_2);
}
break;
default:
break;
}
}
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:
{
tabdata.tab_cursor_inner = 0;
}
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)
{
if(tab_cont) //内容点亮和熄灭
{
switch (tabdata.tab_cursor)
{
case ITEMS_0:
{
switch (cursor) //点亮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) //熄灭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);
lv_obj_clear_flag(guider_ui.screen_setting_label_01, LV_OBJ_FLAG_HIDDEN);
lv_obj_clear_flag(guider_ui.screen_setting_label_03, LV_OBJ_FLAG_HIDDEN);
lv_obj_clear_flag(guider_ui.screen_setting_label_05, LV_OBJ_FLAG_HIDDEN);
}
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);
lv_obj_add_flag(guider_ui.screen_setting_label_01, LV_OBJ_FLAG_HIDDEN);
}
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);
lv_obj_add_flag(guider_ui.screen_setting_label_03, LV_OBJ_FLAG_HIDDEN);
}
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);
lv_obj_add_flag(guider_ui.screen_setting_label_05, LV_OBJ_FLAG_HIDDEN);
}
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 setting_update(uint8_t ite, uint8_t con)
{
char str_temp[10];
switch (ite)
{
case ITEMS_0:
{
switch (con)
{
case CONTENT_0_0:
{
if(tabdata.content00)
{
lv_label_set_text(guider_ui.screen_setting_label_01, "mV");
}
else
{
lv_label_set_text(guider_ui.screen_setting_label_01, "V");
}
}
break;
case CONTENT_0_1:
{
if(tabdata.content00)
{
sprintf(str_temp,"%d",tabdata.content01_mV);
lv_label_set_text(guider_ui.screen_setting_label_03, str_temp);
pltdata.yreal_pri_up = tabdata.content01_mV;
pltdata.yreal_scd_up = tabdata.content01_mV;
}
else
{
sprintf(str_temp,"%d",tabdata.content01_V);
lv_label_set_text(guider_ui.screen_setting_label_03, str_temp);
pltdata.yreal_pri_up = tabdata.content01_V;
pltdata.yreal_scd_up = tabdata.content01_V;
}
}
break;
case CONTENT_0_2:
{
if(tabdata.content00)
{
sprintf(str_temp,"%d",tabdata.content02_mV);
lv_label_set_text(guider_ui.screen_setting_label_05, str_temp);
pltdata.yreal_pri_low = tabdata.content02_mV;
pltdata.yreal_scd_low = tabdata.content02_mV;
}
else
{
sprintf(str_temp,"%d",tabdata.content02_V);
lv_label_set_text(guider_ui.screen_setting_label_05, str_temp);
pltdata.yreal_pri_low = tabdata.content02_V;
pltdata.yreal_scd_low = tabdata.content02_V;
}
}
break;
default:
break;
}
}
break;
case ITEMS_1:
{}
break;
case ITEMS_2:
{}
break;
case ITEMS_3:
{}
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_label_set_text(guider_ui.screen_main_label_Mode, "Volt");
switch (m5data.output_mode_type) //功能类型切换电压V/mV
{
case VOLTAGE_MV:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "mV");
pltdata.yreal_pri_up = tabdata.content01_mV;
pltdata.yreal_scd_up = tabdata.content01_mV;
pltdata.yreal_pri_low = tabdata.content02_mV;
pltdata.yreal_scd_low = tabdata.content02_mV;
}
break;
case VOLTAGE_V:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "V");
pltdata.yreal_pri_up = tabdata.content01_V;
pltdata.yreal_scd_up = tabdata.content01_V;
pltdata.yreal_pri_low = tabdata.content02_V;
pltdata.yreal_scd_low = tabdata.content02_V;
}
break;
default:
break;
}
}
break;
case SIG_CURRENT: //电流
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur");
}
break;
case SIG_RESISTANT: //电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Res");
}
break;
case SIG_FREQUENCE: //频率
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre");
}
break;
case SIG_TC: //热电偶
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
}
break;
case SIG_RTD: //热电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD");
}
break;
default:
break;
}
}
break;
case IO_INPUT:
{
switch (m5data.input_mode)
{
case SIG_VOLTAGE:
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Volt");
switch (m5data.input_mode) //功能类型切换电压V/mV
{
case VOLTAGE_MV:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "mV");
pltdata.yreal_pri_up = tabdata.content01_mV;
pltdata.yreal_scd_up = tabdata.content01_mV;
pltdata.yreal_pri_low = tabdata.content02_mV;
pltdata.yreal_scd_low = tabdata.content02_mV;
}
break;
case VOLTAGE_V:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "V");
pltdata.yreal_pri_up = tabdata.content01_V;
pltdata.yreal_scd_up = tabdata.content01_V;
pltdata.yreal_pri_low = tabdata.content02_V;
pltdata.yreal_scd_low = tabdata.content02_V;
}
break;
default:
break;
}
}
break;
case SIG_CURRENT: //电流
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Cur");
}
break;
case SIG_RESISTANT: //电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Res");
}
break;
case SIG_FREQUENCE: //频率
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Fre");
}
break;
case SIG_TC: //热电偶
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
}
break;
case SIG_RTD: //热电阻
{
lv_label_set_text(guider_ui.screen_main_label_Mode, "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] ]);
}
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;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
case 1:
{
if(twk_1000ms_flag)
{
twk_1000ms_flag = 0;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ m5data.o_numbers[1] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_3, screen_main_animimg_3_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
case 2:
{
if(twk_1000ms_flag)
{
twk_1000ms_flag = 0;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ m5data.o_numbers[2] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_4, screen_main_animimg_4_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
case 3:
{
if(twk_1000ms_flag)
{
twk_1000ms_flag = 0;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ m5data.o_numbers[3] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_5, screen_main_animimg_5_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
case 4:
{
if(twk_1000ms_flag)
{
twk_1000ms_flag = 0;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
case 5:
{
if(twk_1000ms_flag)
{
twk_1000ms_flag = 0;
m5data.twk_cnt++;
if(m5data.twk_flip)
{
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]);
m5data.twk_flip = 0;
}else
{
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ 10 ]);
m5data.twk_flip = 1;
}
}
}
break;
default:
break;
}
}
if(m5data.twk_cnt > TWINKLE_CNT_MAX) // 10秒无动作上、下、左、右无按下后停止闪烁
{
m5data.twk_cnt = 0;
m5data.twk_flip = 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.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_recover(void)
{
//在这里恢复选项卡0的显示内容
//ITEMS_0
char str_temp[10];
if(tabdata.content00)
{
lv_label_set_text(guider_ui.screen_setting_label_01, "mV");
sprintf(str_temp,"%d",tabdata.content01_mV);
lv_label_set_text(guider_ui.screen_setting_label_03, str_temp);
sprintf(str_temp,"%d",tabdata.content02_mV);
lv_label_set_text(guider_ui.screen_setting_label_05, str_temp);
}
else
{
lv_label_set_text(guider_ui.screen_setting_label_01, "V");
sprintf(str_temp,"%d",tabdata.content01_V);
lv_label_set_text(guider_ui.screen_setting_label_03, str_temp);
sprintf(str_temp,"%d",tabdata.content02_V);
lv_label_set_text(guider_ui.screen_setting_label_05, str_temp);
}
}
void scr_setting_run(void) //详细设置界面
{
}
/**********test5**********/