sggt/App/APP_WU/Inc/apps_gather.h

320 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-06 17:26:04
* @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_1_imgs[6];
extern const lv_img_dsc_t * screen_main_animimg_2_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_3_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_4_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_5_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_6_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_7_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_9_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_10_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_11_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_12_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_13_imgs[11];
extern const lv_img_dsc_t * screen_main_animimg_14_imgs[11];
//written bt WuJunChao
#include "timer.h"
#include "stdio.h"
//#include "lv_demo_benchmark.h"
/**********test5**********/
//按键值
#define KEY_OUT 76
#define KEY_UP 84
#define KEY_MENU 92
#define KEY_IN 69
#define KEY_LEFT 77
#define KEY_OK 85
#define KEY_RIGHT 93
#define KEY_SWITCH 101
#define KEY_SOURCE 78
#define KEY_DOWN 86
#define KEY_BACK 94
//绝对值计算
#define MY_ABS(pa, pb) ( ( (pa-pb) >= 0 )?(pa-pb):(pb-pa) )
//初始界面
//{
//初始界面编号0开机动画
#define SCREEN_INIT 0
//开机动画进度条计数次数
#define SCREEN_INIT_CNT_MAX 4
//}
//主界面
//{
//主界面编号1信号输入输出示波器显示
#define SCREEN_MAIN 1
//横线游标起点1小数点的宽度与数字不一样因此分成左右两半
#define IO_CURSOR_START1 134
//横线游标起点2
#define IO_CURSOR_START2 237
//数字之间间隔大小
#define IO_CURSOR_INTERVAL 29
//y轴坐标值
#define IO_CURSOR_Y 229
//闪烁次数上限
#define TWINKLE_CNT_MAX 10
//绘图等待滴答数上限
#define PLOT_WAIT_TICK_MAX 5
//}
//设置界面
//{
//设置界面编号2详细设置菜单
#define SCREEN_SETTING 2
//主界面ON
#define IO_ON 1
//主界面OFF
#define IO_OFF 0
//主界面,输入模式
#define IO_INPUT 0
//主界面,输出模式
#define IO_OUTPUT 1
//设置界面选项卡0从上往下数
#define ITEMS_0 0
//选项卡 0 内部的第 0 个内容
#define CONTENT_0_0 0
//选项卡 0 内部的第 1 个内容
#define CONTENT_0_1 1
//选项卡 0 内部的第 2 个内容
#define CONTENT_0_2 2
#define ITEMS_1 1
//设置界面选项卡1从上往下数
#define ITEMS_2 2
//设置界面选项卡2从上往下数
#define ITEMS_3 3
//设置界面选项卡2从上往下数
//}
//模拟正式产品,实现基本功能
void menu_test5(void);
//菜单数据初始化
void menu_data_init(void);
//界面复位
void menu_reset(void);
//开机动画
void scr_init_run(void);
//主界面
void scr_main_run(void);
//详细设置界面
void scr_setting_run(void);
//运行时间显示
void runtime_show(void);
//电池电量显示
void battery_show(void);
//按键功能,主界面
void key_functions_main(void);
//按键功能,详细设置菜单界面
void key_functions_setting(void);
//数值闪烁数值发生变化后开始闪烁10秒无动作后闪烁停止游标移动后恢复前一时刻位置的数值
void num_twinkle(void);
//实时曲线绘制
void plot_drawing(void);
//恢复主界面的各项参数显示,用于界面切换(设置界面->主界面)
void scr_main_recover(void);
//恢复设置界面的各项参数显示,用于界面切换(主界面->设置界面)
void scr_setting_recover(void);
//显示当前测量值
void input_value_show(void);
//输入输出、ON&OFF状态指示
void io_on2off_status(void);
//设置界面选项卡选中点亮cursor熄灭cursor_prvtab_cont = 0 选项卡tab_cont = 1 内容。
void setting_items_check(uint8_t cursor, uint8_t cursor_prv, uint8_t tab_cont);
//返回键按下后将设置项的内容更新更新第ite个选项卡的第con个内容
void setting_update(uint8_t ite, uint8_t con);
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
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; //当前游标位置, [000,000], 0~5整数表示6个位置
uint8_t io_cursor_prv; //前一时刻的游标位置
uint8_t i_numbers[6]; //实时显示的字符,输入
uint8_t o_numbers[6]; //实时显示的字符,输出
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; //向下溢出标志
//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);
int y_pri_up; //纵轴(主)上限
int y_pri_low; //纵轴(主)下限
float32 yreal_pri_up; //实际值y上限
float32 yreal_pri_low; //实际值y下限
//lv_chart_set_range(ui->screen_main_chart_1, LV_CHART_AXIS_SECONDARY_Y, y_scd_low, y_scd_up);
int y_scd_up; //纵轴(副)上限
int y_scd_low; //纵轴(副)下限
float32 yreal_scd_up; //实际值y上限
float32 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; //主轴等待滴答数,一段时间没变化后不更新曲线
int y_pri_value; //0号曲线的下一个点主y轴
int 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; //副轴等待滴答数,一段时间没变化后不更新曲线
int y_scd_value; //1号曲线的下一个点副y轴
int y_scd_value_prv; //前一时刻的点,用于判断是否需要更新内容
float32 yreal_scd_value; //1号曲线的下一个实际值
float32 yreal_scd_value_prv;//前一时刻的点,用于判断是否需要更新内容
}PLOT_DATA;
typedef struct
{
uint8_t tab_cursor; //选项卡游标,后续根据实际需求进行宏定义
uint8_t tab_cursor_prv; //前一时刻的选项卡游标
uint8_t tab_cursor_inner; //选项内部的游标, 99代表未选中。
uint8_t tab_cursor_inner_prv; //前一时刻的内部游标
//ITEMS0
uint8_t content00; //暂定电压单位V/mV0/1
uint8_t content01_V; //暂定电压上限mV-500,V-30
uint16_t content01_mV; //暂定电压上限mV-500,V-30
uint8_t content02_V; //暂定电压上限mV-500,V-30
uint16_t content02_mV; //暂定电压上限mV-500,V-30
}TABVIEW_DATA;
/**********test5**********/
#endif