diff --git a/.vscode/settings.json b/.vscode/settings.json index 5055cd2..9d6b93c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -35,6 +35,7 @@ "fluxdisplayport.h": "c", "esp_lcd_panel_vendor.h": "c", "float.h": "c", - "esp_log.h": "c" + "esp_log.h": "c", + "fluxpower.h": "c" } } diff --git a/SquareLineProj/backup/ESP32S3_UI_backup08.zip b/SquareLineProj/backup/ESP32S3_UI_backup08.zip index d4f275f..2a92b13 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup08.zip and b/SquareLineProj/backup/ESP32S3_UI_backup08.zip differ diff --git a/components/FluxPower/FluxPower.c b/components/FluxPower/FluxPower.c index b21b82b..e705444 100644 --- a/components/FluxPower/FluxPower.c +++ b/components/FluxPower/FluxPower.c @@ -5,15 +5,6 @@ static const char *TAG = "POWER_IO"; -/* Changes in power level cause changes in UI widget parameters */ -// extern lv_obj_t * ui_pageBattery_barBattery; -// extern lv_obj_t * ui_pageBattery_spinboxBattery; -// extern lv_obj_t * ui_pageBattery_labelCurrentVoltage; -// extern lv_obj_t * ui_pageBattery_labelCurrentVolume; - -// extern lv_obj_t * ui_pageHome_sliderBattery; -// extern lv_obj_t * ui_pageHome_labelBattery; - /* Power management task with no return value */ static int Bat_Adc_Value = 0; static adc_oneshot_unit_handle_t adc1_handle; diff --git a/components/FluxUI/ui_events.c b/components/FluxUI/ui_events.c index 0c86b8f..8c7e3d1 100644 --- a/components/FluxUI/ui_events.c +++ b/components/FluxUI/ui_events.c @@ -85,42 +85,23 @@ void on_buttonReadSDCard_clicked(lv_event_t * e) /************************************ 测试流程函数 ******************************************* */ /*pageHome 开始测试按键按下回调函数*/ -int32_t timeS = 0; void on_buttonStartTest_clicked(lv_event_t * e) { + xEventGroupSetBitsFromISR(start_state_event_group,START_TEST_EVENT_BIT,pdFALSE); + //xEventGroupSetBits(start_state_event_group,START_TEST_EVENT_BIT); - /*下发积分时间*/ - //comulateTimeSend(); -#if 0 - /*使用0306报文格式*/ - 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]; +/*pageFluxRead 获取当前流量数据*/ +void on_buttonReadFlux_clicked(lv_event_t * e) +{ + flux_frame.DATA[1] = 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)); -#endif - - timeS = lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); - - /*下发启动测试指令*/ - FLUX_TEST_START; - - lv_label_set_text(ui_pageHome_labelStartTest,"Testing..."); - - vTaskDelay(timeS*1000/portTICK_PERIOD_MS); - - lv_event_send(ui_pageFluxRead_buttonReadFlux,LV_EVENT_CLICKED,NULL); - - lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!"); } @@ -203,19 +184,6 @@ static void standardVolumeRefresh(void) } -/*pageFluxRead 获取当前流量数据*/ -void on_buttonReadFlux_clicked(lv_event_t * e) -{ - flux_frame.DATA[1] = 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)); - -} - - /*更新测试结果 —— 功能已屏蔽*/ void on_labelTestVolume_valueChanged(lv_event_t * e) { diff --git a/components/FluxUart/FluxUart.c b/components/FluxUart/FluxUart.c index f97dd65..edf7e24 100644 --- a/components/FluxUart/FluxUart.c +++ b/components/FluxUart/FluxUart.c @@ -1,7 +1,8 @@ #include #include "FluxUart.h" #include "ui.h" - +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" static const char *TAG = "UART TEST"; @@ -15,6 +16,9 @@ struct ModbusRTU_Frame flux_frame_start; struct ModbusRTU_Frame2Reg flux_frame2Reg; +/*创建用于记录开始测量事件的事件组*/ +EventGroupHandle_t start_state_event_group; + #define RESULT_RIGHT lv_obj_set_style_bg_color(ui_pageHome_panelTestResult,lv_color_hex(0x00FF00),LV_PART_MAIN);\ lv_label_set_text(ui_pageHome_labelTestResult,"V"); @@ -201,6 +205,43 @@ void uart1_echoTask(void* arg) } + +/*测试任务*/ +void test_task(void *arg) +{ + + start_state_event_group = xEventGroupCreate(); + /*事件初始化*/ + xEventGroupClearBits(start_state_event_group,START_TEST_EVENT_BIT); + int32_t timeS = 0; + + while (1) + { + vTaskDelay(1000 / portTICK_PERIOD_MS); + if (xEventGroupGetBits(start_state_event_group)&START_TEST_EVENT_BIT) + { + /*开始测试*/ + timeS = lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); + + /*下发启动测试指令*/ + FLUX_TEST_START; + + lv_label_set_text(ui_pageHome_labelStartTest,"Testing..."); + + vTaskDelay(timeS*1000/portTICK_PERIOD_MS); + + lv_event_send(ui_pageFluxRead_buttonReadFlux,LV_EVENT_CLICKED,NULL); + + lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!"); + + + /*测试完毕后清空事件*/ + xEventGroupClearBits(start_state_event_group,START_TEST_EVENT_BIT); + } + } +} + + /*呼吸模拟器预留接口函数*/ void uart2_echoTask(void* arg) { @@ -324,4 +365,5 @@ esp_err_t RefreshResult(void) } return ESP_OK; -} \ No newline at end of file +} + diff --git a/components/FluxUart/FluxUart.h b/components/FluxUart/FluxUart.h index 9a72fb7..40bba82 100644 --- a/components/FluxUart/FluxUart.h +++ b/components/FluxUart/FluxUart.h @@ -118,6 +118,11 @@ void uart1_echoTask(void* arg); /* UART2 response task */ void uart2_echoTask(void* arg); +/*测试任务*/ +void test_task(void *arg); +extern EventGroupHandle_t start_state_event_group; +#define START_TEST_EVENT_BIT BIT0 + /* CRC16 checksum */ unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen); diff --git a/main/main.cpp b/main/main.cpp index a2ce4ee..220cbb2 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -65,6 +65,9 @@ extern "C" void app_main(void) lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 90%"); vTaskDelay(300/portTICK_PERIOD_MS); + /*创建测试任务*/ + xTaskCreate(test_task,"Test_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL); + #if 0/*暂时不支持呼吸模拟器*/ /*创建UART2响应任务*/ xTaskCreate(uart2_echoTask, "uart2_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL); diff --git a/sdkconfig b/sdkconfig index 8adac47..969a828 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1326,7 +1326,7 @@ CONFIG_FATFS_LINK_LOCK=y # # CONFIG_FREERTOS_SMP is not set # CONFIG_FREERTOS_UNICORE is not set -CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_HZ=1000 # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y