From 737a981dc473a1e6018bd7e0db35fee69e5b3b01 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期五, 05 五月 2023 15:37:53 +0800
Subject: [PATCH] 初步测试完成

---
 源码/核心板/Src/application/dw_app.c |   70 ++++++++++++++++++++++++++++++-----
 1 files changed, 60 insertions(+), 10 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 4f01d7a..21d2483 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,
@@ -438,6 +438,7 @@
 									}
 									TIM3->CNT=tmp_time;
 								}
+                                    if(g_com_map[DEV_ROLE])
 									current_slotnum=temp_sync_timer1/g_com_map[COM_INTERVAL];
 //									if(tagslotpos>max_slotpos)
 //										tagslotpos=tagslotpos%(max_slotpos+1);
@@ -860,6 +861,52 @@
 u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,getrange_success=0;
 int32_t filter_dist,filter_speed;
 u8 newmeasure,recpoll_len;
+uint32_t current_syncid=0xffffffff,synclost_timer;
+extern uint8_t flag_syncbase;
+uint8_t tagpos_rec[50],tagpos_send[50],ancidlist_num;
+uint16_t ancidlist_rec[20],ancidlist_send[20],rec_ancidlist[20],rec_ancdistlist[20];
+uint16_t samegroup_ancid,anc_mount_dist;
+uint8_t getvaluetimes = 0;
+uint16_t first_dist,second_dist,delta_dist;
+int16_t tag_angle[TAG_NUM_IN_SYS];
+float p_dist;
+void AngleCalculate(void)
+{
+    getvaluetimes = 0;
+    for(uint8_t i=0;i<rec_nearbase_num;i++)
+    {
+        if(rec_ancidlist[i]==dev_id)
+        {
+            
+            first_dist = rec_ancdistlist[i];
+            if(first_dist!=0xffff)
+            {
+                getvaluetimes++;
+            }
+        }else if(rec_ancidlist[i]==samegroup_ancid)
+        {
+            
+            second_dist = rec_ancdistlist[i];
+            if(second_dist != 0xffff)
+            {
+                getvaluetimes++;
+            }
+        }
+    }
+    if(getvaluetimes==2)
+    {
+       p_dist = ((float)first_dist-(float)second_dist)/anc_mount_dist;
+        if(p_dist>1)
+        {
+            p_dist = 1;
+        }else if(p_dist<-1)
+        {
+            p_dist = -1;
+        }
+       tag_angle[taglist_pos] = -asin(p_dist)*57.3; 
+    }
+}
+extern int16_t alarm_angle;
 u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
 {
 	u8 motorstate;
@@ -885,22 +932,26 @@
 				memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
 			}
 			motorstate =0;
-		if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE2])
+		
+            if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]||tagdist_list[taglist_pos]==0)
 			{
-				if(flag_tag_distsmooth[taglist_pos])
+				motorstate =0;
+			}else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE2])
+			{
+				if(flag_tag_distsmooth[taglist_pos]&&tag_angle[taglist_pos]>alarm_angle)
 				{motorstate =2;
 				}else{
 					motorstate =0;
 				}
 			}else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE3])
 			{
-				if(flag_tag_distsmooth[taglist_pos])
+				if(flag_tag_distsmooth[taglist_pos]&&tag_angle[taglist_pos]>alarm_angle)
 				{motorstate =1;
 					}else{
 					motorstate =0;
 				}
 			}
-      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]=motorstate;//(remotesend_state<<4)|motorstate;
@@ -1007,6 +1058,7 @@
                         }else{
                             g_Tagdist[taglist_pos]= 0x2ffff;
                         }
+                         AngleCalculate();
 				#ifdef USART_SINGLE_OUTPUT
 					usart_send[2] = 1;//正常模式 
 					usart_send[3] = 17;//数据段长度
@@ -1019,7 +1071,7 @@
 					usart_send[13] = battary;
 					usart_send[14] = button;
 					usart_send[15] = firstpath_power;
-					usart_send[16] = rx_power;
+					usart_send[16] = tag_angle[taglist_pos];
 					checksum = Checksum_u16(&usart_send[2],17);
 					memcpy(&usart_send[19],&checksum,2);
 					UART_PushFrame(usart_send,21);
@@ -1038,11 +1090,9 @@
 					//printf("%x/n",status_reg);
 				dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
 			}
+           
 }
-uint32_t current_syncid=0xffffffff,synclost_timer;
-extern u8 flag_syncbase;
-u8 tagpos_rec[50],tagpos_send[50],ancidlist_num;
-u16 ancidlist_rec[20],ancidlist_send[20],rec_ancidlist[20],rec_ancdistlist[20];
+
 void Anchor_App(void)
 {
 	

--
Gitblit v1.9.3