常规模式测试没问题的程序

This commit is contained in:
ipason 2025-04-23 16:00:26 +08:00
parent f63b0d228b
commit e51573df01
9 changed files with 87 additions and 66 deletions

View File

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

View File

@ -24,10 +24,14 @@ int flux_test_time_series[6] = {40,30,24,20,18,15};
/* 定于用于存储当前测试阶段的枚举变量 */
enum Bs_test_Stage currentTestStage = BS_STAGE_NONE;
/* 定义用于存储当前工作模式的变量,默认是bs模式 */
bool is_test_mode_nom = false;
/* 应用 event_homePage 中的测试状态显示变量 */
extern bool is_bs_test_ing;
extern bool is_nom_test_ing;
/* 声明函数 */
extern void comulate_time_set(void);
/* 定义控制LED小灯的任务句柄 */
@ -78,9 +82,16 @@ void nom_test_task(void* arg)
vTaskResume(nom_stateLED_task_handle);
/* 测试开始 */
FLUX_TEST_START;
/* 等待测试结束 */
vTaskDelay(time*1000 / portTICK_PERIOD_MS);
/* 再等待2秒钟 */
vTaskDelay(2*1000 / portTICK_PERIOD_MS);
/* 下发数据获取指令 */
flux_test_result_get();
/* 测试结束 */
lv_label_set_text(ui_pageHome_labelStartTest,"Start Test Nom");
is_nom_test_ing = false;

View File

@ -308,8 +308,14 @@ esp_err_t sd_current_fileIndex_get(void)
* 1.
* 2.
*/
esp_err_t sd_testData_write(void)
esp_err_t sd_testData_write(bool is_nom,float test_result)
{
if (is_test_mode_nom)
{
/* 获取当前挡位及呼吸频率 */
int32_t current_stage = lv_spinbox_get_value(ui_pageHome_spinboxStage);
int32_t current_rate = lv_spinbox_get_value(ui_pageHome_spinboxRate);
/* 打开当前测试文件 */
FILE *current_test_f = fopen(sdData.test_file_dir, "a+");
if (current_test_f == NULL)
@ -317,13 +323,14 @@ esp_err_t sd_testData_write(void)
ESP_LOGE(SD_TAG, "Failed to open file for writing");
return ESP_FAIL;
}
fprintf(current_test_f,"%lld,%s,%d,%d,%ld,%.3f\n",\
fprintf(current_test_f,"%lld,%s,%d,%d,%ld,%ld,%.3f\n",\
sdData.current_time,\
sdData.strftime_buf,\
is_nom,\
sdData.flux_test_result.current_device_type,\
sdData.flux_test_result.current_stage,\
sdData.flux_test_result.current_rate,\
sdData.flux_test_result.current_test_result
current_stage,\
current_rate,\
test_result
);
fclose(current_test_f);
@ -335,15 +342,17 @@ esp_err_t sd_testData_write(void)
return ESP_FAIL;
}
fprintf(total_test_f,"%lld,%s,%d,%d,%ld,%.3f\n",\
fprintf(total_test_f,"%lld,%s,%d,%d,%ld,%ld,%.3f\n",\
sdData.current_time,\
sdData.strftime_buf,\
is_nom,\
sdData.flux_test_result.current_device_type,\
sdData.flux_test_result.current_stage,\
sdData.flux_test_result.current_rate,\
sdData.flux_test_result.current_test_result
current_stage,\
current_rate,\
test_result
);
fclose(total_test_f);
}
return ESP_OK;
}

View File

@ -144,7 +144,7 @@ esp_err_t sd_current_fileIndex_get(void);
* 1.
*
*/
esp_err_t sd_testData_write(void);
esp_err_t sd_testData_write(bool is_nom,float test_result);
#ifdef __cplusplus
}

View File

