更新:

1、设置菜单相关宏定义更改为枚举变量;
2、菜单外观调整;
This commit is contained in:
吴俊潮 2025-04-28 17:28:40 +08:00
parent 1f9278fbcc
commit fe761e5512
22 changed files with 17400 additions and 17201 deletions

View File

@ -31,7 +31,8 @@
"ip5310_i2c.h": "c",
"app_screen_main.h": "c",
"algorithm": "c",
"app_screen_setting.h": "c"
"app_screen_setting.h": "c",
"key_functions.h": "c"
},
"C_Cpp.errorSquiggles": "disabled",
"idf.pythonInstallPath": "F:\\Espressif\\tools\\idf-python\\3.11.2\\python.exe",

View File

@ -3,16 +3,78 @@
#include "apps_gather.h"
//初始界面
//{
//初始界面编号0开机动画
#define SCREEN_INIT 0
//}
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 m5data; //界面参数初始化
extern PLOT_DATA pltdata; //chart绘图参数初始化
//主界面
//{
//主界面编号1信号输入输出示波器显示
#define SCREEN_MAIN 1
//主界面ON
#define IO_ON 1

View File

@ -3,14 +3,118 @@
#include "apps_gather.h"
typedef enum
{
ITEM_0 = 0,
ITEM_1,
ITEM_2,
ITEM_3,
ITEM_NONE
}ITEMS;
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
DATA_SAVE,
INPUT_LOG,
OUTPUT_LOG,
DATA_RESET,
PAGE_PV_ITEM_2,
//ITEM_3
LIGHT_STATUS,
LANGUAGE_SELECT,
PAGE_PV_ITEM_3,
//general
CONTENT_EMPTY
}ITEM_CONTENTS;
typedef enum
{
COLOR_BLUE = 0,
COLOR_DARK_BLUE,
COLOR_YELLOW,
COLOR_GREEN,
COLOR_RED,
COLOR_PURPLE,
COLOR_BLACK
}COLORS;
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];
int16_t item0_page0_vlow[2];
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
uint8_t item2_page0_saveflag; //[0, 1,2 ] -> [未保存,保存中,已保存]
char log_time[60][16]; //输入&输出记录,时间戳
float32 input_log_value[60]; //输入记录,实际值
float32 output_log_value[60]; //输出记录,实际值
uint8_t item2_page0_resetflag; //[0, 1,2 ] -> [未复位,复位中,已复位]
//ITEMS_3
uint8_t item3_page0_lightflag; //照明状态标志0熄灭1开启
LANGUAGES item3_page0_language; //语言类型
}TABVIEW_DATA;
extern TABVIEW_DATA tabdata; //设置页面参数初始化
extern int16_t save_cnt;
extern int16_t reset_cnt;
//设置界面
#define SCREEN_SETTING 2
//{
//当前页码
#define PAGE_PV 99
extern int32_t color_table[7];
//页面数量
#define I0_PAGE_MAX 3
@ -18,144 +122,50 @@ extern int16_t reset_cnt;
#define I2_PAGE_MAX 1
#define I3_PAGE_MAX 1
//设置界面选项卡0从上往下数
#define ITEMS_0 0
//{
//选项卡内容编号
//电压单位
#define VOL_UNIT_SET 0
//电压上限设置
#define VOL_UP_SET 1
//电压下限设置
#define VOL_LOW_SET 2
//电流上限设置
#define CURRENT_UP_SET 3
//电流下限设置
#define CURRENT_LOW_SET 4
//电阻上限设置
#define RES_UP_SET 5
//电阻下限设置
#define RES_LOW_SET 6
//频率上限设置
#define FRE_UP_SET 7
//频率下限设置
#define FRE_LOW_SET 8
//热电偶TC类型设置
#define TC_TYPE_SET 9
//热电偶TC上限设置
#define TC_UP_SET 10
//热电偶下限设置
#define TC_LOW_SET 11
//热电阻上限设置
#define RTD_UP_SET 12
//热电阻下限设置
#define RTD_LOW_SET 13
//}
#define ITEMS_1 1
//设置界面选项卡1从上往下数
//{
//采样间隔
#define SAMPLE_INTERVAL 0
//描点个数
#define PLOT_NUM 1
//输入曲线颜色
#define INPUT_COLOR 2
//输出曲线颜色
#define OUTPUT_COLOR 3
//}
#define ITEMS_2 2
//设置界面选项卡2从上往下数
//{
//参数保存 -> 保存
#define DATA_SAVE 0
//输入记录
#define INPUT_LOG 1
//输出记录
#define OUTPUT_LOG 2
//参数复位 -> 复位
#define DATA_RESET 3
//}
#define ITEMS_3 3
//设置界面选项卡3从上往下数
//{
//照明 -> ON & OFF
#define LIGHT_STATUS 0
//语言
#define LANGUAGE_SELECT 1
//}
//选项卡未选中时的底色0xffffff0x000000
#define COLOR_ITEMS_UNCHECKED 0xffffff
//选项卡选中时的底色
#define COLOR_ITEMS_CHECKED 0xcbefff
//内容未选中时的底色
#define COLOR_CONTENTS_UNCHECKED 0xffffff
//内容选中时的底色
#define COLOR_CONTENTS_CHECKED 0xcbefff
//内容焦点后的底色
#define COLOR_CONTENTS_FOCUSED 0X9dffb0
//曲线备选颜色
//{
//淡蓝色
#define COLOR_BLUE 0
#define COLOR_LIGHT_BLUE_VALUE 0x75D4FF
//蓝色
#define COLOR_BLUE_VALUE 0x00B6FF
//深蓝色
#define COLOR_DARK_BLUE 1
#define COLOR_DARK_BLUE_VALUE 0x000FFF
//黄色
#define COLOR_YELLOW 2
#define COLOR_YELLOW_VALUE 0xEAE200
//橙色
#define COLOR_ORANGE_VALUE 0xFD8E10
//绿色
#define COLOR_GREEN 3
#define COLOR_GREEN_VALUE 0x00FF4E
//红色
#define COLOR_RED 4
#define COLOR_RED_VALUE 0xFF0027
//紫色
#define COLOR_PURPLE 5
#define COLOR_PURPLE_VALUE 0xFF00D4
//黑色
#define COLOR_BLACK 7
#define COLOR_BLACK_VALUE 0x000000
extern int32_t color_table[7];
//}
//白色
#define COLOR_WHITE_VALUE 0xffffff
//}
//选项卡未选中时的底色
#define COLOR_ITEMS_UNCHECKED COLOR_WHITE_VALUE
//选项卡选中时的底色
#define COLOR_ITEMS_CHECKED COLOR_LIGHT_BLUE_VALUE
//内容未选中时的底色
#define COLOR_CONTENTS_UNCHECKED COLOR_WHITE_VALUE
//内容选中时的底色
#define COLOR_CONTENTS_CHECKED COLOR_LIGHT_BLUE_VALUE
//内容焦点后的底色
#define COLOR_CONTENTS_FOCUSED COLOR_GREEN_VALUE
//设置菜单数据初始化
void tab_data_init(void);
@ -167,18 +177,18 @@ void eeprom_item_data_init(void);
void key_functions_setting(void);
//设置界面选项卡选中点亮cursor熄灭cursor_prv
void setting_items_check(uint8_t cursor, uint8_t cursor_prv);
void setting_items_check(ITEMS cursor, ITEMS cursor_prv);
//当前选项卡内容翻页:显示选项卡 ite 的第 page 页,
void setting_items_page(uint8_t ite, uint8_t page);
void setting_items_page(ITEMS ite, uint8_t page);
//设置界面选项卡内部内容选中点亮cursor熄灭cursor_prv焦点focus
void setting_contents_check(uint8_t cursor, uint8_t cursor_prv);
//设置界面选项卡内部内容选中之后根据键值key_val和步长step修改内容修改第ite个选项卡的第con个内容
void setting_contents_modify(uint8_t ite, uint8_t con, int8_t step);
void setting_contents_modify(ITEMS ite, ITEM_CONTENTS con, int8_t step);
//设置内容的底色
//设置修改项的底色,表示选中和焦点
void set_contents_color(uint8_t cursor, uint32_t color);
//恢复设置界面的各项参数显示,用于界面切换(主界面->设置界面)
@ -189,7 +199,7 @@ void scr_setting_run(void);
//设置界面语言切换主界面的语言切换在set_working_mode内
//此处用于更改标题和选项卡的语言,内容的语言切换在 set_XXX_text & set_XXX_value内
void setting_laguage_switch(uint8_t lan);
void setting_laguage_switch(LANGUAGES lan);
//执行保存功能
void deal_data_save(void);
@ -197,6 +207,39 @@ void deal_data_save(void);
//执行复位功能
void deal_data_reset(void);
//修改选项卡0的文本
void set_item0_text(ITEM_CONTENTS con);
//修改选项卡1的文本
void set_item1_text(ITEM_CONTENTS con);
//修改选项卡2的文本
void set_item2_text(ITEM_CONTENTS con);
//修改选项卡3的文本
void set_item3_text(ITEM_CONTENTS con);
//修改对象颜色
void set_obj_color(lv_obj_t * obj, uint8_t color);
//修改选项卡0的值
void set_item0_value(ITEM_CONTENTS con, int8_t step);
//修改选项卡1的值
void set_item1_value(ITEM_CONTENTS con, int8_t step);
//修改选项卡2的值
void set_item2_value(ITEM_CONTENTS con, int8_t step);
//修改选项卡3的值
void set_item3_value(ITEM_CONTENTS con, int8_t step);
//查看输入输出记录io -> 输入/输出page -> 指定页码
void show_IO_log(uint8_t io, uint8_t page);
//内容游标 uint8_t -> enum
ITEM_CONTENTS content_cur_char2enum(ITEMS ite, uint8_t cur_uint8);
#endif

View File

