From f39c69839382ee3890906e96211527dcb2eaeb51 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期六, 28 六月 2025 15:19:51 +0800 Subject: [PATCH] 修改语音上传bug,新增4G下发指令 --- keil/include/main/main.c | 68 +++++++++++++++++++++++++++++++--- 1 files changed, 62 insertions(+), 6 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index eeefce7..d16e8ad 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -46,6 +46,8 @@ #define UWB_MEASUREMENT_INTERVAL 5 #define UWB_MEASUREMENT_INTERVAL_SLEEP 30 +#define INACTIVE_TIMEOUT 30 + extern uint8_t mUsartReceivePack[100]; extern uint8_t mUsart2ReceivePack[150]; extern uint8_t state5V_prase_flag,gps_prase_flag; @@ -376,6 +378,7 @@ uint8_t input5v_time; extern uint8_t taglist_num; uint8_t gps_ntripsend; +extern uint8_t uwb_OpenClose_flag; static void sleep_timer_callback(void *dev, uint32_t time) { // powerON_Task(); @@ -406,7 +409,7 @@ // uart_send(UART_ID1, ceshidata, 50,NULL); } input5v_time=1; - if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1) + if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1&&uwb_OpenClose_flag==1) { CloseUWB(); Uwb_init(); @@ -424,6 +427,57 @@ delaysleep_count--; } +#ifdef JIBU_XIUMIAN + +uint16_t sleep_time=0; +uint32_t state_start_time_jibu=0; +uint8_t exercise_state=0; +uint32_t step_count = 0; // 步数计数 +uint32_t last_step_count = 0; // 上一次步数 +void check_step_and_update_state(void) +{ + if ((step_count != last_step_count)) + { + // 步数有变化,重置状态为正常状态 + last_step_count = step_count; + + if(current_state == STATE_SLEEP) + { + state_start_time_jibu = uwb_time_count; + state_start_time=uwb_time_count; + } +// if (current_state != STATE_NORMAL) +// { +// // 关闭可能正在运行的UWB +// if (uwb_is_on) { +// CloseUWB(); +// UWB_LED_OFF; +// uwb_is_on = false; +// } +// current_state = STATE_NORMAL; +// state_start_time = uwb_time_count; // 重置测距周期 +// } + current_state = STATE_NORMAL; + exercise_state=1; + last_step_count = step_count; + + } + else + { + // 步数没有变化,检查是否需要切换到休眠状态 + if (current_state == STATE_NORMAL) + { + uint32_t inactive_time = uwb_time_count - state_start_time_jibu; + if (inactive_time >= INACTIVE_TIMEOUT) + { // 30秒后切换到休眠状态 + current_state = STATE_SLEEP; + exercise_state=2; + state_start_time_jibu=uwb_time_count; + } + } + } +} +#endif static void pca_handler(enum IO_PIN_T pin) { PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值 @@ -535,7 +589,7 @@ // } g_com_map[MODBUS_MODE] = 0; log_4g_enable_flag=g_com_map[LOG_4G_ENABLE]; - g_com_map[VERSION] = (1<<8)|22; + g_com_map[VERSION] = (1<<8)|24; LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); @@ -754,10 +808,11 @@ extern uint32_t uwb_time_count; uint8_t GPS_UPLOAD_FLAG=0; uint32_t elapsed_time_jibu; +extern uint8_t uwb_OpenClose_flag; void upload_apppoll() { - if(current_state==STATE_NORMAL) + if(current_state==STATE_NORMAL&&uwb_OpenClose_flag==1) { if(g_com_map[UWBFrequency]>1) { @@ -779,10 +834,10 @@ else {} } - else if(current_state==STATE_SLEEP) + else if(current_state==STATE_SLEEP&&uwb_OpenClose_flag==1) { elapsed_time_jibu = uwb_time_count - state_start_time; - switch(elapsed_time_jibu==1) + switch(elapsed_time_jibu) { case UWB_OPEN_COUNT: CloseUWB(); @@ -916,7 +971,7 @@ wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗 LED_output_init();//配置彩色灯引脚 - + PCA9555_Set_One_Value_Output(TTS_ENABLE,1); WT588E02B_Init(); adc_open(&usr_adc_cfg); uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); @@ -970,5 +1025,6 @@ } IMUTask(); IdleTask(); + check_step_and_update_state(); } } -- Gitblit v1.9.3