@ -271,8 +271,6 @@ void ui_pageHome_screen_init(void)
ui_pageHome_panelCenter = lv_obj_create(ui_pageHome_panelBody);
lv_obj_set_width(ui_pageHome_panelCenter, 297);
lv_obj_set_height(ui_pageHome_panelCenter, 430);
lv_obj_set_x(ui_pageHome_panelCenter, 0);
lv_obj_set_y(ui_pageHome_panelCenter, 1);
lv_obj_set_align(ui_pageHome_panelCenter, LV_ALIGN_CENTER);
lv_obj_clear_flag(ui_pageHome_panelCenter, LV_OBJ_FLAG_SCROLLABLE); /// Flags
lv_obj_set_style_radius(ui_pageHome_panelCenter, 15, LV_PART_MAIN | LV_STATE_DEFAULT);
@ -701,7 +699,7 @@ void ui_pageHome_screen_init(void)
lv_obj_set_width(ui_pageHome_labelstr22, LV_SIZE_CONTENT); /// 1
lv_obj_set_height(ui_pageHome_labelstr22, LV_SIZE_CONTENT); /// 1
lv_obj_set_x(ui_pageHome_labelstr22, 65);
lv_obj_set_y(ui_pageHome_labelstr22, 90);
lv_obj_set_y(ui_pageHome_labelstr22, 91);
lv_obj_set_align(ui_pageHome_labelstr22, LV_ALIGN_CENTER);
lv_label_set_text(ui_pageHome_labelstr22, "State");
lv_obj_set_style_text_font(ui_pageHome_labelstr22, &ui_font_MiSansN14, LV_PART_MAIN | LV_STATE_DEFAULT);
@ -875,8 +873,8 @@ void ui_pageHome_screen_init(void)
lv_spinbox_set_value(ui_pageHome_spinboxRate, 15);
lv_obj_set_style_pad_left(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui_pageHome_spinboxRate, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui_pageHome_spinboxRate, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui_pageHome_spinboxRate, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_align(ui_pageHome_spinboxRate, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(ui_pageHome_spinboxRate, &ui_font_homePanelLabel, LV_PART_MAIN | LV_STATE_DEFAULT);
@ -1014,8 +1012,8 @@ void ui_pageHome_screen_init(void)
lv_spinbox_set_value(ui_pageHome_spinboxStage, 1);
lv_obj_set_style_pad_left(ui_pageHome_spinboxStage, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui_pageHome_spinboxStage, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui_pageHome_spinboxStage, 7, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui_pageHome_spinboxStage, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui_pageHome_spinboxStage, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui_pageHome_spinboxStage, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_spinboxStage, lv_color_hex(0x030000), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(ui_pageHome_spinboxStage, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_align(ui_pageHome_spinboxStage, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT);
@ -1136,6 +1134,7 @@ void ui_pageHome_screen_init(void)
lv_obj_set_y(ui_pageHome_panelNomTest, 86);
lv_obj_set_align(ui_pageHome_panelNomTest, LV_ALIGN_CENTER);
lv_obj_clear_flag(ui_pageHome_panelNomTest, LV_OBJ_FLAG_SCROLLABLE); /// Flags
lv_obj_set_style_radius(ui_pageHome_panelNomTest, 15, LV_PART_MAIN | LV_STATE_DEFAULT);
ui_pageHome_Label8 = lv_label_create(ui_pageHome_panelLeft);
lv_obj_set_width(ui_pageHome_Label8, LV_SIZE_CONTENT); /// 1

View File

@ -364,6 +364,9 @@ static void standard_volume_refresh(void)
*/
void on_buttonStartTest_clicked(lv_event_t * e)
{
/* 设定当前工作模式为nom */
is_test_mode_nom = true;
/* 判断是否正在测试 */
if(is_nom_test_ing)
{
@ -480,6 +483,9 @@ static void comulate_result_read(lv_timer_t * timer)
*/
void on_buttonStartTestBS_clicked(lv_event_t * e)
{
/* 设定当前工作模式为bs */
is_test_mode_nom = false;
/* 判断是否正在测试 */
if(is_bs_test_ing)
{

View File

@ -180,13 +180,13 @@ void uart1_echoTask(void* arg)
for(int i=0;i<len;i++)
ESP_LOGI(TAG, "data[%d]:%02X", i, data[i]);
/*检查测试是否完成*/
/* 检查测试是否完成 */
if ((data[20] == 0x01)&&(data[1]==0x03)&&data[4]==FLUX_MODE_TIMER)
{
/*测试已完成*/
/* 测试已完成 */
lv_obj_add_state(ui_pageFluxRead_checkboxUnfinished,LV_STATE_CHECKED);
/*获取定时模式的时间*/
/* 获取定时模式的时间 */
bytes[0] = data[10];
bytes[1] = data[9];
bytes[2] = data[8];
@ -195,13 +195,13 @@ void uart1_echoTask(void* arg)
memcpy(&FluxMachineData.time, bytes, 4);
lv_label_set_text_fmt(ui_pageFluxRead_labelTimerPeriod,"%.2f",FluxMachineData.time);
/*获取积分流量值*/
/* 获取积分流量值 */
bytes[0] = data[46];
bytes[1] = data[45];
bytes[2] = data[44];
bytes[3] = data[43];
/*获取积分流量值将单位转化为mL*/
/* 获取积分流量值将单位转化为mL */
memcpy(&FluxMachineData.cumulativeVolume, bytes, 4);
FluxMachineData.cumulativeVolume = FluxMachineData.cumulativeVolume*1000;
@ -212,18 +212,15 @@ void uart1_echoTask(void* arg)
#endif
/* 获取测试结果并写入到SD卡中 */
switch (lv_dropdown_get_selected(ui_pageFluxRead_dropdownPulseTimes))
{
case 0:
sdData.flux_test_result.current_test_result = FluxMachineData.cumulativeVolume/10.0;
break;
default:
break;
}
sd_testData_write();
sd_testData_write(is_test_mode_nom,sdData.flux_test_result.current_test_result);
if(is_test_mode_nom)
{
/* 若当前是NOM模式直接刷新结果在Nom的界面 */
RefreshResult();
}
#if 0
/*获取当前液温*/
bytes[0] = data[66];
bytes[1] = data[65];
@ -232,6 +229,7 @@ void uart1_echoTask(void* arg)
memcpy(&FluxMachineData.liquidTemperature, bytes, 4);
lv_label_set_text_fmt(ui_pageFluxRead_labelLiquidTemperature,"%.2f",FluxMachineData.liquidTemperature);
#endif
}else{
lv_obj_clear_state(ui_pageFluxRead_checkboxUnfinished,LV_STATE_CHECKED);
@ -430,11 +428,6 @@ esp_err_t RefreshResult(void)
float breathVolume = FluxMachineData.cumulativeVolume/FluxMachineData.breathTimes;
lv_label_set_text_fmt(ui_pageHome_labelTestVolume,"%.2f",breathVolume);
#if 0
sdData.flux_test_result.current_test_result = breathVolume;
sd_testData_write();
#endif
/*获取测试体积上下限*/
float testVolumeUpper = atoff(lv_label_get_text(ui_pageHome_labelNominalVolumeMax));
float testVolumeLower = atoff(lv_label_get_text(ui_pageHome_labelNominalVolumeMin));

View File

@ -132,6 +132,9 @@ extern struct ModbusRTU_Frame flux_frame_start;
/* 启动指令下发事件组 */
extern EventGroupHandle_t start_state_event_group;
/* 导出当前工作模式的变量 */
extern bool is_test_mode_nom;
/**
* @brief
*

View File

@ -40,8 +40,8 @@ extern "C" void app_main(void)
/* 创建测试结果文件 */
sprintf(sdData.test_file_dir,"/sdcard/result%d.txt",sdData.file_index);
FILE *result_f = fopen(sdData.test_file_dir, "w");
/* 文件头为 时间戳、设备类型、挡位、频率、流量体积 */
fprintf(result_f, "timestamp,timeStr,device type,stage,rate,volume\n");
/* 文件头为 时间戳、是否Nom模式、设备类型、挡位、频率、流量体积 */
fprintf(result_f, "timestamp,timeStr,is_nom,device type,stage,rate,volume\n");
fclose(result_f);
#endif