From fa5a89bd9f87ef619619194d00cd495d165e1f12 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期六, 27 六月 2020 19:33:44 +0800
Subject: [PATCH] V1.19 测试10对10 200ms防撞。

---
 源码/核心板/Src/application/dw_app.c |   43 +++++++++++++++++++++++++++----------------
 1 files changed, 27 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 6b1ce81..53978d4 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"
@@ -208,17 +208,24 @@
 u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
 int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM],true_exsistbase_list[MAX_NEARBASE_NUM];
 uint8_t trygetnearmsg_times;
-u16 current_slotnum,total_slotnum,target_time;
+u16 current_slotnum,total_slotnum,target_time,last_time;
+u32 rec_tagpos_binary;
+extern uint32_t tagpos_binary;
 void SetNextPollTime(u16 time)
 {
-	if(current_slotnum>=total_slotnum)
+	current_slotnum++;
+	if(current_slotnum==total_slotnum)
 		current_slotnum-=total_slotnum;
 	//time=5;
 	target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time);
-	if(target_time>=990&&target_time<1000)
+
+	last_time=target_time;
+	if(target_time>=990&&target_time<992)
 	{
 		current_slotnum++;
 	target_time+=g_com_map[COM_INTERVAL];
+	tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary);
+	tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;	
 	}	
 	if(target_time>=1000)
 	{target_time-=1000;}
@@ -303,8 +310,7 @@
 u8 anclost_times=0;
 u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0;
 u16 temp_sync_timer1,temp_sync_timer2;
-u32 rec_tagpos_binary;
-extern uint32_t tagpos_binary;
+
  void NearPoll(void)
 {
 	static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
@@ -341,7 +347,7 @@
 	flag_rxon=1;
 	neartimout_timer=0;
 	get_newbase=0;
-	timeout=ceil((float)nearbase_num*0.4)+2;
+	timeout=ceil((float)nearbase_num*0.4)+3;
 	//timeout=5;
 	mainbase_dist=100000;
 	mainbase_lost_count++;
@@ -414,6 +420,7 @@
 									}
 									TIM3->CNT=tmp_time;
 								}
+									current_slotnum=temp_sync_timer1/g_com_map[COM_INTERVAL];
 //									if(tagslotpos>max_slotpos)
 //										tagslotpos=tagslotpos%(max_slotpos+1);
 //										tyncpoll_time=(tagslotpos-1)*slottime;
@@ -510,7 +517,8 @@
 //					random_value=random_value|((temp_adc&0x01)<<i);
 //				}
 				tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary);
-				tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;	
+				tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
+		tag_state=GETNEARMSG;		
 			}
 		//	tyncpoll_time=0;
 			next_nearbase_num=0;
@@ -555,7 +563,7 @@
 			{
 				nearbaseid_list[i]=true_nearbase_idlist[i];
 				nearbase_distlist[i]=true_nearbase_distlist[i];
-				if(nearbase_distlist[i]!=0x1ffff&&true_exsistbase_list[i]==0xa)
+				if(nearbase_distlist[i]!=0x1ffff&&true_exsistbase_list[i]==KEEP_TIMES)
 				{
 					memcpy(&usart_send[4+6*report_num],&nearbaseid_list[i],2);
 					memcpy(&usart_send[6+6*report_num],&nearbase_distlist[i],4);
@@ -568,13 +576,13 @@
 			}
 			
 		//	printf("%d,%d",temp_sync_timer2,temp_sync_timer1);
-//			#ifdef USART_INTEGRATE_OUTPUT		
-//				usart_send[2] = 4;//正常模式
-//				usart_send[3] = report_num*6+2;//正常模式
-//				checksum = Checksum_u16(&usart_send[2],report_num*6+2);
-//				memcpy(&usart_send[4+report_num*6],&checksum,2);
-//				UART_PushFrame(usart_send,6+report_num*6);
-//			#endif
+			#ifdef USART_INTEGRATE_OUTPUT		
+				usart_send[2] = 4;//正常模式
+				usart_send[3] = report_num*6+2;//正常模式
+				checksum = Checksum_u16(&usart_send[2],report_num*6+2);
+				memcpy(&usart_send[4+report_num*6],&checksum,2);
+				UART_PushFrame(usart_send,6+report_num*6);
+			#endif
 //			if(mainbase_lost_count>5)
 //			{
 //				//tag_state=DISCPOLL;
@@ -636,6 +644,8 @@
 			//slottime=ceil((nearbase_num+2)*0.4)+2;
 			tyncpoll_time=tagslotpos*slottime;
 			tag_state=NEARPOLL;
+		}else{
+				tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
 		}
 	}else{
 			tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
@@ -661,8 +671,9 @@
 				NearPoll();
 			break;
 	}
-	current_slotnum++;
+
 	SetNextPollTime(tyncpoll_time);
+	g_start_send_flag = 0;		
 	GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);	
 }
 

--
Gitblit v1.9.3