@ -1,16 +1,6 @@
/*
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-27 11:51:06
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-04-01 11:42:55
* @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
//{
/**********************************************Drivers**********************************************/
#include "main.h"
#include "tm1650.h"
#include "mux_signal.h"
@ -24,14 +14,23 @@
#include "SIG24130.h"
#include "FreeRTOS.h"
#include "task.h"
//}
//LVGL
#include "timer.h"
#include "stdio.h"
#include "ip5310_i2c.h"
#include "eeprom_spi.h"
#include "stdlib.h"
/**********************************************Drivers**********************************************/
//
//
//
/**********************************************LVGL**********************************************/
#include "lvgl.h" // 它为整个LVGL提供了更完整的头文件引用
#include "lv_port_disp.h" // LVGL的显示
#include "gui_guider.h" // Gui Guider 生成的界面和控件的声明
#include "events_init.h" // Gui Guider 生成的初始化事件、回调函数
//#include "lv_demo_benchmark.h"
//LVGL相关外部变量
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];
@ -50,16 +49,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 "stdlib.h"
//#include "lv_demo_benchmark.h"
/**********************************************LVGL**********************************************/
//
//
//
/**********************************************Functions**********************************************/
typedef enum
{
SIG_VOLTAGE = 0, //电压
@ -88,124 +82,6 @@ typedef enum
RTD_DC //热电阻摄氏度
}SIG_FUNCTIONS_TYPE;
typedef enum
{
KEY_OUT = 0,
KEY_UP,
KEY_MENU,
KEY_IN,
KEY_LEFT,
KEY_OK,
KEY_RIGHT,
KEY_SWITCH,
KEY_SOURCE,
KEY_DOWN,
KEY_BACK,
KEY_NONE,
KEY_ALL
}KEYS_TAG;
typedef enum
{
KEY_OUT_VAL = 76,
KEY_UP_VAL = 84,
KEY_MENU_VAL = 68,
KEY_IN_VAL = 78,
KEY_LEFT_VAL = 77,
KEY_OK_VAL = 85,
KEY_RIGHT_VAL = 94,
KEY_SWITCH_VAL = 69,
KEY_SOURCE_VAL = 111,
KEY_DOWN_VAL = 86,
KEY_BACK_VAL = 70,
KEY_NONE_VAL = 0,
KEY_ALL_VAL = 250
}KEYS_VALUE;
typedef enum
{
KEY_STATUS_DISABLE = 0,
KEY_STATUS_ENABLE
}KEYS_STATUS;
typedef struct
{
KEYS_TAG tag;
KEYS_VALUE value;
KEYS_STATUS status;
}KEYS;
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中手动写入
KEYS_STATUS key_sts[11]; //按键状态,是否使能
//screen_init
uint8_t scr_init_flag; //初始界面标志,是否播放过开机动画
//screen_main
uint8_t key_main_enable; //按键功能使能标志
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;
typedef struct
{
SIG_FUNCTIONS tag; //物理量标签
@ -215,71 +91,58 @@ typedef struct
float32 pv; //当前值
}PHYSICAL_QUANTITY;
typedef enum
{
SCREEN_INIT = 0,
SCREEN_MAIN,
SCREEN_SETTING
}SCREENS;
typedef enum
{
MENU_SIMPLYFY_CHINESE = 0,
MENU_ENGLISH
}LANGUAGES;
typedef enum
{
OPENNING_ANIME, //播放开机动画
MAIN_FUNCTION, //主要功能:输入&输出、曲线显示等
SET_ITEM_CHOOSE, //设置菜单:选项卡选择
SET_CONTENT_CHOOSE, //设置菜单:内容选择
SET_CONTENT_MODIFY, //设置菜单:内容修改
SET_SHOW_LOG //设置菜单:查看记录
}OPERATIONS;
typedef struct
{
uint8_t item_cursor; //选项卡游标,后续根据实际需求进行宏定义
uint8_t item_cursor_prv; //前一时刻的选项卡游标
uint8_t item_page; //当前页
uint8_t item_page_prv; //前一页
uint8_t content_cursor; //选项内部的游标, 最大范围0~356行6列从左至右从上至下99代表未选中。
uint8_t content_cursor_prv; //前一时刻的内部游标
uint8_t content_focus; //内容焦点
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_consume_max; //最大内存占用占用0-100
uint8_t eeprom_read_error; //eeprom读是否出现过错误
uint8_t eeprom_write_error; //eeprom写是否出现过错误
uint8_t eeprom_current_status; //eeprom状态
//ITEMS_0
SIG_FUNCTIONS_TYPE item0_page0_vunit;
int16_t item0_page0_vup[2];
int16_t item0_page0_vlow[2];
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;
}SYSTEM_STATUS_WATCH;
//ITEMS_1
uint16_t item1_page0_sample_interval; //采样间隔ms
uint8_t item1_page0_plot_num; //曲线上显示的点数
int8_t item1_page0_color_input; //输出曲线及其图例的颜色
int8_t item1_page0_color_output; //输出曲线及其图例的颜色
//ITEMS_2
uint8_t item2_page0_saveflag; //[0, 1,2 ] -> [未保存,保存中,已保存]
char log_time[60][16]; //输入&输出记录,时间戳
float32 input_log_value[60]; //输入记录,实际值
float32 output_log_value[60]; //输出记录,实际值
uint8_t item2_page0_resetflag; //[0, 1,2 ] -> [未复位,复位中,已复位]
//ITEMS_3
uint8_t item3_page0_lightflag; //照明状态标志0熄灭1开启
uint8_t item3_page0_language; //语言类型
}TABVIEW_DATA;
//避免无法定位上面自定义的枚举和结构体
#include "app_screen_main.h"
#include "app_screen_setting.h"
#include "scr_setting_item_text.h"
#include "scr_setting_item_value.h"
#include "key_functions.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; //热电阻
extern KEYS key_pv;
//语言
#define MENU_SIMPLYFY_CHINESE 0
#define MENU_ENGLISH 1
extern OPERATIONS current_operation; //当前操作
extern SYSTEM_STATUS_WATCH system_sts; //系统状态监控
//绝对值计算
#define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) )
@ -323,15 +186,12 @@ float32 temp2ohm(float32 temp);
//初始化打包
void my_inits_gather(void);
//按键数据类型转换
void key_char2struct(void);
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts);
/**********************************************Functions**********************************************/
//
//
//
#endif

View File

@ -150,9 +150,6 @@
#define DATA_SAVE_ALL 0
extern uint8_t eeprom_wrt_error_flag;
extern uint8_t eeprom_rd_error_flag;
void eeprom_spi_init(void);
void eeprom_spi_writebyte(uint8_t wrt_data);
uint8_t SPI_WriteReadByte(uint8_t data);

View File

@ -0,0 +1,70 @@
#ifndef _KEY_FUNCTIONS_H
#define _KEY_FUNCTIONS_H
#include "apps_gather.h"
typedef enum
{
KEY_OUT = 0, //输出
KEY_UP, //上
KEY_MENU, //菜单
KEY_IN, //输入
KEY_LEFT, //左
KEY_OK, //OK确认
KEY_RIGHT, //右
KEY_SWITCH, //二级菜单,切换输出&输入类型
KEY_SOURCE, //闲置,预留
KEY_DOWN, //下
KEY_BACK, //返回
KEY_NONE, //空闲
KEY_ALL //全选
}KEYS_TAG;
//tm1650扫描得到的原始键值
typedef enum
{
KEY_OUT_VAL = 76,
KEY_UP_VAL = 84,
KEY_MENU_VAL = 68,
KEY_IN_VAL = 78,
KEY_LEFT_VAL = 77,
KEY_OK_VAL = 85,
KEY_RIGHT_VAL = 94,
KEY_SWITCH_VAL = 69,
KEY_SOURCE_VAL = 111,
KEY_DOWN_VAL = 86,
KEY_BACK_VAL = 70,
KEY_NONE_VAL = 0,
KEY_ALL_VAL = 250
}KEYS_VALUE;
typedef enum
{
KEY_STATUS_DISABLE = 0,
KEY_STATUS_ENABLE
}KEYS_STATUS;
typedef struct
{
KEYS_TAG tag;
KEYS_VALUE value;
KEYS_STATUS status;
}KEYS;
extern KEYS key_pv; //当前按键
extern KEYS_STATUS key_sts[11]; //11个按键的状态排列顺序与枚举顺序一致
//按键数据类型转换
void key_char2struct(void);
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts);
//按键配置更新
void key_config_update(OPERATIONS ope);
#endif

View File

@ -3,20 +3,7 @@
#include "apps_gather.h"
//修改选项卡0的文本
void set_item0_text(uint8_t con);
//修改选项卡1的文本
void set_item1_text(uint8_t con);
//修改选项卡2的文本
void set_item2_text(uint8_t con);
//修改选项卡3的文本
void set_item3_text(uint8_t con);
//修改对象颜色
void set_obj_color(lv_obj_t * obj, uint8_t color);
#endif

View File

@ -7,21 +7,6 @@
#define LIGHT_OFF HAL_GPIO_WritePin(light_GPIO_Port, light_Pin, GPIO_PIN_RESET)
//修改选项卡0的值
void set_item0_value(uint8_t con, int8_t step);
//修改选项卡1的值
void set_item1_value(uint8_t con, int8_t step);
//修改选项卡2的值
void set_item2_value(uint8_t con, int8_t step);
//修改选项卡3的值
void set_item3_value(uint8_t con, int8_t step);
//查看输入输出记录io -> 输入/输出page -> 指定页码
void show_IO_log(uint8_t io, uint8_t page);
#endif

View File

