From 3674e113e9923184e8f1bd497c2f7832fc959d29 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期一, 21 二月 2022 14:47:50 +0800 Subject: [PATCH] V1.66 修改标签报警逻辑bug --- 源码/核心板/Src/application/dw_app.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 32 insertions(+), 16 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" index 20612af..3589abd 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" @@ -49,7 +49,7 @@ float dis_after_filter; //当前距离值 LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 int32_t g_Tagdist[TAG_NUM_IN_SYS]; -uint8_t g_flag_Taggetdist[256]; +uint8_t g_flag_Taggetdist[256],flag_tag_distsmooth[TAG_NUM_IN_SYS]; static uint64_t get_tx_timestamp_u64(void) { @@ -882,18 +882,7 @@ dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS+(rec_nearbase_num+1-ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS);//设置发送完成后开启接收延迟时间 dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 - if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]) - { - motorstate =0; - }else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE2]) - { - motorstate =2; - }else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE3]) - { - motorstate =1; - }else{ - motorstate =0; - } + if(new_tagid) { @@ -902,7 +891,28 @@ }else{ memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); } - tx_nearresp_msg[GROUP_ID_IDX] = group_id; + + if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]||tagdist_list[taglist_pos]==0) + { + motorstate =0; + }else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE2]) + { + if(flag_tag_distsmooth[taglist_pos]) + {motorstate =2; + }else{ + motorstate =0; + } + }else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE3]) + { + if(flag_tag_distsmooth[taglist_pos]) + {motorstate =1; + }else{ + motorstate =0; + } + }else{ + motorstate =0; + } + tx_nearresp_msg[GROUP_ID_IDX] = group_id; tx_nearresp_msg[MAINBASE_INDEX]=flag_syncbase; tx_nearresp_msg[MESSAGE_TYPE_IDX]=NEAR_RESPONSE; tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; @@ -980,6 +990,12 @@ if(hex_dist>-100000&&hex_dist<2000000) { + if(abs(hex_dist-his_dist[taglist_pos])<10000) + { + flag_tag_distsmooth[taglist_pos] =1; + }else{ + flag_tag_distsmooth[taglist_pos] =0; + } if(abs(hex_dist-his_dist[taglist_pos])<dist_threshold||misdist_num[taglist_pos]>3) { @@ -1000,7 +1016,7 @@ { g_Tagdist[taglist_pos]=hex_dist/10; }else{ - g_Tagdist[taglist_pos]= 1; + g_Tagdist[taglist_pos]= 999999; } #ifdef USART_SINGLE_OUTPUT usart_send[2] = 1;//正常模式 @@ -1009,7 +1025,7 @@ memcpy(&usart_send[5],&tag_id_recv,2); memcpy(&usart_send[7],&dev_id,2); if(tagdist_list[taglist_pos]<=0) - tagdist_list[taglist_pos]=10; + tagdist_list[taglist_pos]=999999; memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); usart_send[13] = battary; usart_send[14] = button; -- Gitblit v1.9.3