197 lines
7.0 KiB
C
197 lines
7.0 KiB
C
#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 menu_data; //界面参数初始化
|
||
extern PLOT_DATA pltdata; //chart绘图参数初始化
|
||
extern uint8_t scr_main_set_flag;
|
||
|
||
//主界面,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 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=[0000000,9999999];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
|
||
|
||
|