From 8fc4a01ff4e0392107b8331c5f44e4c2b61e85be Mon Sep 17 00:00:00 2001 From: jarvis Date: Tue, 25 Mar 2025 15:42:11 +0800 Subject: [PATCH] =?UTF-8?q?event=E4=BA=8B=E4=BB=B6=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E5=8D=A1=E6=BB=9E=E7=9A=84=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/FluxUI/ui_events.c | 69 ++++++++++++++++++++++++++++++---- components/FluxUart/FluxUart.c | 4 +- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/components/FluxUI/ui_events.c b/components/FluxUI/ui_events.c index 0c86b8f..79769ad 100644 --- a/components/FluxUI/ui_events.c +++ b/components/FluxUI/ui_events.c @@ -18,8 +18,6 @@ #include "FluxProtocol.h" - - #define LOWERST_LIGHT_LEVEL (7222) /*更新当前测试标准*/ @@ -27,6 +25,20 @@ static void standardVolumeRefresh(void); /*根据呼吸频率调整积分时间*/ static void comulateTimeSend(void); +/*创建定时器*/ +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!"); +} /*亮度调节回调函数*/ @@ -90,9 +102,9 @@ void on_buttonStartTest_clicked(lv_event_t * e) { /*下发积分时间*/ - //comulateTimeSend(); #if 0 - /*使用0306报文格式*/ + + comulateTimeSend(); uint8_t bytes[4]; float time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); memcpy(bytes, &time, 4); @@ -107,20 +119,44 @@ void on_buttonStartTest_clicked(lv_event_t * e) 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+500); /*下发启动测试指令*/ - FLUX_TEST_START; + 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..."); - vTaskDelay(timeS*1000/portTICK_PERIOD_MS); + //vTaskDelay(timeS*1000/portTICK_PERIOD_MS); + lv_timer_enable(comulateResultReadTimer); +#if 0 + /*下发数据获取指令*/ + flux_frame.DATA[1] = 0; + flux_frame.DATA[3] = 120; + flux_frame.FUNC = FLUX_FUNC_READ; - lv_event_send(ui_pageFluxRead_buttonReadFlux,LV_EVENT_CLICKED,NULL); + /*下发问询120个参数*/ + ESP_ERROR_CHECK(ModbusRTU_Send_0306(ECHO_UART_PORT_NUM1,&flux_frame)); + + //lv_event_send(ui_pageFluxRead_buttonReadFlux,LV_EVENT_CLICKED,NULL); lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!"); +#endif } @@ -162,6 +198,23 @@ void on_spinboxRate_valueChanged(lv_event_t * e) /*下发测试时间*/ comulateTimeSend(); +#if 1 + 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 } @@ -267,7 +320,7 @@ void on_spinboxTime_valueChanged(lv_event_t * e) flux_frame2Reg.DATA[3] = bytes[0]; ESP_ERROR_CHECK(ModbusRTU_Send_0x10(ECHO_UART_PORT_NUM1,&flux_frame2Reg)); - #elif 1 + #elif 0 /*使用0306报文格式*/ uint8_t bytes[4]; float time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); diff --git a/components/FluxUart/FluxUart.c b/components/FluxUart/FluxUart.c index f97dd65..83c520b 100644 --- a/components/FluxUart/FluxUart.c +++ b/components/FluxUart/FluxUart.c @@ -258,7 +258,7 @@ esp_err_t ModbusRTU_Send_0306(uart_port_t uart_num, struct ModbusRTU_Frame *fram return ESP_FAIL; } - #if 0 + #if 1 sprintf(text,"%02X %02X %02X %02X %02X %02X %02X %02X \n",frame->ADDR,frame->FUNC,frame->DATA[0],frame->DATA[1],frame->DATA[2],frame->DATA[3],frame->CRC[0],frame->CRC[1]); lv_textarea_add_char(ui_pageDebug_textAreaContent,'\n'); @@ -321,6 +321,8 @@ esp_err_t RefreshResult(void) }else{ RESULT_RIGHT; + + lv_label_set_text(ui_pageHome_labelResultCompare,"Pass!"); } return ESP_OK;