整理了event的响应代码,串口收发测试结果显示是合理的。

This commit is contained in:
ipason 2025-04-19 16:56:31 +08:00
parent 627c12e37e
commit 50f564aa21
7 changed files with 447 additions and 327 deletions

View File

@ -12,7 +12,7 @@
"idf.openOcdConfigs": [ "idf.openOcdConfigs": [
"board/esp32s3-builtin.cfg" "board/esp32s3-builtin.cfg"
], ],
"idf.portWin": "COM6", "idf.portWin": "COM5",
"idf.flashType": "UART", "idf.flashType": "UART",
"files.associations": { "files.associations": {
"*.md": "markdown", "*.md": "markdown",

File diff suppressed because one or more lines are too long

View File

@ -42,6 +42,7 @@ fonts/ui_font_symbolsalibaba.c
ui_event_wifi.c ui_event_wifi.c
ui_event_debug.c ui_event_debug.c
ui_event_light.c ui_event_light.c
ui_event_homePage.c
) )
idf_component_register(SRCS ${SOURCES} idf_component_register(SRCS ${SOURCES}

View File

@ -0,0 +1,402 @@
/**
* @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>
/* 声明需要调用的静态函数 */
static 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);
}
/**
* @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);
}
/**
* @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));
}
/**
* @brief spinbox中的值修改 pageFluxRead
*
* @attention spinboxTime_valueChanged中调用
*
*
*/
static 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;
}
}
}
/**
* @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();
}
/**
* @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];
}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);
/*根据标准值判定当前检测结果是否合格*/
RefreshResult();
}
/************************************ 挡位更改响应函数 end ******************************************* */
/************************************ 开始测试按键按下 start ******************************************* */
/**
* @brief
*
* @details
* 1.
* 2.
* 3.
*
* @param[in] e not used
*/
void on_buttonStartTest_clicked(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));
/*创建定时器*/
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);
}
/**
* @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!");
}

View File

@ -1,8 +1,6 @@
/** /**
* @file ui_event_wifi.c * @file ui_event.c
* @brief WIFI事件的处理 * @brief
*
* Debug模式下运行
* *
* @author wang xiang en * @author wang xiang en
* @date 2025-04-19 * @date 2025-04-19
@ -24,34 +22,20 @@
#include "FluxProtocol.h" #include "FluxProtocol.h"
#if CONFIG_WIFI_SCAN_ENABLE
/*包含SNTP的头文件*/ /*包含SNTP的头文件*/
#include "lwip/apps/sntp.h" #include "lwip/apps/sntp.h"
#include <time.h>
#endif
/**
/*更新当前测试标准*/ * @brief
static void standardVolumeRefresh(void); *
*
/*根据呼吸频率调整积分时间*/ *
static void comulateTimeSend(void); * @param[in] e
*/
/*创建定时器*/
static void comulateResultRead(lv_timer_t * timer)
{
/*下发数据获取指令*/
flux_frame.DATA[1] = 0;
flux_frame.DATA[3] = 120;
flux_frame.FUNC = 0x03;
/*下发问询120个参数*/
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!");
}
/*设备类型选择回调函数*/
void on_dropdownDeviceType_valueChanged(lv_event_t * e) void on_dropdownDeviceType_valueChanged(lv_event_t * e)
{ {
char buf[32]={}; char buf[32]={};
@ -66,11 +50,15 @@ void on_dropdownDeviceType_valueChanged(lv_event_t * e)
}else{ }else{
lv_spinbox_set_range(ui_pageHome_spinboxStage,1,6); lv_spinbox_set_range(ui_pageHome_spinboxStage,1,6);
} }
} }
/**
/*SD卡读取回调函数*/ * @brief SD卡剩余空间信息并更新页面
*
* SD卡读取回调函数
*
* @param[in] e not used
*/
void on_buttonReadSDCard_clicked(lv_event_t * e) void on_buttonReadSDCard_clicked(lv_event_t * e)
{ {
/*首先清空显示页面*/ /*首先清空显示页面*/
@ -88,157 +76,22 @@ void on_buttonReadSDCard_clicked(lv_event_t * e)
} }
/**
/************************************ 测试流程函数 ******************************************* */ * @brief pageFluxRead 120
/*pageHome 开始测试按键按下回调函数*/ *
int32_t timeS = 0; *
void on_buttonStartTest_clicked(lv_event_t * e) *
{ * @param[in] e not used
*/
/*下发积分时间*/
#if 1
comulateTimeSend();
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));
#endif
/*基于定时器进行任务调用*/
lv_timer_t * comulateResultReadTimer;
comulateResultReadTimer = lv_timer_create(comulateResultRead, 500, NULL);
lv_timer_set_repeat_count(comulateResultReadTimer, 1);
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));
lv_label_set_text(ui_pageHome_labelStartTest,"Testing...");
lv_timer_enable(comulateResultReadTimer);
}
/*pageHome 呼吸频率减操作*/
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);
}
/*pageHome 呼吸频率加操作*/
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);
}
/*pageHome 切换挡位之后*/
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);
standardVolumeRefresh();
}
/*pageHome 频率值改变*/
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);
/*刷新标准体积数据*/
standardVolumeRefresh();
/*下发测试时间*/
comulateTimeSend();
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));
}
/*pageHome 标准体积数据刷新*/
static void standardVolumeRefresh(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];
}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);
/*根据标准值判定当前检测结果是否合格*/
RefreshResult();
}
/*pageFluxRead 获取当前流量数据*/
void on_buttonReadFlux_clicked(lv_event_t * e) void on_buttonReadFlux_clicked(lv_event_t * e)
{ {
/*下发数据获取指令*/
/* 起始地址为 0x00 */
flux_frame.DATA[0] = 0;
flux_frame.DATA[1] = 0; flux_frame.DATA[1] = 0;
/* 数据长度为 120 */
flux_frame.DATA[2] = 0;
flux_frame.DATA[3] = 120; flux_frame.DATA[3] = 120;
flux_frame.FUNC = FLUX_FUNC_READ; flux_frame.FUNC = FLUX_FUNC_READ;
@ -257,7 +110,6 @@ void on_labelTestVolume_valueChanged(lv_event_t * e)
#endif #endif
} }
/*更新工作模式 —— 功能已屏蔽*/ /*更新工作模式 —— 功能已屏蔽*/
void on_dropDownWorkmode_valueChanged(lv_event_t * e) void on_dropDownWorkmode_valueChanged(lv_event_t * e)
{ {
@ -266,7 +118,6 @@ void on_dropDownWorkmode_valueChanged(lv_event_t * e)
#endif #endif
} }
/*向流量计下发计时时间*/ /*向流量计下发计时时间*/
void on_spinboxTime_valueChanged(lv_event_t * e) void on_spinboxTime_valueChanged(lv_event_t * e)
{ {
@ -320,152 +171,18 @@ void on_spinboxTime_valueChanged(lv_event_t * e)
} }
/*启动流量计*/ /**
* @brief pageFlux页面中 Not Used
*
*
*
* @param[in] e not used
*/
void on_buttonFluxStart_clicked(lv_event_t * e) void on_buttonFluxStart_clicked(lv_event_t * e)
{ {
FLUX_TEST_START; FLUX_TEST_START;
} }
/*根据spinbox中的值下发积分时间*/
/*注意此处修改了spinboxTime 的值不可以在spinboxTime_valueChanged中调用*/
static void comulateTimeSend(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;
}
}
}
/*获取呼吸脉冲次数*/
void on_dropdownPulseTimes_valueChanged(lv_event_t * e)
{
/*下发测试时间*/
comulateTimeSend();
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));
}
/*不执行任何操作*/ /*不执行任何操作*/
void on_buttonTimeUpdate_clicked(lv_event_t * e) void on_buttonTimeUpdate_clicked(lv_event_t * e)
{ {

View File

@ -498,13 +498,13 @@ CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT=y
CONFIG_ESPTOOLPY_FLASHFREQ="80m" CONFIG_ESPTOOLPY_FLASHFREQ="80m"
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE="4MB" CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y
CONFIG_ESPTOOLPY_BEFORE_RESET=y CONFIG_ESPTOOLPY_BEFORE_RESET=y
# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set