2025-04-19 10:40:11 +08:00
|
|
|
|
/**
|
2025-04-19 16:56:31 +08:00
|
|
|
|
* @file ui_event.c
|
|
|
|
|
|
* @brief 此文件中专门实现事件的处理
|
2025-04-19 10:40:11 +08:00
|
|
|
|
*
|
|
|
|
|
|
* @author wang xiang en
|
|
|
|
|
|
* @date 2025-04-19
|
|
|
|
|
|
* @version 版本号
|
|
|
|
|
|
* @copyright 版权声明((C)2025, YUWELL MEDTECH Co.ltd)
|
|
|
|
|
|
*/
|
2025-03-07 15:13:29 +08:00
|
|
|
|
#include "ui.h"
|
2025-03-07 16:26:42 +08:00
|
|
|
|
#include "driver/ledc.h"
|
|
|
|
|
|
#include "esp_err.h"
|
|
|
|
|
|
#include "esp_log.h"
|
2025-03-07 15:13:29 +08:00
|
|
|
|
|
2025-03-12 14:00:26 +08:00
|
|
|
|
#include "FluxWifi.h"
|
2025-03-13 10:26:19 +08:00
|
|
|
|
#include "FluxUart.h"
|
2025-03-13 14:04:19 +08:00
|
|
|
|
#include "FluxSD.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "esp_vfs_fat.h"
|
|
|
|
|
|
#include "sdmmc_cmd.h"
|
|
|
|
|
|
#include "driver/sdmmc_host.h"
|
2025-03-08 10:23:13 +08:00
|
|
|
|
|
2025-03-17 13:46:43 +08:00
|
|
|
|
#include "FluxProtocol.h"
|
|
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
#if CONFIG_WIFI_SCAN_ENABLE
|
|
|
|
|
|
|
2025-03-27 14:57:30 +08:00
|
|
|
|
/*包含SNTP的头文件*/
|
|
|
|
|
|
#include "lwip/apps/sntp.h"
|
2025-03-25 11:15:34 +08:00
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
#endif
|
2025-03-17 13:46:43 +08:00
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief 更改测试的设备类型
|
|
|
|
|
|
*
|
|
|
|
|
|
* 设备类型选择回调函数
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param[in] e 设置页的设备下拉菜单
|
|
|
|
|
|
*/
|
2025-03-12 17:32:58 +08:00
|
|
|
|
void on_dropdownDeviceType_valueChanged(lv_event_t * e)
|
2025-03-08 14:45:49 +08:00
|
|
|
|
{
|
|
|
|
|
|
char buf[32]={};
|
2025-03-17 09:50:22 +08:00
|
|
|
|
uint16_t index = lv_dropdown_get_selected(e->target);
|
|
|
|
|
|
|
2025-03-08 14:45:49 +08:00
|
|
|
|
lv_dropdown_get_selected_str(e->target,buf,32);
|
2025-03-12 17:32:58 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_labelTitle, buf);
|
2025-03-08 14:45:49 +08:00
|
|
|
|
|
2025-03-19 18:46:29 +08:00
|
|
|
|
if (index == Spirit3)
|
2025-03-17 09:50:22 +08:00
|
|
|
|
{
|
|
|
|
|
|
lv_spinbox_set_range(ui_pageHome_spinboxStage,1,4);
|
|
|
|
|
|
}else{
|
|
|
|
|
|
lv_spinbox_set_range(ui_pageHome_spinboxStage,1,6);
|
|
|
|
|
|
}
|
2025-03-11 18:55:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief 读取当前SD卡剩余空间信息并更新页面
|
|
|
|
|
|
*
|
|
|
|
|
|
* SD卡读取回调函数
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param[in] e not used
|
|
|
|
|
|
*/
|
2025-03-25 09:36:18 +08:00
|
|
|
|
void on_buttonReadSDCard_clicked(lv_event_t * e)
|
2025-03-11 18:55:34 +08:00
|
|
|
|
{
|
2025-03-25 09:36:18 +08:00
|
|
|
|
/*首先清空显示页面*/
|
|
|
|
|
|
lv_textarea_set_text(ui_pageSDCard_textAreaSDCard,"");
|
|
|
|
|
|
esp_vfs_fat_info(MOUNT_POINT,&total_bytes,&free_bytes);
|
|
|
|
|
|
free_percent = (float)free_bytes / (float)total_bytes * 100;
|
|
|
|
|
|
|
|
|
|
|
|
printf("total:%llu free:%llu\n",total_bytes,free_bytes);
|
|
|
|
|
|
|
|
|
|
|
|
lv_label_set_text_fmt(ui_pageSDCard_labelSDCardFree,"%.2f free",free_percent);
|
|
|
|
|
|
lv_label_set_text_fmt(ui_pageSDCard_labelSDCardUsed,"used: %.2f GB",(double)(total_bytes-free_bytes)/(1024*1024*1024.0));
|
|
|
|
|
|
lv_label_set_text_fmt(ui_pageSDCard_labelSDCardSize,"size: %.2f GB",(double)total_bytes/(1024*1024*1024.0));
|
|
|
|
|
|
|
|
|
|
|
|
lv_arc_set_value(ui_pageSDCard_arcSDCardFree,free_percent);
|
|
|
|
|
|
|
2025-03-11 18:55:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief pageFluxRead 向流量计索要120个参数
|
|
|
|
|
|
*
|
|
|
|
|
|
* 获取当前流量数据
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param[in] e not used
|
|
|
|
|
|
*/
|
2025-03-24 08:08:44 +08:00
|
|
|
|
void on_buttonReadFlux_clicked(lv_event_t * e)
|
|
|
|
|
|
{
|
2025-04-19 16:56:31 +08:00
|
|
|
|
/*下发数据获取指令*/
|
|
|
|
|
|
/* 起始地址为 0x00 */
|
|
|
|
|
|
flux_frame.DATA[0] = 0;
|
2025-03-24 08:08:44 +08:00
|
|
|
|
flux_frame.DATA[1] = 0;
|
2025-04-19 16:56:31 +08:00
|
|
|
|
|
|
|
|
|
|
/* 数据长度为 120 */
|
|
|
|
|
|
flux_frame.DATA[2] = 0;
|
2025-03-24 08:08:44 +08:00
|
|
|
|
flux_frame.DATA[3] = 120;
|
2025-03-25 09:36:18 +08:00
|
|
|
|
flux_frame.FUNC = FLUX_FUNC_READ;
|
|
|
|
|
|
|
|
|
|
|
|
/*下发问询120个参数*/
|
|
|
|
|
|
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*更新测试结果 —— 功能已屏蔽*/
|
|
|
|
|
|
void on_labelTestVolume_valueChanged(lv_event_t * e)
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
/* 测试结果刷新放到label更新函数中 */
|
|
|
|
|
|
RefreshResult();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*更新工作模式 —— 功能已屏蔽*/
|
|
|
|
|
|
void on_dropDownWorkmode_valueChanged(lv_event_t * e)
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
FluxMachineData.workMode = (enum FluxMachineWorkMode)lv_dropdown_get_selected(e->target);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*向流量计下发计时时间*/
|
|
|
|
|
|
void on_spinboxTime_valueChanged(lv_event_t * e)
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
/* 0x10 设置多个参数报文格式 */
|
|
|
|
|
|
/* 地址 功能码 起始地址 寄存器数量 字节计数(写入寄存器数量*2) 数据1 数据2 。。。 CRC */
|
|
|
|
|
|
/* 0x01 0x10 0x00 02 0x00 02 0x04 0x0078 0x0077 CRC*/
|
|
|
|
|
|
|
|
|
|
|
|
/*下发配置参数(其实只是配置时间)*/
|
|
|
|
|
|
flux_frame2Reg.ADDR = FLUX_ADDR;
|
|
|
|
|
|
flux_frame2Reg.FUNC = FLUX_FUNC_SET;
|
|
|
|
|
|
|
|
|
|
|
|
/*时间寄存器起始地址*/
|
|
|
|
|
|
flux_frame2Reg.regAddr = 0x0002;
|
|
|
|
|
|
flux_frame2Reg.regNum = 0x0002;
|
|
|
|
|
|
|
|
|
|
|
|
flux_frame2Reg.ByteNum = 0x04;
|
|
|
|
|
|
|
|
|
|
|
|
/*将时间的浮点数转为字节数组*/
|
|
|
|
|
|
uint8_t bytes[4];
|
|
|
|
|
|
float time = (float)lv_spinbox_get_value(e->target);
|
|
|
|
|
|
memcpy(bytes, &time, 4);
|
|
|
|
|
|
|
|
|
|
|
|
ESP_LOGI("FluxProtocol", "time:%f", time);
|
|
|
|
|
|
ESP_LOGI("FluxProtocol", "time:0-%02x 1-%02x 2-%02x 3-%02x", bytes[0],bytes[1],bytes[2],bytes[3]);
|
|
|
|
|
|
|
|
|
|
|
|
flux_frame2Reg.DATA[0] = bytes[3];
|
|
|
|
|
|
flux_frame2Reg.DATA[1] = bytes[2];
|
|
|
|
|
|
flux_frame2Reg.DATA[2] = bytes[1];
|
|
|
|
|
|
flux_frame2Reg.DATA[3] = bytes[0];
|
|
|
|
|
|
|
|
|
|
|
|
ESP_ERROR_CHECK(ModbusRTU_Send_0x10(ECHO_UART_PORT_NUM1,&flux_frame2Reg));
|
2025-03-25 15:42:11 +08:00
|
|
|
|
#elif 0
|
2025-03-25 10:22:43 +08:00
|
|
|
|
/*使用0306报文格式*/
|
|
|
|
|
|
uint8_t bytes[4];
|
|
|
|
|
|
float time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime);
|
|
|
|
|
|
memcpy(bytes, &time, 4);
|
|
|
|
|
|
|
|
|
|
|
|
/*下发命令*/
|
|
|
|
|
|
flux_frame.ADDR = FLUX_ADDR;
|
|
|
|
|
|
flux_frame.FUNC = FLUX_FUNC_SET_SINGLE;
|
|
|
|
|
|
|
|
|
|
|
|
flux_frame.DATA[0] = 0x00;
|
|
|
|
|
|
flux_frame.DATA[1] = 0x02;
|
|
|
|
|
|
flux_frame.DATA[2] = bytes[3];
|
|
|
|
|
|
flux_frame.DATA[3] = bytes[2];
|
|
|
|
|
|
|
|
|
|
|
|
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
|
|
|
|
|
|
|
2025-03-25 09:36:18 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-04-19 16:56:31 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief pageFlux页面中 启动按键(Not Used)
|
|
|
|
|
|
*
|
|
|
|
|
|
* 启动流量计 开始测试
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param[in] e not used
|
|
|
|
|
|
*/
|
2025-03-25 09:36:18 +08:00
|
|
|
|
void on_buttonFluxStart_clicked(lv_event_t * e)
|
|
|
|
|
|
{
|
|
|
|
|
|
FLUX_TEST_START;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-28 10:13:22 +08:00
|
|
|
|
/*不执行任何操作*/
|
|
|
|
|
|
void on_buttonTimeUpdate_clicked(lv_event_t * e)
|
|
|
|
|
|
{
|
|
|
|
|
|
/*不实现任何功能*/
|
|
|
|
|
|
}
|