修改bs测试中途提交
This commit is contained in:
parent
4dff8129a7
commit
a8fddb4220
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@ -48,6 +48,10 @@
|
||||
"time.h": "c",
|
||||
"types.h": "c",
|
||||
"timespec.h": "c",
|
||||
"fluxprotocol.h": "c"
|
||||
"fluxprotocol.h": "c",
|
||||
"fluxsd.h": "c",
|
||||
"bitset": "c",
|
||||
"algorithm": "c",
|
||||
"format": "c"
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,9 +19,17 @@ float Spirit3_Volume[4] = { 210,420,630,750};
|
||||
float Spirit6_Volume[6] = { 210,420,630,840,1050,1200};
|
||||
float YULite8_Volume[6] = { 210,420,630,840,1050,1200};
|
||||
|
||||
/* 流量计六个挡位测试时间序列 */
|
||||
int flux_test_time_series[6] = {40,30,24,20,18,15};
|
||||
/* 定于用于存储当前测试阶段的枚举变量 */
|
||||
enum Bs_test_Stage currentTestStage = BS_STAGE_NONE;
|
||||
|
||||
/* 应用 event_homePage 中的测试状态显示变量 */
|
||||
extern bool is_bs_test_ing;
|
||||
|
||||
/* 定义控制LED小灯的任务句柄 */
|
||||
TaskHandle_t bs_stateLED_task_handle;
|
||||
|
||||
/*
|
||||
* @brief 拼接测试过程中用于展示的字符串
|
||||
* 1.时间设置发送成功 Time setting sent successfully
|
||||
@ -50,9 +58,40 @@ struct FluxProtocol fluxProtocol;
|
||||
*/
|
||||
void bs_test_task(void* arg)
|
||||
{
|
||||
/* 进行6次循环测计数 */
|
||||
uint8_t testCount = 0;
|
||||
|
||||
while(1)
|
||||
{
|
||||
/* 恢复LED显示任务 */
|
||||
vTaskResume(bs_stateLED_task_handle);
|
||||
currentTestStage = BS_STAGE_START;
|
||||
|
||||
for ( testCount = 0; testCount < sizeof(flux_test_time_series); testCount++)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* 显示测试开始 */
|
||||
BS_HOMEPAGE_SHOW("15BPM start testing...");
|
||||
FLUX_PROGRESS_BAR_CONTROL(10);
|
||||
|
||||
/* 测试开始 15BPM */
|
||||
/* 下发测试时间 */
|
||||
flux_test_time_set(flux_test_time_series[0]);
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
/* 下发启动指令 */
|
||||
flux_test_start();
|
||||
currentTestStage = BS_STAGE_15BPM;
|
||||
/* 等待测试时间 */
|
||||
vTaskDelay(flux_test_time_series[0]*1000 / portTICK_PERIOD_MS);
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
/* 15BPM测试结束 显示测试结束 */
|
||||
BS_HOMEPAGE_SHOW("15BPM end test");
|
||||
FLUX_PROGRESS_BAR_CONTROL(20);
|
||||
/* 读取测试结果 */
|
||||
flux_test_result_get();
|
||||
|
||||
|
||||
ESP_LOGI("bs_test_task", "bs_test_task");
|
||||
|
||||
@ -81,7 +120,12 @@ void bs_test_task(void* arg)
|
||||
/* 任务测试完毕 删除任务 */
|
||||
lv_label_set_text(ui_pageHome_labelStartTest1,"Start Test BS");
|
||||
is_bs_test_ing = false;
|
||||
|
||||
/* 挂起LED显示任务 */
|
||||
BS_STATE_LED_TASK_SUSPEND;
|
||||
|
||||
vTaskDelete(NULL);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -98,10 +142,75 @@ void bs_test_led_task(void* arg)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
ESP_LOGI("bs_test_led_task", "bs_test_led_task");
|
||||
vTaskDelay(BS_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS);
|
||||
lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0x00FF00),LV_PART_MAIN);
|
||||
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
ESP_LOGI("bs_test_led_task", "bs_test_led_task end?");
|
||||
vTaskDelay(BS_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS);
|
||||
lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0xFFFFFF),LV_PART_MAIN);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 向流量计下发测试时间
|
||||
*
|
||||
* 时间下发
|
||||
*
|
||||
* @param[in] time 向流量计下发测试的时间
|
||||
*
|
||||
*/
|
||||
void flux_test_time_set(float var_time)
|
||||
{
|
||||
/* 设置15BPM测试时间 */
|
||||
uint8_t bytes[4];
|
||||
float time = var_time;
|
||||
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];
|
||||
|
||||
/* 下发15BPM测试时间指令*/
|
||||
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 向流量计下发启动测试指令
|
||||
*
|
||||
*/
|
||||
void flux_test_start(void)
|
||||
{
|
||||
/* 下发启动测试指令 */
|
||||
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));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 向流量计下获取测试结果指令
|
||||
*
|
||||
*/
|
||||
void flux_test_result_get(void)
|
||||
{
|
||||
/*下发数据获取指令*/
|
||||
/* 起始地址为 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));
|
||||
}
|
||||
@ -39,6 +39,27 @@ extern float YULite8_Volume[6];
|
||||
/* 导出消息数据*/
|
||||
extern char *test_info[];
|
||||
|
||||
/* 导出LED小灯控制句柄 */
|
||||
extern TaskHandle_t bs_stateLED_task_handle;
|
||||
|
||||
/* 定义LED小灯闪烁时间间隔 ms */
|
||||
#define BS_LED_BLINK_INTERVAL_MS 500
|
||||
|
||||
/* 定义枚举用于标记当前测试阶段 */
|
||||
typedef enum Bs_test_Stage{
|
||||
BS_STAGE_15BPM,
|
||||
BS_STAGE_20BPM,
|
||||
BS_STAGE_25BPM,
|
||||
BS_STAGE_30BPM,
|
||||
BS_STAGE_35BPM,
|
||||
BS_STAGE_40BPM,
|
||||
BS_STAGE_MAX,
|
||||
BS_STAGE_NONE,
|
||||
BS_STAGE_ERROR,
|
||||
BS_STAGE_FINISH,
|
||||
BS_STAGE_START,
|
||||
};
|
||||
|
||||
/* 声明设备类型 */
|
||||
typedef enum DeviceType{
|
||||
Spirit3,
|
||||
@ -96,6 +117,13 @@ typedef struct FluxCommand
|
||||
lv_label_set_text(ui_pageHome_LabelRate35Result, "0");\
|
||||
lv_label_set_text(ui_pageHome_LabelRate40Result, "0");
|
||||
|
||||
/* 创建led任务挂起宏函数 */
|
||||
#define BS_STATE_LED_TASK_SUSPEND vTaskSuspend(bs_stateLED_task_handle);\
|
||||
lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0xFFFFFF),LV_PART_MAIN);
|
||||
|
||||
/* BS测试过程中快速显示测试状态 */
|
||||
#define BS_HOMEPAGE_SHOW(x) lv_label_set_text(ui_pageHome_labelBSInfo,x);
|
||||
|
||||
/**
|
||||
* @brief 新建用于进行带BS测试的任务函数
|
||||
*
|
||||
@ -114,6 +142,38 @@ void bs_test_task(void* arg);
|
||||
*/
|
||||
void bs_test_led_task(void* arg);
|
||||
|
||||
/**
|
||||
* @brief 测试状态显示线程
|
||||
*
|
||||
* 设置一个LED小灯,测试的时候bling bling 闪
|
||||
*
|
||||
* @param[in] arg not used
|
||||
*
|
||||
*/
|
||||
void bs_test_led_task(void* arg);
|
||||
|
||||
/**
|
||||
* @brief 向流量计下发测试时间
|
||||
*
|
||||
* 时间下发
|
||||
*
|
||||
* @param[in] time 向流量计下发测试的时间
|
||||
*
|
||||
*/
|
||||
void flux_test_time_set(float var_time);
|
||||
|
||||
/**
|
||||
* @brief 向流量计下发启动测试指令
|
||||
*
|
||||
*/
|
||||
void flux_test_start(void);
|
||||
|
||||
/**
|
||||
* @brief 向流量计下获取测试结果指令
|
||||
*
|
||||
*/
|
||||
void flux_test_result_get(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
@ -609,6 +609,19 @@ void ui_pageHome_screen_init(void)
|
||||
lv_label_set_text(ui_pageHome_LabelRate35DOWN, "70.5");
|
||||
lv_obj_set_style_text_font(ui_pageHome_LabelRate35DOWN, &lv_font_montserrat_14, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
|
||||
ui_pageHome_panelBSLEDing = lv_obj_create(ui_pageHome_panelResult1);
|
||||
lv_obj_set_width(ui_pageHome_panelBSLEDing, 25);
|
||||
lv_obj_set_height(ui_pageHome_panelBSLEDing, 25);
|
||||
lv_obj_set_x(ui_pageHome_panelBSLEDing, 103);
|
||||
lv_obj_set_y(ui_pageHome_panelBSLEDing, 90);
|
||||
lv_obj_set_align(ui_pageHome_panelBSLEDing, LV_ALIGN_CENTER);
|
||||
lv_obj_clear_flag(ui_pageHome_panelBSLEDing, LV_OBJ_FLAG_SCROLLABLE); /// Flags
|
||||
lv_obj_set_style_radius(ui_pageHome_panelBSLEDing, 15, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_border_color(ui_pageHome_panelBSLEDing, lv_color_hex(0xC4C3C3), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_border_opa(ui_pageHome_panelBSLEDing, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_border_width(ui_pageHome_panelBSLEDing, 1, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_border_side(ui_pageHome_panelBSLEDing, LV_BORDER_SIDE_FULL, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
|
||||
ui_pageHome_LabelRate40DOWN = lv_label_create(ui_pageHome_panelResult1);
|
||||
lv_obj_set_width(ui_pageHome_LabelRate40DOWN, LV_SIZE_CONTENT); /// 1
|
||||
lv_obj_set_height(ui_pageHome_LabelRate40DOWN, LV_SIZE_CONTENT); /// 1
|
||||
@ -638,8 +651,8 @@ void ui_pageHome_screen_init(void)
|
||||
lv_dropdown_set_options(ui_pageHome_DropdownTestTypeBS, "Spirit-3\nSpirit-6\nYu-Lite8");
|
||||
lv_obj_set_width(ui_pageHome_DropdownTestTypeBS, 100);
|
||||
lv_obj_set_height(ui_pageHome_DropdownTestTypeBS, 30);
|
||||
lv_obj_set_x(ui_pageHome_DropdownTestTypeBS, -6);
|
||||
lv_obj_set_y(ui_pageHome_DropdownTestTypeBS, 90);
|
||||
lv_obj_set_x(ui_pageHome_DropdownTestTypeBS, -10);
|
||||
lv_obj_set_y(ui_pageHome_DropdownTestTypeBS, 91);
|
||||
lv_obj_set_align(ui_pageHome_DropdownTestTypeBS, LV_ALIGN_CENTER);
|
||||
lv_obj_add_flag(ui_pageHome_DropdownTestTypeBS, LV_OBJ_FLAG_SCROLL_ON_FOCUS); /// Flags
|
||||
lv_obj_set_style_text_align(ui_pageHome_DropdownTestTypeBS, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
@ -684,6 +697,15 @@ void ui_pageHome_screen_init(void)
|
||||
lv_label_set_text(ui_pageHome_labelstr23, "测试结果:");
|
||||
lv_obj_set_style_text_font(ui_pageHome_labelstr23, &ui_font_MiSansN, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
|
||||
ui_pageHome_labelstr22 = lv_label_create(ui_pageHome_panelResult1);
|
||||
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_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);
|
||||
|
||||
ui_pageHome_panelStageBS = lv_obj_create(ui_pageHome_panelCenter);
|
||||
lv_obj_set_width(ui_pageHome_panelStageBS, 266);
|
||||
lv_obj_set_height(ui_pageHome_panelStageBS, 98);
|
||||
|
||||
@ -87,6 +87,7 @@ lv_obj_t * ui_pageHome_LabelRate20DOWN;
|
||||
lv_obj_t * ui_pageHome_LabelRate25DOWN;
|
||||
lv_obj_t * ui_pageHome_LabelRate30DOWN;
|
||||
lv_obj_t * ui_pageHome_LabelRate35DOWN;
|
||||
lv_obj_t * ui_pageHome_panelBSLEDing;
|
||||
lv_obj_t * ui_pageHome_LabelRate40DOWN;
|
||||
lv_obj_t * ui_pageHome_labelstr20;
|
||||
lv_obj_t * ui_pageHome_BarTestProgBS;
|
||||
@ -96,6 +97,7 @@ lv_obj_t * ui_pageHome_labelstr21;
|
||||
lv_obj_t * ui_pageHome_labelstr7;
|
||||
lv_obj_t * ui_pageHome_labelBSInfo;
|
||||
lv_obj_t * ui_pageHome_labelstr23;
|
||||
lv_obj_t * ui_pageHome_labelstr22;
|
||||
lv_obj_t * ui_pageHome_panelStageBS;
|
||||
void ui_event_pageHome_buttonMinusBS(lv_event_t * e);
|
||||
lv_obj_t * ui_pageHome_buttonMinusBS;
|
||||
|
||||
@ -97,6 +97,7 @@ extern lv_obj_t * ui_pageHome_LabelRate20DOWN;
|
||||
extern lv_obj_t * ui_pageHome_LabelRate25DOWN;
|
||||
extern lv_obj_t * ui_pageHome_LabelRate30DOWN;
|
||||
extern lv_obj_t * ui_pageHome_LabelRate35DOWN;
|
||||
extern lv_obj_t * ui_pageHome_panelBSLEDing;
|
||||
extern lv_obj_t * ui_pageHome_LabelRate40DOWN;
|
||||
extern lv_obj_t * ui_pageHome_labelstr20;
|
||||
extern lv_obj_t * ui_pageHome_BarTestProgBS;
|
||||
@ -106,6 +107,7 @@ extern lv_obj_t * ui_pageHome_labelstr21;
|
||||
extern lv_obj_t * ui_pageHome_labelstr7;
|
||||
extern lv_obj_t * ui_pageHome_labelBSInfo;
|
||||
extern lv_obj_t * ui_pageHome_labelstr23;
|
||||
extern lv_obj_t * ui_pageHome_labelstr22;
|
||||
extern lv_obj_t * ui_pageHome_panelStageBS;
|
||||
void ui_event_pageHome_buttonMinusBS(lv_event_t * e);
|
||||
extern lv_obj_t * ui_pageHome_buttonMinusBS;
|
||||
|
||||
@ -482,11 +482,14 @@ void on_buttonStartTestBS_clicked(lv_event_t * e)
|
||||
{
|
||||
/* 如果正在测试,按下后取消测试 */
|
||||
vTaskDelete(bs_test_task_handle);
|
||||
/* 挂起LED闪烁 */
|
||||
BS_STATE_LED_TASK_SUSPEND;
|
||||
|
||||
/* 等待开始测试 */
|
||||
is_bs_test_ing = false;
|
||||
/* 清空已完成的测试结果 */
|
||||
BS_ALL_RESULT_CLEAR;
|
||||
|
||||
lv_label_set_text(ui_pageHome_labelStartTest1,"Start Test BS");
|
||||
}else{
|
||||
/* 如果没有测试,按下后开始测试 */
|
||||
@ -499,33 +502,11 @@ void on_buttonStartTestBS_clicked(lv_event_t * e)
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* 设置15BPM测试时间 */
|
||||
uint8_t bytes[4];
|
||||
float time = 40.0;
|
||||
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];
|
||||
|
||||
/* 下发15BPM测试时间指令*/
|
||||
ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame));
|
||||
|
||||
/* 屏幕中显示下发成功 */
|
||||
lv_label_set_text(ui_pageHome_labelBSInfo,test_info[0]);
|
||||
|
||||
/* 下发启动测试指令 */
|
||||
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_labelBSInfo,test_info[1]);
|
||||
|
||||
@ -102,6 +102,10 @@ extern "C" void app_main(void)
|
||||
/*创建本地时间同步任务*/
|
||||
xTaskCreate(time_synic_task, "time_synic_task", 8*1024, NULL, 10, NULL);
|
||||
|
||||
/* 创建BS测试LED闪烁任务,同时挂起 */
|
||||
xTaskCreate(bs_test_led_task, "bs_test_led_task", 4 * 1024, NULL, 2, &bs_stateLED_task_handle);
|
||||
vTaskSuspend(bs_stateLED_task_handle);
|
||||
|
||||
#if 0/*暂时不支持呼吸模拟器*/
|
||||
/*创建UART2响应任务*/
|
||||
xTaskCreate(uart2_echoTask, "uart2_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user