From 6f05c0c8a8e5b4ccabc20cb75b57bd59ef145bcc Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期五, 17 三月 2023 18:32:38 +0800 Subject: [PATCH] 解决uwb测距 3个以上标签出错的bug。 --- Src/application/dw_app.c | 37 +++++++++++++++++++------------------ 1 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c index cbc0205..26abfec 100644 --- a/Src/application/dw_app.c +++ b/Src/application/dw_app.c @@ -304,7 +304,7 @@ freqlost_count = 0; } } - +u16 rec_nearbaseid,rec_nearbasepos; void NearPoll(void) { @@ -340,6 +340,7 @@ tx_near_msg[TAGCONFIGSUCCESS_INDEX] =0; para_update = 0; + get_newbase = 0; flag_finalsend=0; flag_rxon=1; flag_getresponse=0; @@ -397,7 +398,7 @@ dwt_setrxtimeout(0);//DELAY_BETWEEN_TWO_FRAME_UUS*(nearbase_num+1-recbase_num)+10);//设定接收超时时间,0位没有超时时间 dwt_rxenable(0);//打开接收 if (rx_buffer[MESSAGE_TYPE_IDX] == MBX_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)&&rx_buffer[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据 - { u16 rec_nearbaseid,rec_nearbasepos; + { poll_tx_ts = get_tx_timestamp_u64(); //获得POLL发送时间T1 resp_rx_ts = get_rx_timestamp_u64(); //获得RESPONSE接收时间T4 recbase_num++; @@ -548,6 +549,8 @@ { last_lpcount+= HAL_LPTIM_ReadCounter(&hlptim1)%(g_com_map[COM_INTERVAL]*16); } + if(nearbase_num==4) + {nearbase_num=4;} last_nearbase_num = next_nearbase_num; for(i=0;i<last_nearbase_num-1;i++) { @@ -571,26 +574,24 @@ } report_num=0; + if(last_nearbase_num>4) + { + last_nearbase_num = 5; + } for (i=0;i<last_nearbase_num;i++) { nearbaseid_list[i]=true_nearbase_idlist[i]; nearbase_distlist[i]=true_nearbase_distlist[i]; - 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); - report_num++; - } } - #ifdef USART_INTEGRATE_OUTPUT - usart_send[0] = 0x55; - usart_send[1] = 0xAA; - 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); - USART_puts(usart_send,6+report_num*6); - #endif +// #ifdef USART_INTEGRATE_OUTPUT +// usart_send[0] = 0x55; +// usart_send[1] = 0xAA; +// 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); +// USART_puts(usart_send,6+report_num*6); +// #endif for(i=0;i<MAX_NEARBASE_NUM;i++) { @@ -605,7 +606,7 @@ if(memcmp(&calCRC,&rec_remotepara[5],2)==0) { uint8_t pack_msgtype,pack_index,pack_length; pack_msgtype = rec_remotepara[0]; - pack_index = rec_remotepara[1]*2; + pack_index = rec_remotepara[1]; pack_length = rec_remotepara[2]; if(pack_msgtype==2) { -- Gitblit v1.9.3