FluxDC/components/FluxUI/ui_event_homePage.c

695 lines
19 KiB
C
Raw Normal View History

/**
* @file ui_event_homePage.c
* @brief UI事件处理函数
*
* 1.2.
*
* @author wang xiang en
* @date 2025-04-19
* @version
* @copyright (C)2025, YUWELL MEDTECH Co.ltd
*/
#include "ui.h"
#include "FluxProtocol.h"
/* 使用定时器 */
#include <time.h>
#include "FluxSD.h"
2025-04-23 09:36:19 +08:00
/* 创建用于表征当前是否进行BS测试的全局变量 */
2025-04-25 08:19:43 +08:00
extern bool is_bs_test_ing;
extern bool is_nom_test_ing;
/* 任务控制句柄 */
extern TaskHandle_t bs_test_task_handle;
extern TaskHandle_t nom_test_task_handle;
2025-04-23 09:36:19 +08:00
/* 声明需要调用的静态函数 */
void comulate_time_set(void);
/* 更新当前标准体积数据 */
static void standard_volume_refresh(void);
/* 定时器执行函数声明 */
static void comulate_result_read(lv_timer_t * timer);
/************************************ 呼吸频率更改响应函数 start ******************************************* */
/**
* @brief
*
* Spinbox进行-5Spinbox的值更改响应事件中
*
* @param[in] e not used
*/
void on_buttonRateMinus_clicked(lv_event_t * e)
{
uint16_t value = lv_spinbox_get_value(ui_pageHome_spinboxRate);
lv_spinbox_set_value(ui_pageHome_spinboxRate,value-5);
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("常规频率减事件");
#endif
}
/**
* @brief
*
* Spinbox进行+5Spinbox的值更改响应事件中
*
* @param[in] e not used
*/
void on_buttonRatePlus_clicked(lv_event_t * e)
{
uint16_t value = lv_spinbox_get_value(ui_pageHome_spinboxRate);
lv_spinbox_set_value(ui_pageHome_spinboxRate,value+5);
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("常规频率加事件");
#endif
}
/**
* @brief
*
* 485
* 使0x0616bit寄存器
*
* @note
* 01 06 00 02 41 F0 18 1E
*
*
* 01
* 06
* 00 020x00 02
* 41 F0 41 F0 00 00 30
*
* @param[in] e not used
*/
void on_spinboxRate_valueChanged(lv_event_t * e)
{
/* 更改下方测试结果部分的频率信息 */
FluxMachineData.breathRate = lv_spinbox_get_value(e->target);
lv_label_set_text_fmt(ui_pageHome_labelResultRate,"%ld",FluxMachineData.breathRate);
/* 刷新标准体积数据,频率不同标准体积也不同。 */
standard_volume_refresh();
/* 根据设定的出气次数设定积分时间 */
comulate_time_set();
/* 下发计算好的积分时间*/
uint8_t bytes[4];
float time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime);
memcpy(bytes, &time, 4);
/* 下发命令 */
flux_frame.ADDR = FLUX_ADDR;
/* 0x06指令 */
flux_frame.FUNC = FLUX_FUNC_SET_SINGLE;
/* 寄存器地址 0x00 02 */
flux_frame.DATA[0] = 0x00;
flux_frame.DATA[1] = 0x02;
/* 只修改时间寄存器32bit的前两个字节数据16bit */
flux_frame.DATA[2] = bytes[3];
flux_frame.DATA[3] = bytes[2];
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
/* 更新SD卡中需要存储的频率数据 */
sdData.flux_test_result.current_rate = FluxMachineData.breathRate;
2025-04-28 17:49:47 +08:00
#if LOG_RECORD_ENABLE
WRITE_LOG_TO_SD("正常情况下呼吸频率更改切换");
#endif
}
/**
* @brief spinbox中的值修改 pageFluxRead
*
* @attention spinboxTime_valueChanged中调用
*
*
*/
void comulate_time_set(void)
{
/* 获取当前呼吸频率 */
FluxMachineData.breathRate = lv_spinbox_get_value(ui_pageHome_spinboxRate);
uint16_t currntTimes = lv_dropdown_get_selected(ui_pageFluxRead_dropdownPulseTimes);
ESP_LOGI("comulateTimeSend","currentTimes:%d",currntTimes);
if (currntTimes == 0)//进行十次积分
{
/* 10次脉冲计量 */
switch (FluxMachineData.breathRate)
{
case 15:
/*呼吸频率为15BPM时积分时间设定为40秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,40);
break;
case 20:
/*呼吸频率为20BPM时积分时间设定为30秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,30);
break;
case 25:
/*呼吸频率为25BPM时积分时间设定为24秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,24);
break;
case 30:
/*呼吸频率为30BPM时积分时间设定为20秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,20);
break;
case 35:
/*呼吸频率为35BPM时积分时间设定为16秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,18);
break;
case 40:
/*呼吸频率为40BPM时积分时间设定为15秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,15);
break;
default:
break;
}
}else if (currntTimes == 1)
{
/* 20次脉冲 */
switch (FluxMachineData.breathRate)
{
case 15:
/*呼吸频率为15BPM时积分时间设定为40秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,80);
break;
case 20:
/*呼吸频率为20BPM时积分时间设定为30秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,60);
break;
case 25:
/*呼吸频率为25BPM时积分时间设定为24秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,48);
break;
case 30:
/*呼吸频率为30BPM时积分时间设定为20秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,40);
break;
case 35:
/*呼吸频率为35BPM时积分时间设定为16秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,36);
break;
case 40:
/*呼吸频率为40BPM时积分时间设定为15秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,30);
break;
default:
break;
}
}else if (currntTimes == 2)
{
/* 30次脉冲 */
switch (FluxMachineData.breathRate)
{
case 15:
/*呼吸频率为15BPM时积分时间设定为40秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,120);
break;
case 20:
/*呼吸频率为20BPM时积分时间设定为30秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,90);
break;
case 25:
/*呼吸频率为25BPM时积分时间设定为24秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,72);
break;
case 30:
/*呼吸频率为30BPM时积分时间设定为20秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,60);
break;
case 35:
/*呼吸频率为35BPM时积分时间设定为16秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,54);
break;
case 40:
/*呼吸频率为40BPM时积分时间设定为15秒*/
lv_spinbox_set_value(ui_pageFluxRead_spinboxTime,45);
break;
default:
break;
}
}
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("脉冲次数重置时间");
#endif
}
/**
* @brief
*
* 10 20 30
*
*
* @param[in] e not used
*/
void on_dropdownPulseTimes_valueChanged(lv_event_t * e)
{
/* 根据脉冲次数设置测试时间 */
comulate_time_set();
/* 下发测试时间 */
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));
}
/************************************ 呼吸频率更改响应函数 end ******************************************* */
/************************************ 挡位更改响应函数 start ******************************************* */
/**
* @brief
*
* 485
*
* @note SquareLine工程内部实现
* @param[in] e not used
*/
void on_spinboxStage_valueChanged(lv_event_t * e)
{
/*获取当前挡位并更新标准体积数据*/
int32_t value = lv_spinbox_get_value(e->target);
lv_label_set_text_fmt(ui_pageHome_labelResultStage,"%ld",value);
standard_volume_refresh();
/* 更新当前挡位数据 */
sdData.flux_test_result.current_stage = value;
2025-04-28 17:49:47 +08:00
#if LOG_RECORD_ENABLE
WRITE_LOG_TO_SD("正常情况下的挡位切换");
#endif
}
/**
* @brief
*
*
*
*
*/
static void standard_volume_refresh(void)
{
/*获取当前的呼吸频率及挡位*/
fluxProtocol.currentBPM = lv_spinbox_get_value(ui_pageHome_spinboxRate);
fluxProtocol.currentStage = lv_spinbox_get_value(ui_pageHome_spinboxStage);
/*获取当前测试设备类型*/
fluxProtocol.currentDevice = lv_dropdown_get_selected(ui_pageSetting_dropdownDeviceType);
if (fluxProtocol.currentDevice == Spirit3)
{
/*判定当前测试设备为Spirit-3*/
/*获取标准体积数据*/
fluxProtocol.nominalVolumeStage = Spirit3_Volume[fluxProtocol.currentStage-1];
2025-04-22 13:51:54 +08:00
}else if (fluxProtocol.currentDevice == Spirit6)
{
/*判定当前测试设备为Spirit-6*/
fluxProtocol.nominalVolumeStage = Spirit6_Volume[fluxProtocol.currentStage-1];
}else if(fluxProtocol.currentDevice == YU_Lite8)
{
/*判定当前测试设备为YU-Lite-8*/
fluxProtocol.nominalVolumeStage = YULite8_Volume[fluxProtocol.currentStage-1];
}
float Volume_nominal = fluxProtocol.nominalVolumeStage /fluxProtocol.currentBPM*1.0;
float VolumeMax = Volume_nominal*1.15;
float VolumeMin = Volume_nominal*0.85;
lv_label_set_text_fmt(ui_pageHome_labelNominalVolume,"%.2f",Volume_nominal);
lv_label_set_text_fmt(ui_pageHome_labelNominalVolumeMax,"%.2f",VolumeMax);
lv_label_set_text_fmt(ui_pageHome_labelNominalVolumeMin,"%.2f",VolumeMin);
2025-04-22 13:51:54 +08:00
/* 更新BS界面中各频率值 */
/*根据标准值判定当前检测结果是否合格*/
RefreshResult();
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("常规测试刷新标准体积");
#endif
}
/************************************ 挡位更改响应函数 end ******************************************* */
/************************************ 开始测试按键按下 start ******************************************* */
/**
* @brief
*
* @details
* 1.
* 2.
* 3.
*
* @param[in] e not used
*/
void on_buttonStartTest_clicked(lv_event_t * e)
{
2025-04-23 16:00:26 +08:00
/* 设定当前工作模式为nom */
is_test_mode_nom = true;
/* 判断是否正在测试 */
if(is_nom_test_ing)
{
/* 如果正在测试,按下后取消测试 */
vTaskDelete(nom_test_task_handle);
/* 挂起LED闪烁 */
NOM_STATE_LED_TASK_SUSPEND;
/* 等待开始测试 */
is_nom_test_ing = false;
/* 清空已完成的测试结果 */
NOM_ALL_RESULT_CLEAR;
/* 清空进度条 */
lv_bar_set_value(ui_pageHome_barNomTest,0,LV_ANIM_ON);
lv_label_set_text(ui_pageHome_labelStartTest,"Start Test NOM");
}else{
/* 如果没有测试,按下后开始测试 */
/* 创建NOM测试任务 */
xTaskCreate(nom_test_task, "nom_test_task", 1024*4, NULL, 5, &nom_test_task_handle);
is_nom_test_ing = true;
lv_label_set_text(ui_pageHome_labelStartTest,"Cancel Test NOM");
}
#if 0
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));
/*创建定时器*/
lv_timer_t * comulateResultReadTimer;
/* 基于定时器进行任务调用 */
comulateResultReadTimer = lv_timer_create(comulate_result_read, 500, NULL);
/* 只重复一次 */
lv_timer_set_repeat_count(comulateResultReadTimer, 1);
/* 根据测试时间确定定时器延时 */
int32_t timeS = lv_spinbox_get_value(ui_pageFluxRead_spinboxTime);
lv_timer_set_period(comulateResultReadTimer, timeS*1000+2000);
/*下发启动测试指令*/
flux_frame_start.ADDR = FLUX_ADDR;
flux_frame_start.FUNC = FLUX_FUNC_SET_SINGLE;
flux_frame_start.DATA[0] = 0x00;
flux_frame_start.DATA[1] = 0x01;
flux_frame_start.DATA[2] = 0x00;
flux_frame_start.DATA[3] = 0x01;
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame_start));
/* 修改Label 开始测试 */
lv_label_set_text(ui_pageHome_labelStartTest,"Testing...");
/* 开始计时 */
lv_timer_enable(comulateResultReadTimer);
#endif
}
/**
* @brief
*
*
*
*
* @param[in] timer not used
*/
static void comulate_result_read(lv_timer_t * timer)
{
/*下发数据获取指令*/
/* 起始地址为 0x00 */
flux_frame.DATA[0] = 0;
flux_frame.DATA[1] = 0;
/* 数据长度为 120 */
flux_frame.DATA[2] = 0;
flux_frame.DATA[3] = 120;
flux_frame.FUNC = FLUX_FUNC_READ;
/*下发问询120个参数*/
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!");
2025-04-22 11:11:54 +08:00
}
2025-04-23 08:58:26 +08:00
/**
* @brief BS界面 BS测试
*
*
* 1.15BPM测试时间
* 2.
* 3.
* 4.
2025-04-22 13:51:54 +08:00
*
* @param[in] e not used
*/
2025-04-22 11:11:54 +08:00
void on_buttonStartTestBS_clicked(lv_event_t * e)
{
2025-04-23 16:00:26 +08:00
/* 设定当前工作模式为bs */
is_test_mode_nom = false;
2025-04-23 09:36:19 +08:00
/* 判断是否正在测试 */
if(is_bs_test_ing)
{
/* 如果正在测试,按下后取消测试 */
vTaskDelete(bs_test_task_handle);
2025-04-23 13:18:12 +08:00
/* 挂起LED闪烁 */
BS_STATE_LED_TASK_SUSPEND;
2025-04-23 09:36:19 +08:00
/* 等待开始测试 */
is_bs_test_ing = false;
/* 清空已完成的测试结果 */
BS_ALL_RESULT_CLEAR;
2025-04-25 08:19:43 +08:00
/* 清空进度条 */
lv_bar_set_value(ui_pageHome_BarTestProgBS, 0, LV_ANIM_ON);
2025-04-25 09:03:30 +08:00
lv_label_set_text(ui_pageHome_labelstr21,"--BPM");
2025-04-23 13:18:12 +08:00
2025-04-23 09:36:19 +08:00
lv_label_set_text(ui_pageHome_labelStartTest1,"Start Test BS");
2025-04-25 08:19:43 +08:00
lv_label_set_text(ui_pageHome_labelBSInfo,"wait for test");
2025-04-23 09:36:19 +08:00
}else{
/* 如果没有测试,按下后开始测试 */
2025-04-23 13:18:12 +08:00
2025-04-23 09:36:19 +08:00
/* 创建BS测试任务 */
xTaskCreate(bs_test_task, "bs_test_task", 1024*4, NULL, 5, &bs_test_task_handle);
is_bs_test_ing = true;
lv_label_set_text(ui_pageHome_labelStartTest1,"Cancel Test BS");
/* 清空已完成的测试结果 */
BS_ALL_RESULT_CLEAR;
2025-04-23 09:36:19 +08:00
}
#if 0
2025-04-23 08:58:26 +08:00
/* 屏幕中显示下发成功 */
lv_label_set_text(ui_pageHome_labelBSInfo,test_info[0]);
/* 屏幕中显示下发成功 */
lv_label_set_text(ui_pageHome_labelBSInfo,test_info[1]);
2025-04-23 09:36:19 +08:00
2025-04-23 08:58:26 +08:00
/* 创建定时器 */
lv_timer_t * bsTestTimer;
/* 创建定时器调用函数 */
bsTestTimer = lv_timer_create(bs_test_timer_func, 4*1000, NULL);
lv_timer_set_period(bsTestTimer, 4*1000);
lv_timer_set_repeat_count(bsTestTimer, 1);
/* 开启定时器 */
lv_timer_enable(bsTestTimer);
/* 显示正在测试中 */
lv_label_set_text(ui_pageHome_labelBSInfo,test_info[2]);
#endif
2025-04-23 09:36:19 +08:00
2025-04-23 08:58:26 +08:00
2025-04-22 11:11:54 +08:00
}
2025-04-22 13:51:54 +08:00
/**
2025-04-23 08:58:26 +08:00
* @brief BS界面设备类型选择响应函数
2025-04-22 13:51:54 +08:00
*
2025-04-23 08:58:26 +08:00
*
2025-04-22 13:51:54 +08:00
* 1.Home界面显示设备类型
* 2.
* 3.
*
* @param[in] e not used
*/
2025-04-22 11:11:54 +08:00
void on_dropdown_deviceTypeBS_valueChanged(lv_event_t * e)
{
2025-04-22 13:51:54 +08:00
char buf[32]={};
uint16_t index = lv_dropdown_get_selected(e->target);
/* 更新SD卡中的数据存储 */
sdData.flux_test_result.current_device_type = index;
/* 更新Home界面显示设备类型 */
lv_dropdown_get_selected_str(e->target,buf,32);
lv_label_set_text(ui_pageHome_labelTitle, buf);
/* 更新挡位显示范围 */
if (index == Spirit3)
{
2025-04-28 17:49:47 +08:00
//lv_spinbox_set_range(ui_pageHome_spinboxStage,1,4);
2025-04-22 13:51:54 +08:00
lv_spinbox_set_range(ui_pageHome_spinboxStageBS,1,4);
}else{
2025-04-28 17:49:47 +08:00
//lv_spinbox_set_range(ui_pageHome_spinboxStage,1,6);
2025-04-22 13:51:54 +08:00
lv_spinbox_set_range(ui_pageHome_spinboxStageBS,1,6);
}
/* 刷新标准值 */
2025-04-22 15:14:43 +08:00
on_spinboxStageBS_valueChanged(e);
2025-04-22 13:51:54 +08:00
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("BS测试设备类型修改成功");
2025-04-22 13:51:54 +08:00
#endif
2025-04-22 14:05:40 +08:00
2025-04-22 15:14:43 +08:00
}
/**
* @brief BS界面
*
*
* 1.
* 2.
*
* @param[in] e not used
*/
void on_spinboxStageBS_valueChanged(lv_event_t * e)
{
/* 获取当前挡位 */
int32_t currentStage = lv_spinbox_get_value(ui_pageHome_spinboxStageBS);
2025-04-23 08:58:26 +08:00
2025-04-22 15:14:43 +08:00
/* 获取当前测试设备类型 */
uint16_t currentDevice = lv_dropdown_get_selected(ui_pageHome_DropdownTestTypeBS);
/* 获取该挡位下的体积数据 */
float nominalVolumeStage = 0;
if (currentDevice == Spirit3)
{
/*判定当前测试设备为Spirit-3*/
nominalVolumeStage = Spirit3_Volume[currentStage-1];
}else if (currentDevice == Spirit6)
{
/*判定当前测试设备为Spirit-6*/
nominalVolumeStage = Spirit6_Volume[currentStage-1];
}else if(currentDevice == YU_Lite8)
{
/*判定当前测试设备为YU-Lite-8*/
nominalVolumeStage = YULite8_Volume[currentStage-1];
}
/* 设置15 - 40 BPM对应标准体积值及其上下限 */
{
float tmp_nml = 0;
float tmp_max = 0;
float tmp_min = 0;
/* 计算15BPM标准体积值 */
tmp_nml = nominalVolumeStage/15.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate15STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate15UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate15DOWN, "%.1f",tmp_min);
/* 计算20BPM标准体积值 */
tmp_nml = nominalVolumeStage/20.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate20STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate20UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate20DOWN, "%.1f",tmp_min);
/* 计算25BPM标准体积值 */
tmp_nml = nominalVolumeStage/25.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate25STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate25UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate25DOWN, "%.1f",tmp_min);
/* 计算30BPM标准体积值 */
tmp_nml = nominalVolumeStage/30.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate30STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate30UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate30DOWN, "%.1f",tmp_min);
/* 计算35BPM标准体积值 */
tmp_nml = nominalVolumeStage/35.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate35STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate35UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate35DOWN, "%.1f",tmp_min);
/* 计算40BPM标准体积值 */
tmp_nml = nominalVolumeStage/40.0;
tmp_max = tmp_nml*1.15;
tmp_min = tmp_nml*0.85;
lv_label_set_text_fmt(ui_pageHome_LabelRate40STD, "%.1f",tmp_nml);
lv_label_set_text_fmt(ui_pageHome_LabelRate40UP, "%.1f",tmp_max);
lv_label_set_text_fmt(ui_pageHome_LabelRate40DOWN, "%.1f",tmp_min);
}
/* 更新BS界面中各频率值 */
/*根据标准值判定当前检测结果是否合格*/
//RefreshResult();
#if LOG_RECORD_ENABLE
2025-04-27 14:46:47 +08:00
WRITE_LOG_TO_SD("BS测试刷新标准体积");
2025-04-22 15:14:43 +08:00
#endif
}