297 lines
12 KiB
C
297 lines
12 KiB
C
#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, //MODBUS,SIG作为从设备,上位机->SIG
|
||
TRANS_MODBUS_SIG_TO_SLAVE //MODBUS,SIG作为主设备,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~5,6个组件之间跳转
|
||
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:V,1:mV
|
||
int16_t item0_page0_vlow[2]; //电压下限, 0:V,1: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
|