sggt/App/APP_WU/Inc/apps_gather.h

258 lines
10 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:51:06
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-20 09:35:49
* @FilePath: \signal_generator\App\APP_WU\Inc\apps_gather.h
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
#ifndef __APPS_GATHER_H
#define __APPS_GATHER_H
//provided by ZhangXiaoMing
//{
#include "main.h"
#include "tm1650.h"
#include "mux_signal.h"
#include "JLX240-00301-BN.h"
#include <string.h>
#include "gpio.h"
#include "modbus.h"
#include "ble.h"
#include "hart.h"
#include "rn7302.h"
#include "SIG24130.h"
#include "FreeRTOS.h"
#include "task.h"
//}
//LVGL
#include "lvgl.h" // 它为整个LVGL提供了更完整的头文件引用
#include "lv_port_disp.h" // LVGL的显示
#include "gui_guider.h" // Gui Guider 生成的界面和控件的声明
#include "events_init.h" // Gui Guider 生成的初始化事件、回调函数
extern lv_ui guider_ui;
extern const lv_img_dsc_t * screen_main_animimg_battery_imgs[6];
extern const lv_img_dsc_t * screen_main_ani_in_0_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_1_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_2_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_3_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_4_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_5_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_6_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_0_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_1_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_2_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_3_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_4_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_5_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_out_6_imgs[11];
extern const lv_img_dsc_t * screen_main_ani_in_sign_imgs[3];
extern const lv_img_dsc_t * screen_main_ani_out_sign_imgs[3];
//written bt WuJunChao
#include "timer.h"
#include "stdio.h"
#include "ip5310_i2c.h"
#include "eeprom_spi.h"
//#include "lv_demo_benchmark.h"
typedef enum
{
SIG_VOLTAGE = 0, //电压
SIG_CURRENT, //电流
SIG_RESISTANT, //电阻
SIG_FREQUENCE, //频率
SIG_TC, //热电偶
SIG_RTD //热电阻
}SIG_FUNCTIONS;
typedef enum
{
VOLTAGE_MV = 0, //电压mV
VOLTAGE_V, //电压V
CURRENT_MA, //电流mA
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
{
//general
uint8_t 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; //初始界面标志,是否播放过开机动画
uint8_t scr_init_bar; //进度条实时值
uint8_t scr_init_cnt; //进度条计数
//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 twk_flag; //闪烁使能标志
uint8_t twk_flip; //0-1变量用于控制显示内容翻转显示/不显示)
uint8_t twk_cnt; //闪烁计数,计数达到上限后闪烁停止
uint8_t overflow_flag_up; //向上溢出标志
uint8_t overflow_flag_low; //向下溢出标志
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 struct
{
SIG_FUNCTIONS tag; //物理量标签
SIG_FUNCTIONS_TYPE typ; //类型
int16_t up; //上限
int16_t low; //下限
float32 pv; //当前值
}PHYSICAL_QUANTITY;
typedef struct
{
uint8_t item_cursor; //选项卡游标,后续根据实际需求进行宏定义
uint8_t item_cursor_prv; //前一时刻的选项卡游标
uint8_t content_cursor; //选项内部的游标, 最大范围0~356行6列从左至右从上至下99代表未选中。
uint8_t content_cursor_prv; //前一时刻的内部游标
uint8_t content_focus; //内容焦点
uint8_t content_cursor_x; //游标的横坐标从左至右最大范围0~5
uint8_t content_cursor_y; //游标的纵坐标从上至下最大范围0~5
//ITEMS_0
SIG_FUNCTIONS_TYPE content00; //电压单位V/mV
int16_t content01[2]; //电压上限, [0]->V-30, [1]->mV-500
int16_t content02[2]; //电压下限, [0]->V-30, [1]->mV-500
uint8_t content03; //电流上限
uint8_t content04; //电流下限
uint16_t content05; //电阻上限
uint16_t content06; //电阻下限
uint8_t content07; //频率上限
uint8_t content08; //频率下限
int16_t content09[8]; //TC上限, [0, 7]->[K, S, N, B, E, J, R, T]
int16_t content010[8]; //TC下限
int16_t content011; //RTD上限
int16_t content012; //RTD下限
SIG_FUNCTIONS_TYPE content013; //TC类型, [5, 12]->[K, S, N, B, E, J, R, T]
//ITEMS_1
uint8_t light_flag; //照明状态标志0熄灭1开启
}TABVIEW_DATA;
//避免无法定位上面自定义的枚举和结构体
#include "app_screen_main.h"
#include "app_screen_setting.h"
extern MENU_DATA m5data; //界面参数初始化
extern PLOT_DATA pltdata; //chart绘图参数初始化
extern TABVIEW_DATA tabdata; //设置页面参数初始化
extern PHYSICAL_QUANTITY VOL[2]; //电压VOL[0]-V, VOL[1]-mV
extern PHYSICAL_QUANTITY CUR; //电流mA
extern PHYSICAL_QUANTITY RES; //电阻,Ω
extern PHYSICAL_QUANTITY FRE; //频率KHz
extern PHYSICAL_QUANTITY TC[8]; //热电偶共8种
extern PHYSICAL_QUANTITY RTD; //热电阻
//按键值
#define KEY_OUT 76
#define KEY_UP 84
#define KEY_MENU 68
#define KEY_IN 78
#define KEY_LEFT 77
#define KEY_OK 85
#define KEY_RIGHT 94
#define KEY_SWITCH 69
#define KEY_SOURCE -1
#define KEY_DOWN 86
#define KEY_BACK 70
//绝对值计算
#define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) )
//模拟正式产品,实现基本功能
void screen_run(void);
//计算a的b次方
float32 my_power(int a, int b);
//物理量内容初始化
void physical_quantity_init(void);
//通道选择与切换
void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type);
//更新设定值根据ON\OFF状态
void sig_sv_update(void);
//数据转换mux_signal.pv -> real_value
float32 mux2real(float32 mux_pv);
//数据转换real_value -> mux_signal.sv
float32 real2mux(float32 real_value);
#endif