This commit is contained in:
2026-02-25 15:12:13 +08:00
parent 9d69b29eed
commit 090eb335a8
25 changed files with 620 additions and 19973 deletions
+17 -56
View File
@@ -12,8 +12,10 @@
#include "bsp_W5500.h"
#include "bsp_uart.h"
#include "bsp_DS1302.h"
#include "bsp_buzzer.h"
#include "app_leakage.h"
#include "app_com.h"
/*串口发送缓冲区*/
#define HMI_TX_BUFFER_NUM (2048)
@@ -47,7 +49,6 @@
static void gui_tjc_hmi_init(void);
static void gui_tjc_hmi_communication_data_analysis(u8 *p_data, u16 len, void *rx_uart);
static void gui_tjc_hmi_read_device_info_from_w25q(void);
/*串口发送缓冲区*/
static u8 hmi_tx_buffer[HMI_TX_BUFFER_NUM];
@@ -84,13 +85,18 @@ gui_tjc_hmi_t tjc_hmi =
gui_tjc_hmi_t *p_tjc_hmi = &tjc_hmi;
static void gui_tjc_hmi_class_update(void)
{
leakage.class_update();
app_com.class_update();
}
/*屏幕协议初始化*/
static void gui_tjc_hmi_init(void)
{
com_uart1.rx_data_analysis = gui_tjc_hmi_communication_data_analysis;
gui_tjc_hmi_read_device_info_from_w25q();
history.init_history();
}
@@ -125,54 +131,6 @@ static void gui_tjc_hmi_save_password_to_w25q(void)
w25q32.write(W25Q32_PASSWORD_ADDR, p_tjc_hmi->password, 4);
}
/* 从W25Q32读取设备信息到app_leakage */
static void gui_tjc_hmi_read_device_info_from_w25q(void)
{
/* 创建一个临时缓冲区 */
app_leakage_sub_device_flash_data_t temp_buffer[APP_LEAKAGE_SUB_DEVICE_NUM];
/* 一次性读取所有设备信息 */
w25q32.read(W25Q32_DEVICE_INFO_ADDR,
(uint8_t*)temp_buffer,
DEVICE_INFO_STORAGE_SIZE);
/* 检查数据有效性 */
uint8_t data_valid = 1;
for(int i = 0; i < APP_LEAKAGE_SUB_DEVICE_NUM; i++)
{
/* 如果所有字段都是0xFF,说明是空数据 */
if(temp_buffer[i].state == 0xFF &&
temp_buffer[i].com == 0xFF &&
temp_buffer[i].modbus_id == 0xFF)
{
data_valid = 0;
break;
}
}
if(data_valid)
{
/* 复制到app_leakage结构体中 */
for(int i = 0; i < APP_LEAKAGE_SUB_DEVICE_NUM; i++)
{
leakage.sub_device_data[i].flash_data = temp_buffer[i];
}
}
else
{
/* Flash为空,初始化设备信息为默认值 */
for(int i = 0; i < APP_LEAKAGE_SUB_DEVICE_NUM; i++)
{
memset(&leakage.sub_device_data[i].flash_data, 0,
sizeof(app_leakage_sub_device_flash_data_t));
leakage.sub_device_data[i].flash_data.state = DISABLE;
}
}
/* 重新分类区域 */
app_leakage_region_classify();
}
/* 将设备信息从app_leakage保存到W25Q32 */
static void gui_tjc_hmi_save_device_info_to_w25q(void)
{
@@ -258,12 +216,13 @@ static void gui_tjc_hmi_main_send(u8 cmd,u8 opa,u8 *p_data)
}
char time[20];
sprintf(time,"20%d-%02d-%02d %02d:%02d",
sprintf(time,"20%d-%02d-%02d %02d:%02d:%02d",
DS1302.Time.Year,
DS1302.Time.Month,
DS1302.Time.Day,
DS1302.Time.Hour,
DS1302.Time.Minute);
DS1302.Time.Minute,
DS1302.Time.Second);
len += gui_tjc_hmi_tx_text_display(0,0,(char *)&hmi_tx_buffer[len],"%s",time);
if(HMI_PROTO_CMD_GET == cmd)/*获取数据*/
@@ -359,10 +318,12 @@ static void gui_tjc_hmi_main_send(u8 cmd,u8 opa,u8 *p_data)
if(0x01 == p_data[0])
{
/*01打开蜂鸣器*/
buzzer.set.enable();
}
else
{
/*00关闭蜂鸣器*/
buzzer.set.disable();
}
}
default:return;
@@ -1549,7 +1510,7 @@ static void gui_tjc_hmi_device_config_send(u8 cmd,u8 opa,u8 *p_data)
new_device.state = ENABLE;
leakage.sub_device_data[x].flash_data = new_device;
gui_tjc_hmi_save_device_info_to_w25q();
app_leakage_region_classify();
gui_tjc_hmi_class_update();
field_count++;
}
}
@@ -1568,7 +1529,7 @@ static void gui_tjc_hmi_device_config_send(u8 cmd,u8 opa,u8 *p_data)
gui_tjc_hmi_save_device_info_to_w25q();
/*重新分类区域*/
app_leakage_region_classify();
gui_tjc_hmi_class_update();
}
else
@@ -1654,7 +1615,7 @@ static void gui_tjc_hmi_device_config_send(u8 cmd,u8 opa,u8 *p_data)
gui_tjc_hmi_save_device_info_to_w25q();
/*重新分类区域*/
app_leakage_region_classify();
gui_tjc_hmi_class_update();
/*发送确认响应*/
}