sggt/App/APP_WU/Inc/app_screen_main.h

199 lines
7.0 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.

#ifndef _APP_SCREEN_MAIN_H
#define _APP_SCREEN_MAIN_H
#include "apps_gather.h"
typedef struct
{
//general
SCREENS scr_now; //当前屏幕,通过按键切换, [0->init, 1->main, 2->setting]
int tick_prv; //前一个时刻
int tick_cur; //当前时刻
uint8_t menu_reset_flag; //复位标志在keil的debug中手动写入
//screen_init
uint8_t scr_init_flag; //初始界面标志,是否播放过开机动画
//screen_main
uint8_t runtime_seconds; //秒
uint8_t runtime_minutes; //分钟
uint8_t runtime_hours; //小时
char runtime_show[16]; //存放运行时间转化得到的字符串
uint8_t battery_cnt; //电池计数
uint8_t io_cursor; //当前游标位置, [0000,000], 0~6整数表示7个位置
uint8_t io_cursor_prv; //前一时刻的游标位置
uint8_t i_numbers[7]; //实时显示的字符,输入
uint8_t o_numbers[7]; //实时显示的字符,输出
uint8_t io_on2off; //ON & OFF
uint8_t io_mode; //当前工作模式0输入1输出
SIG_FUNCTIONS input_mode; //当前的输入模式
SIG_FUNCTIONS_TYPE input_mode_type; //当前输入模式的类型
SIG_FUNCTIONS output_mode; //当前的输出模式
SIG_FUNCTIONS_TYPE output_mode_type; //当前输出模式的类型
#if NIXIE_CUBE_ENABLE
uint8_t twk_flag; //闪烁使能标志
uint8_t twk_flip; //0-1变量用于控制显示内容翻转显示/不显示)
uint8_t twk_cnt; //闪烁计数,计数达到上限后闪烁停止
#endif
uint8_t sign_flag_in; //输入信号符号位标志0->不显示1->显示负号
uint8_t sign_flag_out; //输出信号符号位标志0->不显示1->显示负号
//screen_setting
}MENU_DATA;
typedef struct
{
//lv_chart_set_range(ui->screen_main_chart_1, LV_CHART_AXIS_PRIMARY_Y, y_pri_low, y_pri_up);
uint8_t y_pri_up; //纵轴(主)上限,一般不做修改
uint8_t y_pri_low; //纵轴(主)下限,一般不做修改
int16_t yreal_pri_up; //实际值y上限
int16_t yreal_pri_low; //实际值y下限
//lv_chart_set_range(ui->screen_main_chart_1, LV_CHART_AXIS_SECONDARY_Y, y_scd_low, y_scd_up);
uint8_t y_scd_up; //纵轴(副)上限,一般不做修改
uint8_t y_scd_low; //纵轴(副)下限,一般不做修改
int16_t yreal_scd_up; //实际值y上限
int16_t yreal_scd_low; //实际值y下限
//lv_chart_set_next_value(ui->screen_main_chart_1, ui->screen_main_chart_1_0, 1);
uint8_t pri_wait_tick; //主轴等待滴答数,一段时间没变化后不更新曲线
uint8_t y_pri_value; //0号曲线的下一个点主y轴
uint8_t y_pri_value_prv; //前一时刻的点,用于判断是否需要更新内容
float32 yreal_pri_value; //0号曲线的下一个实际值
//lv_chart_set_next_value(ui->screen_main_chart_1, ui->screen_main_chart_1_1, 1);
uint8_t scd_wait_tick; //副轴等待滴答数,一段时间没变化后不更新曲线
uint8_t y_scd_value; //1号曲线的下一个点副y轴
uint8_t y_scd_value_prv; //前一时刻的点,用于判断是否需要更新内容
float32 yreal_scd_value; //1号曲线的下一个实际值
float32 yreal_scd_value_prv; //前一时刻的点,用于判断是否需要更新内容
}PLOT_DATA;
extern MENU_DATA m5data; //界面参数初始化
extern PLOT_DATA pltdata; //chart绘图参数初始化
//主界面ON
#define IO_ON 1
//主界面OFF
#define IO_OFF 0
//主界面,输入模式
#define IO_INPUT 0
//主界面,输出模式
#define IO_OUTPUT 1
//游标-横线起点1小数点的宽度与数字不一样因此分成左右两半
#define IO_CURSOR_START1 136
//游标-横线起点2
#define IO_CURSOR_START2 244
//游标-数字之间间隔大小
#define IO_CURSOR_INTERVAL 24
//游标-y轴坐标值
#define IO_CURSOR_Y 230
//闪烁次数上限
#define TWINKLE_CNT_MAX 10
//数码管闪烁功能使能
#define NIXIE_CUBE_ENABLE 0
//EEPROM状态监控
#define EEPROM_MONITOR_ENABLE 1
//菜单数据初始化
void screen_data_init(void);
//主界面参数初始化
void main_data_init(void);
//绘图数据初始化
void plot_data_init(void);
//界面复位
void menu_reset(void);
//按键功能,主界面
void key_functions_main(void);
//开机动画
void scr_init_run(void);
//进度条设置, start[0, end], end[start,100], interval[ms]结束后返回1
uint8_t init_set_bar(uint8_t start, uint8_t end, uint16_t interval);
//主界面
void scr_main_run(void);
//运行时间显示
void runtime_show(void);
//电池电量显示
void battery_show(void);
//设置游标位置【0000.000】0~7
void set_cursor_position(void);
//设置数码管符号位0->熄灭1->显示负号
void set_nixie_cube_sign(uint8_t on2off, uint8_t sg);
//设置数码管显示值io_slc->输入/输出pos->第几个数字num->数值*1000
//补充说明pos = 99时num=[00000009999999]pos = 10时数值显示为空白。
void set_nixie_cube(uint8_t io_slc, uint8_t pos, int32_t num);
//RE按键修改输出值
void keyset_output(int8_t key_step);
//设置当前的输出值1000*实际值->(无符号)数组,可直接输入负数
void set_output_array(int32_t pvo);
//设置输出值:数字显示 + 符号 + 缓存sto->实际值
void set_output(float32 sto);
//获取当前设定的输出值(数组&符号 -> (有符号)实际值)
float32 get_output_value(void);
//显示当前测量值
void input_value_show(void);
//输入输出、ON&OFF状态指示
void io_on2off_status(void);
//恢复主界面的各项参数显示,用于界面切换(设置界面->主界面)
void scr_main_recover(void);
//曲线设置更新
void scr_main_chart_update(void);
//数值闪烁数值发生变化后开始闪烁10秒无动作后闪烁停止游标移动后恢复前一时刻位置的数值
void num_twinkle(void);
//实时曲线绘制
void plot_drawing(void);
//设置工作模式和工作模式类型
void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type);
//更新上下限&显示,曲线上下限,数值上下限
void up2down_update(int16_t low, int16_t up);
//eeprom状态监控
void eep_status_monitor(void);
//通讯状态标识
void trans_status_display(void);
#endif