sggt/App/APP_WU/Inc/apps_var_def.h

297 lines
12 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 _APPS_VAR_DEF_H_
#define _APPS_VAR_DEF_H_
//此文件用于汇总变量类型
#include "stdint.h"
#include "data_type_def.h"
typedef enum
{
SIG_CURRENT = 0, //电流
SIG_VOLTAGE, //电压
SIG_RESISTANT, //电阻
SIG_FREQUENCE, //频率
SIG_TC, //热电偶
SIG_RTD //热电阻
}SIG_FUNCTIONS;
typedef enum
{
CURRENT_MA = 0, //电流mA
VOLTAGE_MV, //电压mV
VOLTAGE_V, //电压V
RESISTANT_OHM, //电阻Ω
FREQUENCE_KHZ, //频率KHz
TC_K, //热电偶K
TC_S, //热电偶S
TC_N, //热电偶N
TC_B, //热电偶B
TC_E, //热电偶E
TC_J, //热电偶J
TC_R, //热电偶R
TC_T, //热电偶T
RTD_DC //热电阻摄氏度
}SIG_FUNCTIONS_TYPE;
typedef struct
{
SIG_FUNCTIONS tag; //物理量标签
SIG_FUNCTIONS_TYPE typ; //类型
int16_t up; //上限
int16_t low; //下限
float32 pv; //当前值
}PHYSICAL_QUANTITY;
typedef enum
{
SCREEN_INIT = 0, //起始界面,开机动画
SCREEN_MAIN, //主界面,主要功能
SCREEN_SETTING, //设置菜单
SCREEN_MODBUS_MASTER_CONFIG, //modbus主模式参数配置
SCREEN_MODBUS_MASTER_TRX //modbus主模式数据收发
}SCREENS;
typedef enum
{
MENU_SIMPLYFY_CHINESE = 0, //简体中文
MENU_ENGLISH //英文
}LANGUAGES;
typedef enum
{
OPENNING_ANIME = 0, //播放开机动画
MAIN_FUNCTION, //主要功能:输入&输出、曲线显示等
SET_ITEM_CHOOSE, //设置菜单:选项卡选择
SET_CONTENT_CHOOSE, //设置菜单:内容选择
SET_CONTENT_MODIFY, //设置菜单:内容修改
SET_WINDOW_MODIFY, //设置菜单,弹窗,选择与修改内容
SET_SHOW_LOG, //设置菜单:查看记录
SET_COMMUNICATION_SWITCH, //通信模式切换
SET_COMMUNICATION_MODIFY, //通信模式修改
MODBUS_MASTER_CONFIG, //modbus主站配置项选择
MODBUS_MASTER_CONFIG_MODIFY, //modbus主站配置项修改
MODBUS_MASTER_TRX, //modbus主站收发选项选择
MODBUS_MASTER_TRX_MODIFY, //modbus主站收发选项修改
PROG_OUT_CONFIG_1, //编程输出配置页面1输出方式、输出模式、循环次数、下一步
PROG_OUT_CONFIG_2, //阶跃、三角波的参数配置界面
PROG_OUT_PROCESSING //编程输出执行中
}OPERATIONS;
typedef enum
{
TRANS_NONE = 0, //无通讯
TRANS_HART_TO_PC, //HART设备->上位机
TRANS_PC_TO_HART, //上位机->HART设备
TRANS_BLE_TO_PC, //蓝牙设备->上位机
TRANS_PC_TO_BLE, //上位机->蓝牙设备
TRANS_MODBUS_PC_TO_SIG, //MODBUSSIG作为从设备上位机->SIG
TRANS_MODBUS_SIG_TO_SLAVE //MODBUSSIG作为主设备SIG->从设备
}SIG_TRANSMISSION;
typedef struct
{
uint16_t lvgl_stack_consume; //LVGL栈占用
uint16_t menu_stack_consume; //menu栈占用
uint8_t cpu_consume; //cpu使用率0-100
uint8_t mem_consume; //内存使用率0-100
uint8_t mem_frag; //内存碎片占比0-100
uint8_t mem_consume_max; //最大内存占用占用0-100
uint8_t eeprom_read_error; //eeprom读是否出现过错误
uint8_t eeprom_write_error; //eeprom写是否出现过错误
uint8_t eeprom_current_status; //eeprom状态
}SYSTEM_STATUS_WATCH;
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; //当前输出模式的类型
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;
//设置菜单界面的左列选项卡,从上至下
typedef enum
{
ITEM_0 = 0,
ITEM_1,
ITEM_2,
ITEM_3,
ITEM_NONE
}ITEMS;
//设置菜单各个选项卡item的内容
typedef enum
{
//ITEM_0
VOL_UNIT_SET = 0,
VOL_UP_SET,
VOL_LOW_SET,
CURRENT_UP_SET,
CURRENT_LOW_SET,
RES_UP_SET,
RES_LOW_SET,
FRE_UP_SET,
FRE_LOW_SET,
TC_TYPE_SET,
TC_UP_SET,
TC_LOW_SET,
RTD_UP_SET,
RTD_LOW_SET,
PAGE_PV_ITEM_0,
//ITEM_1
SAMPLE_INTERVAL,
PLOT_NUM,
INPUT_COLOR,
OUTPUT_COLOR,
PAGE_PV_ITEM_1,
//ITEM_2
INPUT_LOG,
OUTPUT_LOG,
COMMUNICATION,
PROGRAM_OUTPUT,
PAGE_PV_ITEM_2,
//ITEM_3
LIGHT_STATUS,
LANGUAGE_SELECT,
DATA_SAVE,
DATA_RESET,
PAGE_PV_ITEM_3,
//general
CONTENT_EMPTY
}ITEM_CONTENTS;
//主界面chart的曲线备选颜色
typedef enum
{
COLOR_BLUE = 0,
COLOR_DARK_BLUE,
COLOR_YELLOW,
COLOR_GREEN,
COLOR_RED,
COLOR_PURPLE,
COLOR_BLACK
}COLORS;
//SIG在modbus功能中的模式主或从
typedef enum
{
SIG_SLAVE = 0,
SIG_MASTER
}SIG_MODBUS_TYPE;
typedef struct
{
ITEMS item_cursor; //选项卡游标,后续根据实际需求进行宏定义
ITEMS item_cursor_prv; //前一时刻的选项卡游标
uint8_t item_page; //当前页
uint8_t item_page_prv; //前一页
uint8_t content_cursor; //内容右侧一列的游标范围0~56个组件之间跳转
uint8_t content_cursor_prv; //前一时刻的内部游标
uint8_t content_focus; //内容焦点
ITEM_CONTENTS current_content; //当前指向内容
//ITEMS_0
SIG_FUNCTIONS_TYPE item0_page0_vunit; //电压单位
int16_t item0_page0_vup[2]; //电压上限, 0:V1:mV
int16_t item0_page0_vlow[2]; //电压下限, 0:V1:mV
uint8_t item0_page0_cup; //电流上限
uint8_t item0_page0_clow; //电流下限
int16_t item0_page0_rup; //电阻上限
int16_t item0_page1_rlow; //电阻下限
uint8_t item0_page1_fup; //频率上限
uint8_t item0_page1_flow; //频率下限
SIG_FUNCTIONS_TYPE item0_page1_TCtype; //热电偶类型
int16_t item0_page1_TCup[8]; //热电偶上限
int16_t item0_page1_TClow[8]; //热电偶下限
int16_t item0_page2_RTDup; //热电阻上限
int16_t item0_page2_RTDlow; //热电阻下限
//ITEMS_1
uint16_t item1_page0_sample_interval; //采样间隔ms
uint8_t item1_page0_plot_num; //曲线上显示的点数
COLORS item1_page0_color_input; //输出曲线及其图例的颜色
COLORS item1_page0_color_output; //输出曲线及其图例的颜色
//ITEMS_2
char log_time[60][16]; //输入&输出记录,时间戳
float32 input_log_value[60]; //输入记录,实际值
SIG_FUNCTIONS_TYPE input_log_unit[60]; //输入记录,单位
float32 output_log_value[60]; //输出记录,实际值
SIG_FUNCTIONS_TYPE output_log_unit[60]; //输出记录,单位
uint8_t hart_enable; //HART透传使能
uint8_t bluetooth_enable; //蓝牙透传使能
uint8_t modbus_enable; //MODBUS使能
SIG_MODBUS_TYPE modbus_type; //SIG在modbus中作为主或从
uint8_t modbus_master_send_flag; //发送标志
//ITEMS_3
uint8_t item3_page0_lightflag; //照明状态标志0熄灭1开启
LANGUAGES item3_page0_language; //语言类型
uint8_t item3_page0_saveflag; //[0, 1,2 ] -> [未保存,保存中,已保存]
uint8_t item3_page0_resetflag; //[0, 1,2 ] -> [未复位,复位中,已复位]
}TABVIEW_DATA;
#endif