常规模式测试没问题的程序
This commit is contained in:
parent
f63b0d228b
commit
e51573df01
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -12,7 +12,7 @@
|
||||
"idf.openOcdConfigs": [
|
||||
"board/esp32s3-builtin.cfg"
|
||||
],
|
||||
"idf.portWin": "COM5",
|
||||
"idf.portWin": "COM6",
|
||||
"idf.flashType": "UART",
|
||||
"files.associations": {
|
||||
"*.md": "markdown",
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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 启动指令下发宏函数
|
||||
*
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user