@ -11,10 +11,6 @@ void screen_data_init(void)
m5data.tick_cur = -1; //当前时刻,用于计时
m5data.menu_reset_flag = 0; //复位使能标志置1后复位复位完成后变回0
physical_quantity_init();
for (uint8_t i = 0; i < 11; i++)
{
m5data.key_sts[i] = KEY_STATUS_ENABLE;
}
//screen_init
m5data.scr_init_flag = 0; //是否进行过初始化(开机动画)
@ -132,441 +128,7 @@ void menu_reset(void)
screen_data_init();
}
//KEY_MAIN
void key_functions_main(void)
{
if( key_pv.status == KEY_STATUS_DISABLE ) return;
uint8_t cursor_temp = 0; //临时游标,替代枚举变量进行加减运算
switch (key_pv.tag)
{
case KEY_OUT:
{
key = 0;
key_char2struct();
//交替按下 in 和 out 时,只改变输入/输出,连续按同一个键的时候才改变类型
if(m5data.io_mode == IO_INPUT)
{
m5data.io_mode = IO_OUTPUT;
m5data.output_mode = m5data.input_mode;
io_on2off_status(); //更新状态指示
}
else
{
cursor_temp = (uint8_t)m5data.output_mode;
cursor_temp = (cursor_temp >= 5)?(0):(cursor_temp + 1);
m5data.output_mode = (SIG_FUNCTIONS)cursor_temp;
}
switch (m5data.output_mode)
{
case SIG_VOLTAGE: //电压
{
m5data.output_mode_type = VOLTAGE_V;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_CURRENT: //电流
{
m5data.output_mode_type = CURRENT_MA;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_RESISTANT: //电阻
{
m5data.output_mode_type = RESISTANT_OHM;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_FREQUENCE: //频率
{
m5data.output_mode_type = FREQUENCE_KHZ;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_TC: //热电偶
{
m5data.output_mode_type = TC_K;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_RTD: //热电阻
{
m5data.output_mode_type = RTD_DC;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
default:
break;
}
}
break;
case KEY_UP:
{
key = 0;
key_char2struct();
if(m5data.io_mode == IO_INPUT)
{
return;
}
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
keyset_output(1);
}
break;
case KEY_MENU:
{
key = 0;
key_char2struct();
//加载菜单界面
lv_scr_load(guider_ui.screen_setting);
scr_setting_recover();
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单
}
break;
case KEY_IN:
{
key = 0;
key_char2struct();
if(m5data.io_mode == IO_OUTPUT)
{
m5data.io_mode = IO_INPUT;
//继承之前的输出类型
m5data.input_mode = m5data.output_mode;
io_on2off_status(); //更新状态指示
}
else
{
//枚举类型不能直接运算于是使用临时变量cursor_temp
cursor_temp = (uint8_t)m5data.input_mode;
cursor_temp = (cursor_temp >= 5)?(0):(cursor_temp + 1);
m5data.input_mode = (SIG_FUNCTIONS)cursor_temp;
}
switch (m5data.input_mode)
{
case SIG_VOLTAGE: //电压
{
m5data.input_mode_type = VOLTAGE_V;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_CURRENT: //电流
{
m5data.input_mode_type = CURRENT_MA;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_RESISTANT: //电阻
{
m5data.input_mode_type = RESISTANT_OHM;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_FREQUENCE: //频率
{
m5data.input_mode_type = FREQUENCE_KHZ;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_TC: //热电偶
{
m5data.input_mode_type = TC_K;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_RTD: //热电阻
{
m5data.input_mode_type = RTD_DC;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
default:
break;
}
}
break;
case KEY_LEFT:
{
key = 0;
key_char2struct();
if(m5data.io_mode == IO_INPUT)
{
return;
}
#if NIXIE_CUBE_ENABLE
// m5data.twk_flag = 1; //上、下、左、右 任意一个键按下后,闪烁开始
// m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
//避免游标移动的瞬间,前一刻的数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值
set_nixie_cube(IO_OUTPUT, m5data.io_cursor, m5data.o_numbers[m5data.io_cursor]);
m5data.io_cursor_prv = m5data.io_cursor;
m5data.io_cursor = (m5data.io_cursor <= 0)?(6):(m5data.io_cursor - 1);
set_cursor_position();
}
break;
case KEY_OK:
{
key = 0;
key_char2struct();
//主界面用OK键控制开关ON&OFF
if(m5data.io_on2off == IO_ON)
{
m5data.io_on2off = IO_OFF;
}
else
{
m5data.io_on2off = IO_ON;
}
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
}
break;
case KEY_RIGHT:
{
key = 0;
key_char2struct();
if(m5data.io_mode == IO_INPUT)
{
return;
}
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
//避免游标移动的瞬间,前一刻的数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值
set_nixie_cube(IO_OUTPUT, m5data.io_cursor, m5data.o_numbers[m5data.io_cursor]);
m5data.io_cursor_prv = m5data.io_cursor;
m5data.io_cursor = (m5data.io_cursor >= 6)?(0):(m5data.io_cursor + 1);
set_cursor_position();
}
break;
case KEY_SWITCH:
{
key = 0;
key_char2struct();
switch (m5data.io_mode) //输入、输出模式切换
{
case IO_OUTPUT:
{
switch (m5data.output_mode) //功能切换
{
case SIG_VOLTAGE:
{
cursor_temp = (uint8_t)m5data.output_mode_type;
cursor_temp = !cursor_temp;
m5data.output_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_CURRENT:
{
m5data.output_mode_type = CURRENT_MA;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_RESISTANT: //电阻
{
m5data.output_mode_type = RESISTANT_OHM;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_FREQUENCE: //频率
{
m5data.output_mode_type = FREQUENCE_KHZ;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_TC: //热电偶
{
cursor_temp = (uint8_t)m5data.output_mode_type;
cursor_temp = (cursor_temp >= 12)?(5):(cursor_temp + 1);
m5data.output_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
case SIG_RTD: //热电阻
{
m5data.output_mode_type = RTD_DC;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
}
break;
default:
break;
}
}
break;
case IO_INPUT:
{
switch (m5data.input_mode)
{
case SIG_VOLTAGE:
{
cursor_temp = (uint8_t)m5data.input_mode_type;
cursor_temp = !cursor_temp;
m5data.input_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_CURRENT:
{
m5data.input_mode_type = CURRENT_MA;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_RESISTANT: //电阻
{
m5data.input_mode_type = RESISTANT_OHM;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_FREQUENCE: //频率
{
m5data.input_mode_type = FREQUENCE_KHZ;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_TC: //热电偶
{
cursor_temp = (uint8_t)m5data.input_mode_type;
cursor_temp = (cursor_temp >= 12)?(5):(cursor_temp + 1);
m5data.input_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
case SIG_RTD: //热电阻
{
m5data.input_mode_type = RTD_DC;
set_working_mode(m5data.input_mode, m5data.input_mode_type);
}
break;
default:
break;
}
}
break;
default:
break;
}
}
break;
case KEY_SOURCE:
{
//电源开关靠硬件电路实现,此处可做预留
key = 0;
key_char2struct();
}
break;
case KEY_DOWN:
{
key = 0;
key_char2struct();
if(m5data.io_mode == IO_INPUT)
{
return;
}
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
keyset_output(-1);
}
break;
case KEY_BACK: //闲置,预留
{
key = 0;
key_char2struct();
}
break;
case KEY_ALL: //闲置,预留
{
key = 0;
key_char2struct();
}
break;
case KEY_NONE: //闲置,预留
{
}
break;
default:
{
key = 0;
key_char2struct();
}
break;
}
}
uint8_t init_step = 0;
void scr_init_run(void)
@ -575,6 +137,9 @@ void scr_init_run(void)
{
case 0:
{
current_operation = OPENNING_ANIME;
key_config_update(current_operation);
if( init_set_bar(0, 35, 1200) )
{
init_step = 1;
@ -745,7 +310,6 @@ void scr_main_run(void)
#if EEPROM_MONITOR_ENABLE
//eeprom状态监控置于运行时间显示内部
uint8_t ee_status_test = 0;
void eep_status_monitor(void)
{
EEPROM_CS_L;
@ -757,7 +321,7 @@ void eep_status_monitor(void)
EEPROM_CS_L;
delay_cnt(10);
eeprom_spi_writebyte(READ_STATUS);
ee_status_test = eeprom_spi_readbyte();
system_sts.eeprom_current_status = eeprom_spi_readbyte();
delay_cnt(10);
EEPROM_CS_H;
}
@ -1366,6 +930,10 @@ void io_on2off_status(void)
void scr_main_recover(void)
{
//当前操作切换至“主要功能”,使能所有按键
current_operation = MAIN_FUNCTION;
key_config_update(current_operation);
// 运行时间 和 电池电量 在主界面的函数中已存在,无需额外恢复
//恢复默认工作模式
m5data.io_mode = IO_OUTPUT;
@ -1386,22 +954,8 @@ void scr_main_recover(void)
scr_main_color_update();
//熄灭设置界面的选项卡缓存(隐藏式切换界面)
setting_items_check(99, tabdata.item_cursor);
tabdata.item_cursor = 0;
tabdata.item_cursor_prv = 99;
setting_items_check(ITEM_NONE, tabdata.item_cursor);
//使能所有按键
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_IN, KEY_STATUS_ENABLE);
key_config(KEY_OUT, KEY_STATUS_ENABLE);
key_config(KEY_SOURCE, KEY_STATUS_ENABLE);
key_config(KEY_MENU, KEY_STATUS_ENABLE);
key_config(KEY_SWITCH, KEY_STATUS_ENABLE);
key = 0;
key_char2struct();
}

View File

@ -15,13 +15,14 @@ int32_t color_table[7] =
//设置菜单数据初始化
void tab_data_init(void)
{
tabdata.item_cursor = 0; //选项卡的游标(焦点)
tabdata.item_cursor_prv = 99; //前一刻的选项卡游标
tabdata.item_cursor = ITEM_0; //选项卡的游标(焦点)
tabdata.item_cursor_prv = ITEM_0; //前一刻的选项卡游标
tabdata.item_page = 1; //当前页
tabdata.item_page_prv = 1; //前一页
tabdata.content_cursor = 99; //某一选项卡内部的游标
tabdata.content_cursor = 0; //某一选项卡内部的游标
tabdata.content_cursor_prv = 99; //前一刻的~
tabdata.content_focus = 0; //默认无焦点
tabdata.current_content = CONTENT_EMPTY; //当前指向内容,枚举类型
//设置界面的初始默认值
@ -66,7 +67,7 @@ void eeprom_item_data_init(void)
}
//读取过程中出现过错误,或者触发复位
if( (eeprom_rd_error_flag == 1)||(tabdata.item2_page0_resetflag == 1) )
if( (system_sts.eeprom_read_error == 1)||(tabdata.item2_page0_resetflag == 1) )
{
tabdata.item0_page0_vup[0] = VOL[0].up; //电压V上限
tabdata.item0_page0_vlow[0] = VOL[0].low; //电压V下限
@ -112,521 +113,44 @@ void eeprom_item_data_init(void)
}
}
//KEY_SETTING
void key_functions_setting(void)
{
if( key_pv.status == KEY_STATUS_DISABLE ) return;
switch (key_pv.tag)
{
case KEY_BACK:
{
key = 0;
key_char2struct();
//从设置界面返回主界面
if(tabdata.content_cursor == 99)
{
//加载主界面
lv_scr_load(guider_ui.screen_main);
scr_main_recover();
lv_obj_clear_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
//隐藏设置界面对象
lv_obj_add_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
m5data.scr_now = SCREEN_MAIN;
}
else
{
//当不存在焦点时,从内容选择返回选项卡选择
if(tabdata.content_focus == 0)
{
//熄灭当前选中的内容
setting_contents_check(99, tabdata.content_cursor);
//取消内容选中与焦点
tabdata.content_cursor = 99;
tabdata.content_cursor_prv = 99;
tabdata.item_page = 1;
tabdata.item_page_prv = 1;
tabdata.content_focus = 0;
//进入选项卡选择状态
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
else
{
//当存在焦点时,取消焦点,返回内容选择
tabdata.content_focus = 0;
setting_contents_check(tabdata.content_cursor, 99);
//更新当前游标所在内容的文本(焦点前后不一致)
uint8_t inner_cursor = 0;
inner_cursor = tabdata.content_cursor + (tabdata.item_page - 1) * 6;
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
set_item0_text(inner_cursor);
if(inner_cursor == VOL_UNIT_SET)
{
set_item0_text(VOL_UP_SET);
set_item0_text(VOL_LOW_SET);
}
if(inner_cursor == TC_TYPE_SET)
{
set_item0_text(TC_UP_SET);
set_item0_text(TC_LOW_SET);
}
}
break;
case ITEMS_1:
{
set_item1_text(inner_cursor);
}
break;
case ITEMS_2:
{
if( (inner_cursor == INPUT_LOG)||(inner_cursor == OUTPUT_LOG) )
{
setting_items_page(ITEMS_2, 1);
}
set_item2_text(inner_cursor);
}
break;
case ITEMS_3:
{
set_item3_text(inner_cursor);
}
break;
default:
break;
}
//进入内容选择状态
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
}
}
break;
case KEY_UP:
{
key = 0;
key_char2struct();
//内部游标为99时说明未选中任何一个选项卡此时的up和down用于切换选项卡
if(tabdata.content_cursor == 99)
{
tabdata.item_cursor_prv = tabdata.item_cursor;
tabdata.item_cursor = (tabdata.item_cursor <= 0)?(3):(tabdata.item_cursor - 1);
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
}
else
{
//某个选项卡被选中后,某个内容被焦点前,在此处选择内容值
if(tabdata.content_focus == 0)
{
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor - 1) < 0)?(5):(tabdata.content_cursor - 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_1:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor - 1) < 0)?(3):(tabdata.content_cursor - 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_2:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor - 1) < 0)?(3):(tabdata.content_cursor - 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_3:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor - 1) < 0)?(1):(tabdata.content_cursor - 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
default:
break;
}
}
else
{
//某个内容被焦点后,使用 KEY_LEFT 和 KEY_RIGHT 修改内容,禁用 KEY_UP 和 KEY_DOWN
return;
}
}
}
break;
case KEY_DOWN:
{
key = 0;
key_char2struct();
//内部游标为99时说明未选中任何一个选项卡此时的up和down用于切换选项卡
if(tabdata.content_cursor == 99)
{
tabdata.item_cursor_prv = tabdata.item_cursor;
tabdata.item_cursor = (tabdata.item_cursor >= 3)?(0):(tabdata.item_cursor + 1);
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
}
else
{
if(tabdata.content_focus == 0)
{
//某个内容被焦点前,在此处选择内容值
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor + 1) > 5)?(0):(tabdata.content_cursor + 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_1:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor + 1) > 3)?(0):(tabdata.content_cursor + 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_2:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor + 1) > 3)?(0):(tabdata.content_cursor + 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
case ITEMS_3:
{
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = ( (tabdata.content_cursor + 1) > 1)?(0):(tabdata.content_cursor + 1);
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
}
break;
default:
break;
}
}
else
{
//某个内容被焦点后,使用 KEY_LEFT 和 KEY_RIGHT 修改内容,禁用 KEY_UP 和 KEY_DOWN
return;
}
}
}
break;
case KEY_OK:
{
key = 0;
key_char2struct();
if(tabdata.content_cursor == 99)
{
//选中某个选项卡后,点亮该选项卡内的第一个内容
tabdata.content_cursor = 0;
tabdata.content_cursor_prv = 99;
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
//进入内容选择状态
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
else
{
//选中选项卡内的某个内容后,焦点当前选中内容
tabdata.content_focus = 1;
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
//焦点后更新所选内容的文本
uint8_t inner_cursor = 0;
inner_cursor = tabdata.content_cursor + (tabdata.item_page - 1) * 6;
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
set_item0_text(inner_cursor);
}
break;
case ITEMS_1:
{
set_item1_text(inner_cursor);
}
break;
case ITEMS_2:
{
set_item2_text(inner_cursor);
}
break;
case ITEMS_3:
{
set_item3_text(inner_cursor);
}
break;
default:
break;
}
//进入内容修改状态
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_DISABLE);
key_config(KEY_UP, KEY_STATUS_DISABLE);
key_config(KEY_DOWN, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
}
break;
case KEY_LEFT:
{
key = 0;
key_char2struct();
if( tabdata.content_cursor == 99 )
{
//选项卡未选中时,直接返回
return;
}
if(tabdata.content_focus == 0)
{
//不存在焦点时,执行翻页操作
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
tabdata.item_page_prv = tabdata.item_page;
tabdata.item_page = ( (tabdata.item_page - 1) <= 0)?(3):(tabdata.item_page - 1);
setting_items_page(ITEMS_0, tabdata.item_page);
//翻页后内容游标变为第一个
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = 0;
setting_contents_check(99, tabdata.content_cursor_prv);
setting_contents_check(tabdata.content_cursor, 99);
}
break;
case ITEMS_1:
{}
break;
case ITEMS_2:
{}
break;
case ITEMS_3:
{}
break;
default:
break;
}
}
else
{
//存在焦点后,修改内容
uint8_t inner_cursor = 0;
inner_cursor = tabdata.content_cursor + (tabdata.item_page - 1) * 6;
setting_contents_modify(tabdata.item_cursor, inner_cursor, -1);
}
}
break;
case KEY_RIGHT:
{
key = 0;
key_char2struct();
if( tabdata.content_cursor == 99 )
{
//选项卡未选中时,直接返回
return;
}
if(tabdata.content_focus == 0)
{
//翻页
switch (tabdata.item_cursor)
{
case ITEMS_0:
{
tabdata.item_page_prv = tabdata.item_page;
tabdata.item_page = ( (tabdata.item_page + 1) >= 4)?(1):(tabdata.item_page + 1);
setting_items_page(ITEMS_0, tabdata.item_page);
//翻页后内容游标变为第一个
tabdata.content_cursor_prv = tabdata.content_cursor;
tabdata.content_cursor = 0;
setting_contents_check(99, tabdata.content_cursor_prv);
setting_contents_check(tabdata.content_cursor, 99);
}
break;
case ITEMS_1:
{}
break;
case ITEMS_2:
{}
break;
case ITEMS_3:
{}
break;
default:
break;
}
}
else
{
//修改内容
uint8_t inner_cursor = 0;
inner_cursor = tabdata.content_cursor + (tabdata.item_page - 1) * 6;
setting_contents_modify(tabdata.item_cursor, inner_cursor, 1);
}
}
break;
case KEY_NONE:
{
}
default:
{
key = 0;
key_char2struct();
}
break;
}
}
void setting_items_check(uint8_t cursor, uint8_t cursor_prv)
void setting_items_check(ITEMS cursor, ITEMS cursor_prv)
{
tabdata.item_page = 1;
//操作选项卡
switch (cursor) //点亮选项卡刷新当前选项卡内容至第1页
{
case ITEMS_0:
case ITEM_0:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s0, lv_color_hex(COLOR_ITEMS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
setting_items_page(ITEMS_0, 1);
setting_items_page(ITEM_0, 1);
}
break;
case ITEMS_1:
case ITEM_1:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s1, lv_color_hex(COLOR_ITEMS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
setting_items_page(ITEMS_1, 1);
setting_items_page(ITEM_1, 1);
}
break;
case ITEMS_2:
case ITEM_2:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s2, lv_color_hex(COLOR_ITEMS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
setting_items_page(ITEMS_2, 1);
setting_items_page(ITEM_2, 1);
}
break;
case ITEMS_3:
case ITEM_3:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s3, lv_color_hex(COLOR_ITEMS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
setting_items_page(ITEMS_3, 1);
setting_items_page(ITEM_3, 1);
}
break;
@ -636,25 +160,25 @@ void setting_items_check(uint8_t cursor, uint8_t cursor_prv)
switch (cursor_prv) //熄灭前一时刻选项卡,并隐藏选项卡内容(已在 setting_items_page 中实现)
{
case ITEMS_0:
case ITEM_0:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s0, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case ITEMS_1:
case ITEM_1:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s1, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case ITEMS_2:
case ITEM_2:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s2, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case ITEMS_3:
case ITEM_3:
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_s3, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
}
@ -667,10 +191,10 @@ void setting_items_check(uint8_t cursor, uint8_t cursor_prv)
}
//当前选项卡内容翻页隐藏当前页显示目标页page
void setting_items_page(uint8_t ite, uint8_t page)
void setting_items_page(ITEMS ite, uint8_t page)
{
//特殊处理,避免其他选项卡也被染上颜色
if(ite != ITEMS_1)
if(ite != ITEM_1)
{
set_obj_color(guider_ui.screen_setting_label_21, 7);
set_obj_color(guider_ui.screen_setting_label_31, 7);
@ -678,7 +202,7 @@ void setting_items_page(uint8_t ite, uint8_t page)
switch (ite)
{
case ITEMS_0:
case ITEM_0:
{
//启用所需组件
if( lv_obj_has_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN) ) { lv_obj_clear_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN); };
@ -817,11 +341,11 @@ void setting_items_page(uint8_t ite, uint8_t page)
}
//更新页码
set_item0_text(PAGE_PV);
set_item0_text(PAGE_PV_ITEM_0);
}
break;
case ITEMS_1:
case ITEM_1:
{
//启用所需组件
if( lv_obj_has_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN) ) { lv_obj_clear_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN); };
@ -881,11 +405,11 @@ void setting_items_page(uint8_t ite, uint8_t page)
}
//更新页码
set_item1_text(PAGE_PV);
set_item1_text(PAGE_PV_ITEM_1);
}
break;
case ITEMS_2:
case ITEM_2:
{
//启用所需组件
if( lv_obj_has_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN) ) { lv_obj_clear_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN); };
@ -944,11 +468,11 @@ void setting_items_page(uint8_t ite, uint8_t page)
}
//更新页码
set_item2_text(PAGE_PV);
set_item2_text(PAGE_PV_ITEM_2);
}
break;
case ITEMS_3:
case ITEM_3:
{
//启用所需组件
if( lv_obj_has_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN) ) { lv_obj_clear_flag(guider_ui.screen_setting_label_00, LV_OBJ_FLAG_HIDDEN); };
@ -1001,7 +525,7 @@ void setting_items_page(uint8_t ite, uint8_t page)
}
//更新页码
set_item3_text(PAGE_PV);
set_item3_text(PAGE_PV_ITEM_3);
}
break;
@ -1034,13 +558,12 @@ void setting_contents_check(uint8_t cursor, uint8_t cursor_prv)
}
//设置界面选项卡内部内容选中之后修改内容修改第ite个选项卡的第con个内容
uint8_t log_page = 1;
void setting_contents_modify(uint8_t ite, uint8_t con, int8_t step)
void setting_contents_modify(ITEMS ite, ITEM_CONTENTS con, int8_t step)
{
//选中某一选项卡后,对选项卡内部的内容进行选择
switch (ite)
{
case ITEMS_0:
case ITEM_0:
{
set_item0_value(con, step);
set_item0_text(con);
@ -1050,7 +573,7 @@ void setting_contents_modify(uint8_t ite, uint8_t con, int8_t step)
}
break;
case ITEMS_1:
case ITEM_1:
{
set_item1_value(con, step);
set_item1_text(con);
@ -1060,36 +583,14 @@ void setting_contents_modify(uint8_t ite, uint8_t con, int8_t step)
}
break;
case ITEMS_2:
case ITEM_2:
{
if( con == INPUT_LOG )
{
log_page += step;
if(log_page > 10) log_page = 1;
if(log_page < 1) log_page = 10;
show_IO_log(IO_INPUT, log_page);
return;
}
if (con == OUTPUT_LOG)
{
log_page += step;
if(log_page > 10) log_page = 1;
if(log_page < 1) log_page = 10;
show_IO_log(IO_OUTPUT, log_page);
return;
}
set_item2_value(con, step);
set_item2_text(con);
}
break;
case ITEMS_3:
case ITEM_3:
{
set_item3_value(con, step);
set_item3_text(con);
@ -1102,7 +603,7 @@ void setting_contents_modify(uint8_t ite, uint8_t con, int8_t step)
}
//设置内容的底色
//设置修改项的底色,表示选中和焦点
void set_contents_color(uint8_t cursor, uint32_t color)
{
switch (cursor)
@ -1150,28 +651,20 @@ void set_contents_color(uint8_t cursor, uint32_t color)
void scr_setting_recover(void)
{
//当前操作切换至“选项卡选择”,按键配置同步更新
current_operation = SET_ITEM_CHOOSE;
key_config_update(current_operation);
//在这里恢复选项卡0第1页的显示内容
tabdata.item_cursor = 0;
tabdata.item_cursor_prv = 99;
tabdata.item_cursor = ITEM_0;
tabdata.item_cursor_prv = ITEM_NONE;
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
setting_laguage_switch(tabdata.item3_page0_language);
tabdata.item_page = 1;
setting_items_page(ITEMS_0 ,tabdata.item_page);
setting_items_page(ITEM_0 ,tabdata.item_page);
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
key = 0;
key_char2struct();
}
@ -1186,10 +679,9 @@ void scr_setting_run(void) //详细设置界面
}
//执行保存功能
uint8_t save_step = 0;
void deal_data_save(void)
{
uint8_t save_step = 0;
if(tabdata.item2_page0_saveflag == 1)
{
if(save_step == 0)
@ -1210,7 +702,7 @@ void deal_data_save(void)
{
save_cnt = 0;
if(eeprom_wrt_error_flag == 0)
if(system_sts.eeprom_write_error == 0)
{
//未出错
tabdata.item2_page0_saveflag = 2;
@ -1227,17 +719,18 @@ void deal_data_save(void)
//使能所有按键
key_config(KEY_ALL, KEY_STATUS_ENABLE);
save_step = 0;
}
}
}
}
uint8_t reset_step = 0;
//执行复位功能
void deal_data_reset(void)
{
uint8_t reset_step = 0;
if(tabdata.item2_page0_resetflag == 1)
{
if(reset_step == 0)
@ -1303,6 +796,8 @@ void deal_data_reset(void)
//使能所有按键
key_config(KEY_ALL, KEY_STATUS_ENABLE);
reset_step = 0;
}
}
}
@ -1310,7 +805,7 @@ void deal_data_reset(void)
//设置界面语言切换主界面的语言切换在set_working_mode内
//此处用于更改标题和选项卡的语言,内容的语言切换在 set_XXX_text & set_XXX_value内
void setting_laguage_switch(uint8_t lan)
void setting_laguage_switch(LANGUAGES lan)
{
switch (lan)
{
@ -1341,4 +836,50 @@ void setting_laguage_switch(uint8_t lan)
}
}
//内容游标 uint8_t -> enum
ITEM_CONTENTS content_cur_char2enum(ITEMS ite, uint8_t cur_uint8)
{
ITEM_CONTENTS result = CONTENT_EMPTY;
uint8_t cur_temp = 0;
cur_temp = cur_uint8 + (tabdata.item_page - 1)*6;
switch (ite)
{
case ITEM_0:
{
result = (ITEM_CONTENTS)cur_temp;
}
break;
case ITEM_1:
{
cur_temp += (uint8_t)SAMPLE_INTERVAL;
result = (ITEM_CONTENTS)cur_temp;
}
break;
case ITEM_2:
{
cur_temp += (uint8_t)DATA_SAVE;
result = (ITEM_CONTENTS)cur_temp;
}
break;
case ITEM_3:
{
cur_temp += (uint8_t)LIGHT_STATUS;
result = (ITEM_CONTENTS)cur_temp;
}
break;
default:
break;
}
return result;
}

View File

@ -1,13 +1,14 @@
#include "apps_gather.h" //用于头文件打包汇总,函数声明和变量定义
// lv_conf.h { line:282->CPU&FPS; line:289->MEM used }
KEYS key_pv;
OPERATIONS current_operation;
PHYSICAL_QUANTITY VOL[2]; //电压VOL[0]-V, VOL[1]-mV
PHYSICAL_QUANTITY CUR; //电流mA
PHYSICAL_QUANTITY RES; //电阻,Ω
PHYSICAL_QUANTITY FRE; //频率KHz
PHYSICAL_QUANTITY TC[8]; //热电偶共8种
PHYSICAL_QUANTITY RTD; //热电阻
SYSTEM_STATUS_WATCH system_sts; //系统状态监控
// 热电偶真值表电压mV
// 行:[0,7]->[K, S, N, B, E, J, R, T],列:[0,10]->[mV_Tmin,...,mV_Tmax](均分成10个间隔11个端点)
@ -842,124 +843,7 @@ void my_inits_gather(void)
events_init(&guider_ui); // 初始化事件
}
//按键数据类型转换
void key_char2struct(void)
{
key_pv.value = (KEYS_VALUE)key;
switch (key_pv.value)
{
case KEY_OUT_VAL:
{
key_pv.tag = KEY_OUT;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_UP_VAL:
{
key_pv.tag = KEY_UP;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_MENU_VAL:
{
key_pv.tag = KEY_MENU;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_IN_VAL:
{
key_pv.tag = KEY_IN;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_LEFT_VAL:
{
key_pv.tag = KEY_LEFT;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_OK_VAL:
{
key_pv.tag = KEY_OK;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_RIGHT_VAL:
{
key_pv.tag = KEY_RIGHT;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_SWITCH_VAL:
{
key_pv.tag = KEY_SWITCH;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_SOURCE_VAL:
{
key_pv.tag = KEY_SOURCE;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_DOWN_VAL:
{
key_pv.tag = KEY_DOWN;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_BACK_VAL:
{
key_pv.tag = KEY_BACK;
key_pv.status = m5data.key_sts[key_pv.tag];
}
break;
case KEY_NONE_VAL:
{
key_pv.tag = KEY_NONE;
key_pv.status = KEY_STATUS_DISABLE;
}
break;
case KEY_ALL_VAL:
{
key_pv.tag = KEY_ALL;
key_pv.status = KEY_STATUS_DISABLE;
}
break;
default:
break;
}
}
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts)
{
if(key_t != KEY_ALL)
{
m5data.key_sts[key_t] = sts;
}
else
{
for (uint8_t i = 0; i < 11; i++)
{
m5data.key_sts[i] = sts;
}
}
}

View File

@ -120,8 +120,6 @@ uint8_t SPI_WriteReadByte(uint8_t data)
return(data);
}
uint8_t eeprom_wrt_error_flag = 0;
void eeprom_writedata(int32_t addr_long, uint8_t txd)
{
uint8_t write_en_flag = 0;
@ -152,7 +150,7 @@ void eeprom_writedata(int32_t addr_long, uint8_t txd)
wait_max++;
if(wait_max > 500)
{
eeprom_wrt_error_flag = 1;
system_sts.eeprom_write_error = 1;
return;
}
@ -170,7 +168,6 @@ void eeprom_writedata(int32_t addr_long, uint8_t txd)
}
uint8_t eeprom_rd_error_flag = 0;
uint8_t eeprom_readdata(int32_t addr_long)
{
uint8_t rxd = 0;
@ -202,7 +199,7 @@ uint8_t eeprom_readdata(int32_t addr_long)
wait_max++;
if(wait_max > 500)
{
eeprom_rd_error_flag = 1;
system_sts.eeprom_read_error = 1;
return 0;
}
@ -239,7 +236,7 @@ void eeprom_datasave(void)
eeprom_writedata(VOL_V_LOW_ADDR + 8, temp_l);
//出现错误后,提前返回
if(eeprom_wrt_error_flag) return;
if(system_sts.eeprom_write_error) return;
//VOL mV
temp_h = tabdata.item0_page0_vup[1] >> 8;
@ -752,8 +749,8 @@ void eeprom_datasave_single(uint8_t tag)
case 15:
{
//输入曲线颜色
temp_h = tabdata.item1_page0_color_input >> 8;
temp_l = tabdata.item1_page0_color_input & 0xFF;
temp_h = ((uint8_t)tabdata.item1_page0_color_input) >> 8;
temp_l = ((uint8_t)tabdata.item1_page0_color_input) & 0xFF;
eeprom_writedata(INPUT_COLOR_ADDR, temp_h);
eeprom_writedata(INPUT_COLOR_ADDR + 8, temp_l);
}
@ -762,8 +759,8 @@ void eeprom_datasave_single(uint8_t tag)
case 16:
{
//输出曲线颜色
temp_h = tabdata.item1_page0_color_output >> 8;
temp_l = tabdata.item1_page0_color_output & 0xFF;
temp_h = ((uint8_t)tabdata.item1_page0_color_output) >> 8;
temp_l = ((uint8_t)tabdata.item1_page0_color_output) & 0xFF;
eeprom_writedata(OUTPUT_COLOR_ADDR, temp_h);
eeprom_writedata(OUTPUT_COLOR_ADDR + 8, temp_l);
}
@ -772,8 +769,8 @@ void eeprom_datasave_single(uint8_t tag)
case 17:
{
//语言选择
temp_h = tabdata.item3_page0_language >> 8;
temp_l = tabdata.item3_page0_language & 0xFF;
temp_h = ((uint8_t)tabdata.item3_page0_language) >> 8;
temp_l = ((uint8_t)tabdata.item3_page0_language) & 0xFF;
eeprom_writedata(LANGUAGE_SELECT_ADDR, temp_h);
eeprom_writedata(LANGUAGE_SELECT_ADDR + 8, temp_l);
}
@ -799,7 +796,7 @@ void eeprom_dataread(void)
tabdata.item0_page0_vlow[0] = ( temp_h << 8 ) + temp_l;
//出现错误后,提前返回
if(eeprom_rd_error_flag) return;
if(system_sts.eeprom_read_error) return;
//VOL mV
temp_h = eeprom_readdata(VOL_MV_UP_ADDR);
@ -931,17 +928,17 @@ void eeprom_dataread(void)
//输入曲线颜色
temp_h = eeprom_readdata(INPUT_COLOR_ADDR);
temp_l = eeprom_readdata(INPUT_COLOR_ADDR + 8);
tabdata.item1_page0_color_input = ( temp_h << 8 ) + temp_l;
tabdata.item1_page0_color_input = (COLORS)( ( temp_h << 8 ) + temp_l );
//输出曲线颜色
temp_h = eeprom_readdata(OUTPUT_COLOR_ADDR);
temp_l = eeprom_readdata(OUTPUT_COLOR_ADDR + 8);
tabdata.item1_page0_color_output = ( temp_h << 8 ) + temp_l;
tabdata.item1_page0_color_output = (COLORS)( ( temp_h << 8 ) + temp_l );
//语言选择
temp_h = eeprom_readdata(LANGUAGE_SELECT_ADDR);
temp_l = eeprom_readdata(LANGUAGE_SELECT_ADDR + 8);
tabdata.item3_page0_language = ( temp_h << 8 ) + temp_l;
tabdata.item3_page0_language = (LANGUAGES)( ( temp_h << 8 ) + temp_l );
}
//判断EEPROM内是否已存在数据

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
//该部分代码用于修改选项卡内部,右侧一列的文本
//修改选项卡0的文本
void set_item0_text(uint8_t con)
void set_item0_text(ITEM_CONTENTS con)
{
char str_temp[16] = {0};
uint8_t enum_temp = 0;
@ -363,7 +363,7 @@ void set_item0_text(uint8_t con)
}
break;
case PAGE_PV:
case PAGE_PV_ITEM_0:
{
sprintf(str_temp,"< %d/%d >",tabdata.item_page, I0_PAGE_MAX);
lv_label_set_text(guider_ui.screen_setting_label_page, str_temp);
@ -377,7 +377,7 @@ void set_item0_text(uint8_t con)
//修改选项卡1的文本
void set_item1_text(uint8_t con)
void set_item1_text(ITEM_CONTENTS con)
{
char str_temp[16] = {0};
@ -444,7 +444,7 @@ void set_item1_text(uint8_t con)
}
break;
case PAGE_PV:
case PAGE_PV_ITEM_1:
{
sprintf(str_temp,"< %d/%d >",tabdata.item_page, I1_PAGE_MAX);
lv_label_set_text(guider_ui.screen_setting_label_page, str_temp);
@ -457,7 +457,7 @@ void set_item1_text(uint8_t con)
}
//修改选项卡2的文本
void set_item2_text(uint8_t con)
void set_item2_text(ITEM_CONTENTS con)
{
char str_temp[16] = {0};
@ -720,28 +720,16 @@ void set_item2_text(uint8_t con)
case INPUT_LOG:
{
lv_label_set_text(guider_ui.screen_setting_label_11, ">");
if(tabdata.content_focus == 1)
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_11, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
show_IO_log(IO_INPUT, 1);
}
}
break;
case OUTPUT_LOG:
{
lv_label_set_text(guider_ui.screen_setting_label_21, ">");
if(tabdata.content_focus == 1)
{
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_21, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
show_IO_log(IO_OUTPUT, 1);
}
}
break;
case PAGE_PV:
case PAGE_PV_ITEM_2:
{
sprintf(str_temp,"< %d/%d >",tabdata.item_page, I2_PAGE_MAX);
lv_label_set_text(guider_ui.screen_setting_label_page, str_temp);
@ -754,7 +742,7 @@ void set_item2_text(uint8_t con)
}
//修改选项卡3的文本
void set_item3_text(uint8_t con)
void set_item3_text(ITEM_CONTENTS con)
{
char str_temp[16] = {0};
@ -899,7 +887,7 @@ void set_item3_text(uint8_t con)
}
break;
case PAGE_PV:
case PAGE_PV_ITEM_3:
{
sprintf(str_temp,"< %d/%d >",tabdata.item_page, I3_PAGE_MAX);
lv_label_set_text(guider_ui.screen_setting_label_page, str_temp);

View File

@ -2,7 +2,7 @@
//该部分代码用于修改选项卡内部,右侧一列的值
//修改选项卡0的值
void set_item0_value(uint8_t con, int8_t step)
void set_item0_value(ITEM_CONTENTS con, int8_t step)
{
uint8_t enum_temp = 0;
@ -238,8 +238,12 @@ void set_item0_value(uint8_t con, int8_t step)
//修改选项卡1的值
int16_t save_cnt = 0;
int16_t reset_cnt = 0;
void set_item1_value(uint8_t con, int8_t step)
void set_item1_value(ITEM_CONTENTS con, int8_t step)
{
uint8_t val_temp = 0;
uint8_t val_start = 0;
uint8_t val_end = 0;
switch (con)
{
case SAMPLE_INTERVAL:
@ -262,19 +266,29 @@ void set_item1_value(uint8_t con, int8_t step)
case INPUT_COLOR:
{
tabdata.item1_page0_color_input += step;
val_start = (uint8_t)COLOR_BLUE;
val_end = (uint8_t)COLOR_PURPLE;
val_temp = (uint8_t)tabdata.item1_page0_color_input;
val_temp += step;
if( tabdata.item1_page0_color_input > 5 ) tabdata.item1_page0_color_input = 0;
if( tabdata.item1_page0_color_input < 0 ) tabdata.item1_page0_color_input = 5;
if( val_temp > val_end ) val_temp = val_start;
if( val_temp < val_start ) val_temp = val_end;
tabdata.item1_page0_color_input = (COLORS)val_temp;
}
break;
case OUTPUT_COLOR:
{
tabdata.item1_page0_color_output += step;
val_start = (uint8_t)COLOR_BLUE;
val_end = (uint8_t)COLOR_PURPLE;
val_temp = (uint8_t)tabdata.item1_page0_color_output;
val_temp += step;
if( tabdata.item1_page0_color_output > 5 ) tabdata.item1_page0_color_output = 0;
if( tabdata.item1_page0_color_output < 0 ) tabdata.item1_page0_color_output = 5;
if( val_temp > val_end ) val_temp = val_start;
if( val_temp < val_start ) val_temp = val_end;
tabdata.item1_page0_color_output = (COLORS)val_temp;
}
break;
@ -284,7 +298,7 @@ void set_item1_value(uint8_t con, int8_t step)
}
//修改选项卡2的值
void set_item2_value(uint8_t con, int8_t step)
void set_item2_value(ITEM_CONTENTS con, int8_t step)
{
switch (con)
{
@ -313,8 +327,12 @@ void set_item2_value(uint8_t con, int8_t step)
}
//修改选项卡3的值
void set_item3_value(uint8_t con, int8_t step)
void set_item3_value(ITEM_CONTENTS con, int8_t step)
{
uint8_t val_temp = 0;
uint8_t val_start = 0;
uint8_t val_end = 0;
switch (con)
{
case LIGHT_STATUS:
@ -334,7 +352,27 @@ void set_item3_value(uint8_t con, int8_t step)
case LANGUAGE_SELECT:
{
tabdata.item3_page0_language = (tabdata.item3_page0_language > 0)?(0):(tabdata.item3_page0_language + 1);
val_start = (uint8_t)MENU_SIMPLYFY_CHINESE;
val_end = (uint8_t)MENU_ENGLISH;
val_temp = (uint8_t)tabdata.item3_page0_language;
val_temp += step;
if( val_temp > val_end )
{
if(val_temp < 200)
{
val_temp = val_start;
}
else
{
val_temp = val_end;
}
}
if( val_temp < val_start ) val_temp = val_end;
tabdata.item3_page0_language = (LANGUAGES)val_temp;
if(tabdata.item2_page0_saveflag == 2) tabdata.item2_page0_saveflag = 0;
if(tabdata.item2_page0_resetflag == 2) tabdata.item2_page0_resetflag = 0;

View File

@ -177,7 +177,6 @@ void StartDefaultTask(void const * argument)
* @param argument: Not used
* @retval None
*/
int16_t lvgl_stack_watch = 0;
/* USER CODE END Header_start_task_lcd */
void start_task_lcd(void const * argument)
{
@ -186,9 +185,10 @@ void start_task_lcd(void const * argument)
for (;;)
{
lv_timer_handler(); //LVGL刷新任务
osDelay(LVGL_BREATHE_INTERVAL);
lvgl_stack_watch = uxTaskGetStackHighWaterMark(NULL);
lvgl_stack_watch = 768 - lvgl_stack_watch;
system_sts.lvgl_stack_consume = uxTaskGetStackHighWaterMark(NULL);
system_sts.lvgl_stack_consume = 768 - system_sts.lvgl_stack_consume;
}
/* USER CODE END start_task_lcd */
}
@ -262,7 +262,6 @@ void start_rs485(void const * argument)
* @retval None
*/
uint8_t my_monitor_cnt = 0;
uint32_t cpu_watch = 0, memuse_watch = 0, cpu_max = 0, memuse_max = 0;
lv_mem_monitor_t my_mon;
/* USER CODE END Header_start_mux_analog */
void start_mux_analog(void const * argument)
@ -281,12 +280,11 @@ void start_mux_analog(void const * argument)
{
my_monitor_cnt = 0;
cpu_watch = 100 - lv_timer_get_idle();
cpu_max = (cpu_max < cpu_watch)?(cpu_watch):(cpu_max);
system_sts.cpu_consume = 100 - lv_timer_get_idle();
lv_mem_monitor(&my_mon);
memuse_watch = my_mon.used_pct;
memuse_max = (memuse_max < memuse_watch)?(memuse_watch):(memuse_max);
system_sts.mem_consume = my_mon.used_pct;
system_sts.mem_consume_max = (system_sts.mem_consume_max < system_sts.mem_consume)?(system_sts.mem_consume):(system_sts.mem_consume_max);
}
}
@ -299,7 +297,6 @@ void start_mux_analog(void const * argument)
* @param argument: Not used
* @retval None
*/
int16_t menu_stack_watch = 0; // Word
/* USER CODE END Header_start_menu */
void start_menu(void const * argument)
{
@ -309,9 +306,10 @@ void start_menu(void const * argument)
for(;;)
{
screen_run();
osDelay(500);
menu_stack_watch = uxTaskGetStackHighWaterMark(NULL);
menu_stack_watch = 512 - menu_stack_watch;
system_sts.menu_stack_consume = uxTaskGetStackHighWaterMark(NULL);
system_sts.menu_stack_consume = 512 - system_sts.menu_stack_consume;
}
/* USER CODE END start_menu */
}

View File

@ -78,11 +78,11 @@ typedef struct
lv_obj_t *screen_setting_label_50;
lv_obj_t *screen_setting_label_51;
lv_obj_t *screen_setting_label_page;
lv_obj_t *screen_setting_label_title;
lv_obj_t *screen_setting_label_s0;
lv_obj_t *screen_setting_label_s1;
lv_obj_t *screen_setting_label_s2;
lv_obj_t *screen_setting_label_s3;
lv_obj_t *screen_setting_label_title;
lv_obj_t *screen_hidden;
bool screen_hidden_del;
lv_obj_t *screen_hidden_label_size14;

View File

@ -30,7 +30,7 @@ void setup_scr_screen_hidden(lv_ui *ui)
//Write codes screen_hidden_label_size14
ui->screen_hidden_label_size14 = lv_label_create(ui->screen_hidden);
lv_label_set_text(ui->screen_hidden_label_size14, "热 电 偶 阻 ℃ Ω 类 型 频 率\n参 数 复 位 保 存 未 中 已 输 入 出 记 录 \n采 样 间 隔 描 点\n照 明 语 言 简 体 文 开 关");
lv_label_set_text(ui->screen_hidden_label_size14, "热 电 偶 阻 ℃ Ω 类 型 频 率\n参 数 复 位 保 存 未 中 已 输 入 出 记 录 \n采 样 间 隔 描 点 颜 色\n照 明 语 言 简 体 文 开 关");
lv_label_set_long_mode(ui->screen_hidden_label_size14, LV_LABEL_LONG_WRAP);
lv_obj_set_pos(ui->screen_hidden_label_size14, 0, 0);
lv_obj_set_size(ui->screen_hidden_label_size14, 320, 120);

View File

@ -320,7 +320,7 @@ void setup_scr_screen_setting(lv_ui *ui)
ui->screen_setting_label_page = lv_label_create(ui->screen_setting);
lv_label_set_text(ui->screen_setting_label_page, "< 1/3 >");
lv_label_set_long_mode(ui->screen_setting_label_page, LV_LABEL_LONG_WRAP);
lv_obj_set_pos(ui->screen_setting_label_page, 160, 221);
lv_obj_set_pos(ui->screen_setting_label_page, 160, 220);
lv_obj_set_size(ui->screen_setting_label_page, 80, 15);
//Write style for screen_setting_label_page, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
@ -339,39 +339,6 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_style_pad_left(ui->screen_setting_label_page, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_width(ui->screen_setting_label_page, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//Write codes screen_setting_label_title
ui->screen_setting_label_title = lv_label_create(ui->screen_setting);
lv_label_set_text(ui->screen_setting_label_title, "详细设置");
lv_label_set_long_mode(ui->screen_setting_label_title, LV_LABEL_LONG_WRAP);
lv_obj_set_pos(ui->screen_setting_label_title, 0, -3);
lv_obj_set_size(ui->screen_setting_label_title, 320, 40);
//Write style for screen_setting_label_title, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_title, 1, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_title, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_title, LV_BORDER_SIDE_FULL | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_title, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_title, &lv_font_SourceHanSerifSC_Regular_16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_letter_space(ui->screen_setting_label_title, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_line_space(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_align(ui->screen_setting_label_title, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_title, lv_color_hex(0x75d4ff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_title, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_title, 12, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_width(ui->screen_setting_label_title, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_color(ui->screen_setting_label_title, lv_color_hex(0x1d83d8), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_spread(ui->screen_setting_label_title, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_ofs_x(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_ofs_y(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//Write codes screen_setting_label_s0
ui->screen_setting_label_s0 = lv_label_create(ui->screen_setting);
lv_label_set_text(ui->screen_setting_label_s0, "量程设置");
@ -380,10 +347,10 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_size(ui->screen_setting_label_s0, 80, 50);
//Write style for screen_setting_label_s0, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_s0, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_width(ui->screen_setting_label_s0, 3, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_s0, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s0, lv_color_hex(0x00b6ff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s0, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s0, LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_LEFT, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_s0, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_s0, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_s0, &lv_font_SourceHanSerifSC_Regular_14, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -394,7 +361,7 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_style_bg_opa(ui->screen_setting_label_s0, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_s0, lv_color_hex(0xcbefff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_s0, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s0, 17, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s0, 16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_s0, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_s0, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_s0, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -408,10 +375,10 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_size(ui->screen_setting_label_s1, 80, 50);
//Write style for screen_setting_label_s1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_s1, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_width(ui->screen_setting_label_s1, 3, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_s1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s1, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s1, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s1, lv_color_hex(0x00B6FF), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s1, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_LEFT, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_s1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_s1, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_s1, &lv_font_SourceHanSerifSC_Regular_14, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -422,7 +389,7 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_style_bg_opa(ui->screen_setting_label_s1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_s1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_s1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s1, 17, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s1, 16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_s1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_s1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_s1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -436,10 +403,10 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_size(ui->screen_setting_label_s2, 80, 50);
//Write style for screen_setting_label_s2, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_s2, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_width(ui->screen_setting_label_s2, 3, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_s2, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s2, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s2, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s2, lv_color_hex(0x00B6FF), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s2, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_LEFT, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_s2, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_s2, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_s2, &lv_font_SourceHanSerifSC_Regular_14, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -450,7 +417,7 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_style_bg_opa(ui->screen_setting_label_s2, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_s2, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_s2, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s2, 17, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s2, 16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_s2, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_s2, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_s2, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -464,10 +431,10 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_size(ui->screen_setting_label_s3, 80, 50);
//Write style for screen_setting_label_s3, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_s3, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_width(ui->screen_setting_label_s3, 3, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_s3, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s3, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s3, LV_BORDER_SIDE_RIGHT, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_s3, lv_color_hex(0x00B6FF), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_s3, LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_s3, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_s3, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_s3, &lv_font_SourceHanSerifSC_Regular_14, LV_PART_MAIN|LV_STATE_DEFAULT);
@ -478,12 +445,40 @@ void setup_scr_screen_setting(lv_ui *ui)
lv_obj_set_style_bg_opa(ui->screen_setting_label_s3, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_s3, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_s3, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s3, 17, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_s3, 16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_s3, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_s3, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_s3, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_width(ui->screen_setting_label_s3, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//Write codes screen_setting_label_title
ui->screen_setting_label_title = lv_label_create(ui->screen_setting);
lv_label_set_text(ui->screen_setting_label_title, "详细设置");
lv_label_set_long_mode(ui->screen_setting_label_title, LV_LABEL_LONG_WRAP);
lv_obj_set_pos(ui->screen_setting_label_title, 0, 0);
lv_obj_set_size(ui->screen_setting_label_title, 320, 40);
//Write style for screen_setting_label_title, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_border_width(ui->screen_setting_label_title, 3, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_color(ui->screen_setting_label_title, lv_color_hex(0x00B6FF), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_setting_label_title, LV_BORDER_SIDE_FULL | LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_radius(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui->screen_setting_label_title, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui->screen_setting_label_title, &lv_font_SourceHanSerifSC_Regular_16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_letter_space(ui->screen_setting_label_title, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_line_space(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_text_align(ui->screen_setting_label_title, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(ui->screen_setting_label_title, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_setting_label_title, lv_color_hex(0x75d4ff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_setting_label_title, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui->screen_setting_label_title, 10, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_width(ui->screen_setting_label_title, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//The custom code of screen_setting.

View File

@ -173,137 +173,52 @@
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>key,0x0A</ItemText>
<ItemText>freq_signal</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>pulse,0x0A</ItemText>
<ItemText>mux_signal,0x0A</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>freq_signal</ItemText>
<ItemText>fswatch,0x0A</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>1</WinNumber>
<ItemText>mux_signal,0x0A</ItemText>
<ItemText>m5data,0x0A</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>1</WinNumber>
<ItemText>x1watch,0x0A</ItemText>
<ItemText>pltdata,0x0A</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>y1watch,0x0A</ItemText>
<ItemText>tabdata,0x0A</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>1</WinNumber>
<ItemText>x2watch,0x0A</ItemText>
<ItemText>key_pv,0x0A</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>1</WinNumber>
<ItemText>y2watch,0x0A</ItemText>
<ItemText>current_operation</ItemText>
</Ww>
<Ww>
<count>11</count>
<WinNumber>1</WinNumber>
<ItemText>fswatch,0x0A</ItemText>
<ItemText>key_sts</ItemText>
</Ww>
<Ww>
<count>12</count>
<WinNumber>1</WinNumber>
<ItemText>m5data,0x0A</ItemText>
</Ww>
<Ww>
<count>13</count>
<WinNumber>1</WinNumber>
<ItemText>pltdata,0x0A</ItemText>
</Ww>
<Ww>
<count>14</count>
<WinNumber>1</WinNumber>
<ItemText>tabdata,0x0A</ItemText>
</Ww>
<Ww>
<count>15</count>
<WinNumber>1</WinNumber>
<ItemText>VOL,0x0A</ItemText>
</Ww>
<Ww>
<count>16</count>
<WinNumber>1</WinNumber>
<ItemText>CUR,0x0A</ItemText>
</Ww>
<Ww>
<count>17</count>
<WinNumber>1</WinNumber>
<ItemText>RES,0x0A</ItemText>
</Ww>
<Ww>
<count>18</count>
<WinNumber>1</WinNumber>
<ItemText>FRE,0x0A</ItemText>
</Ww>
<Ww>
<count>19</count>
<WinNumber>1</WinNumber>
<ItemText>TC,0x0A</ItemText>
</Ww>
<Ww>
<count>20</count>
<WinNumber>1</WinNumber>
<ItemText>RTD,0x0A</ItemText>
</Ww>
<Ww>
<count>21</count>
<WinNumber>1</WinNumber>
<ItemText>lvgl_stack_watch,0x0A</ItemText>
</Ww>
<Ww>
<count>22</count>
<WinNumber>1</WinNumber>
<ItemText>menu_stack_watch,0x0A</ItemText>
</Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>cpu_watch,0x0A</ItemText>
</Ww>
<Ww>
<count>24</count>
<WinNumber>1</WinNumber>
<ItemText>memuse_watch,0x0A</ItemText>
</Ww>
<Ww>
<count>25</count>
<WinNumber>1</WinNumber>
<ItemText>memuse_max,0x0A</ItemText>
</Ww>
<Ww>
<count>26</count>
<WinNumber>1</WinNumber>
<ItemText>eeprom_wrt_error_flag,0x0A</ItemText>
</Ww>
<Ww>
<count>27</count>
<WinNumber>1</WinNumber>
<ItemText>eeprom_rd_error_flag,0x0A</ItemText>
</Ww>
<Ww>
<count>28</count>
<WinNumber>1</WinNumber>
<ItemText>ee_status_test</ItemText>
</Ww>
<Ww>
<count>29</count>
<WinNumber>1</WinNumber>
<ItemText>key_pv,0x0A</ItemText>
<ItemText>system_sts,0x0A</ItemText>
</Ww>
</WatchWindow1>
<WatchWindow2>
@ -3811,6 +3726,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>16</GroupNumber>
<FileNumber>277</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\App\APP_WU\Src\key_functions.c</PathWithFileName>
<FilenameWithoutPath>key_functions.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -3821,7 +3748,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>277</FileNumber>
<FileNumber>278</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3833,7 +3760,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>278</FileNumber>
<FileNumber>279</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3845,7 +3772,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>279</FileNumber>
<FileNumber>280</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3857,7 +3784,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>280</FileNumber>
<FileNumber>281</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3869,7 +3796,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>281</FileNumber>
<FileNumber>282</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3881,7 +3808,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>282</FileNumber>
<FileNumber>283</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3893,7 +3820,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>283</FileNumber>
<FileNumber>284</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3905,7 +3832,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>284</FileNumber>
<FileNumber>285</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3917,7 +3844,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>285</FileNumber>
<FileNumber>286</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3929,7 +3856,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>286</FileNumber>
<FileNumber>287</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3941,7 +3868,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>287</FileNumber>
<FileNumber>288</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3953,7 +3880,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>288</FileNumber>
<FileNumber>289</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3965,7 +3892,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>289</FileNumber>
<FileNumber>290</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3977,7 +3904,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>290</FileNumber>
<FileNumber>291</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -3989,7 +3916,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>291</FileNumber>
<FileNumber>292</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4001,7 +3928,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>292</FileNumber>
<FileNumber>293</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4013,7 +3940,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>293</FileNumber>
<FileNumber>294</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4025,7 +3952,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>294</FileNumber>
<FileNumber>295</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4037,7 +3964,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>295</FileNumber>
<FileNumber>296</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4049,7 +3976,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>296</FileNumber>
<FileNumber>297</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4061,7 +3988,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>297</FileNumber>
<FileNumber>298</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4073,7 +4000,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>298</FileNumber>
<FileNumber>299</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4085,7 +4012,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>299</FileNumber>
<FileNumber>300</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4097,7 +4024,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>300</FileNumber>
<FileNumber>301</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4109,7 +4036,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>301</FileNumber>
<FileNumber>302</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4121,7 +4048,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>302</FileNumber>
<FileNumber>303</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4133,7 +4060,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>303</FileNumber>
<FileNumber>304</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4145,7 +4072,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>304</FileNumber>
<FileNumber>305</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4157,7 +4084,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>305</FileNumber>
<FileNumber>306</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4169,7 +4096,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>306</FileNumber>
<FileNumber>307</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4181,7 +4108,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>307</FileNumber>
<FileNumber>308</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4193,7 +4120,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>308</FileNumber>
<FileNumber>309</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4205,7 +4132,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>309</FileNumber>
<FileNumber>310</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4217,7 +4144,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>310</FileNumber>
<FileNumber>311</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4229,7 +4156,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>311</FileNumber>
<FileNumber>312</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4241,7 +4168,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>312</FileNumber>
<FileNumber>313</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4253,7 +4180,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>313</FileNumber>
<FileNumber>314</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4265,7 +4192,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>314</FileNumber>
<FileNumber>315</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -4277,7 +4204,7 @@
</File>
<File>
<GroupNumber>17</GroupNumber>
<FileNumber>315</FileNumber>
<FileNumber>316</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

View File

@ -2503,6 +2503,11 @@
<FileType>1</FileType>
<FilePath>..\App\APP_WU\Src\scr_setting_item_value.c</FilePath>
</File>
<File>
<FileName>key_functions.c</FileName>
<FileType>1</FileType>
<FilePath>..\App\APP_WU\Src\key_functions.c</FilePath>
</File>
</Files>
</Group>
<Group>

File diff suppressed because it is too large Load Diff