From e8217c490101ba6f6a60a6a029a53cbe60b39b9e Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期二, 06 九月 2022 15:51:26 +0800
Subject: [PATCH] V1.69 去掉滤波

---
 源码/核心板/Src/application/dw_app.c |   55 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 34 insertions(+), 21 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 3b22bba..efe02fb 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"
@@ -1,6 +1,6 @@
 #include "dw_app.h"
 #include "ADC.h"
-#define TDFILTER
+//#define TDFILTER
 enum enumtagstate
 {
 	DISCPOLL,
@@ -313,10 +313,11 @@
 	}
 return max_slotpos-1;
 }
-u8 test=0,dissucc_flag1,dissucc_flag2,lastdist1,lastdist2;
-u8 anclost_times=0,usartoutput_count,usartoutput_notenough=0;
+u8 test=0,dissucc_times,lastdist1,lastdist2;
+u8 anclost_times=0,usartoutput_count;
+u16 usartoutput_notenough=0;
 u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0,rec_extratag_battary;
-u16 temp_sync_timer1,temp_sync_timer2,rec_extratag_id;
+u16 temp_sync_timer1,temp_sync_timer2,rec_extratag_id,success_ancid;
 int32_t rec_extratag_dist;
  void NearPoll(void)
 {
@@ -471,10 +472,14 @@
 									dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000
 									dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度
 									memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
-                                if(temp_dist!=0x1ffff&&lastdist1!=temp_dist&&!dissucc_flag1)//没有成功测距,且距离和上一次不相等
+                                if(temp_dist!=0x1ffff)//没有成功测距,且距离和上一次不相等
                                 {
-                                    dissucc_flag1 = 1;
-                                    lastdist1 = temp_dist;
+                                   if(success_ancid!=rec_nearbaseid&&dissucc_times<2)
+                                   {
+                                        success_ancid = rec_nearbaseid;
+                                        dissucc_times++;
+                                   
+                                   
 	
 										g_Resttimer=0;
 										IWDG_Feed();
@@ -510,6 +515,7 @@
 										#endif
 									}
                                 }
+                                }
 									
 								}else{
 									rec_nearbasepos=FindNearBasePos(rec_nearbaseid);
@@ -536,11 +542,13 @@
 									LED0_BLINK;
 //									memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
 //									tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
-						 if(temp_dist!=0x1ffff&&lastdist2!=temp_dist&&!dissucc_flag2)//没有成功测距,且距离和上一次不相等
+						 if(temp_dist!=0x1ffff)//没有成功测距,且距离和上一次不相等
                                 {
-                                    dissucc_flag2 = 1;
-                                    lastdist2 = temp_dist;
-                                    
+                                   if(success_ancid!=rec_nearbaseid&&dissucc_times<2)
+                                   {
+                                        success_ancid = rec_nearbaseid;
+                                        dissucc_times++;
+                                   
 										#ifdef USART_SINGLE_OUTPUT
 										usart_send[2] = 1;//正常模式
 										usart_send[3] = 17;//数据段长度
@@ -561,7 +569,7 @@
 										UART_PushFrame(usart_send,21);
                                         usartoutput_count++;
 										#endif
-
+                                    
 									//dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5
 								//	result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送			
 									//dwt_writetxdata(4,&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4], FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4);//将发送数据写入DW1000
@@ -588,6 +596,7 @@
 										UART_PushFrame(usart_send,21);
 										#endif
 									}
+                                }
                                 }
 							}									
 							}
@@ -701,8 +710,8 @@
         {
             usartoutput_notenough = 0;
         }else{
-            sync_timer += time32_incr%5;
-            if(usartoutput_notenough++>50)
+            sync_timer += time32_incr%2;
+            if(usartoutput_notenough++>500)
             {
                 SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
             }
@@ -798,7 +807,7 @@
 u16 tagid_list[TAG_NUM_IN_SYS];
 u8 tagofflinetime[TAG_NUM_IN_SYS];
 int32_t tagdist_list[TAG_NUM_IN_SYS];
-u8 tagseq_list[TAG_NUM_IN_SYS];
+u8 tagseq_list[TAG_NUM_IN_SYS],tagnewdist_list[TAG_NUM_IN_SYS];
 void TagListUpdate(void)
 {
 	u16 i,j=0,temp[TAG_NUM_IN_SYS];
@@ -952,18 +961,21 @@
 			}else{
 				motorstate =0;
 			}
-//			if(frame_seq_nb2!=tagseq_list[taglist_pos]+1)
-//            {
-//                tagdist_list[taglist_pos]=0x1ffff;
-//            }
 			if(new_tagid)
 			{
 				tagdist_list[taglist_pos]=0x1ffff;
 				memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
 			}else{
-				memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
+                if(tagnewdist_list[taglist_pos])
+                {
+                    tagnewdist_list[taglist_pos] = 0;
+                    memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
+                }else{
+                     int32_t nodistvalue = 0x1ffff;
+                     memcpy(&tx_nearresp_msg[DIST_IDX], &nodistvalue, 4);
+                }
 			}
-      tx_nearresp_msg[GROUP_ID_IDX] = group_id;
+            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]=0;//(remotesend_state<<4)|motorstate;
@@ -1073,6 +1085,7 @@
                         }else{
                             g_Tagdist[taglist_pos]= 1;
                         }
+                        tagnewdist_list[taglist_pos] = 1;
                         tagseq_list[taglist_pos] = frame_seq_nb2;
 				#ifdef USART_SINGLE_OUTPUT
 					usart_send[2] = 1;//正常模式 

--
Gitblit v1.9.3