From be85d5e358df89b9dca87e82fd08804135114e25 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期六, 15 三月 2025 15:08:11 +0800 Subject: [PATCH] 修改了标签上传逻辑 --- keil/uwb_app.c | 57 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 33 insertions(+), 24 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index 1a2af2b..52b8d3c 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -11,7 +11,7 @@ #include "lora_1268.h" #include "PCA9555.h" -#define TAG_KEEPTIMES 30 +#define TAG_KEEPTIMES 20 #define REPORT_TAG_KEEPTIMES 1 #define GROUP_NUM 3 @@ -279,6 +279,7 @@ uint16_t REV_POLL_NUM; uint16_t REPLY_POLL_NUM; uint16_t ERR_RX_NUM; +uint8_t send_qiangzhan_NUM; static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report) { uint8_t valid_sts=0; // Power off radio @@ -326,19 +327,19 @@ /* UWB_BD_ERR Preamble detection error */ /* UWB_TO_ERR Receive timeout */ /* UWB_STS_ERR STS error */ - temp_count= phy_timer_count_get(); + temp_count= phy_timer_count_get(); memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T)); rx_length = 0; ERR_RX_NUM++; UWB_STATE=UWB_STATE_IDLE; - if(UWB_STATE==UWB_STATE_IDLE) - { - UWB_STATE=UWB_RX_STATE_BUSY; - OpenUWB();//再次开启UWB接收 - } +// if(UWB_STATE==UWB_STATE_IDLE) +// { +// UWB_STATE=UWB_RX_STATE_BUSY; +// OpenUWB();//再次开启UWB接收 +// } // OpenUWB();//再次开启UWB接收 } -// OpenUWB();//再次开启UWB接收 + OpenUWB();//再次开启UWB接收 } uint16_t TX_CALL_POLL_NUM; /* TX done process handler. */ @@ -353,10 +354,15 @@ temp_count= phy_timer_count_get(); temp_internal=temp_count; - resp_tx_num++; + TX_CALL_POLL_NUM++; + if(send_qiangzhan_NUM) + { + send_qiangzhan_NUM=0; + resp_tx_num++; + } UWB_STATE=UWB_RX_STATE_BUSY; - OpenUWB();//再次开启UWB接收 +// OpenUWB();//再次开启UWB接收 //gpio_pin_clr(IO_PIN_5); //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num); } @@ -447,6 +453,7 @@ //uint32_t timeceshi2; uint8_t position; +uint16_t response_num; uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos)//根据自己是否为新基站定制消息去发送,根据是否抢占判断 { temp_count2=poll_rx_en_start_u32; @@ -478,12 +485,11 @@ memcpy(&send_buffer[RESP_MSG_ANC_DISTOFFSET],&disoffset,2);//差个修正offset,修正有符号但是这个com表为无符号的,传过去直接赋给Int16_t相当于还原了 temp_resp_i64=resp_tx_ts_i64; temp_count3= phy_timer_count_get(); -// temp_rx=uwb_rx(buf_1,0,10); -// CloseUWB(); -// UWB_STATE==UWB_TX_STATE_BUSY; -// gpio_pin_set(IO_PIN_1); -// gpio_pin_clr(IO_PIN_1); - flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小 + UWB_STATE==UWB_TX_STATE_BUSY; + response_num++; + + flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小 + tagofflinetime[taglist_pos] = 0;//更新标签通信 temp_count1=phy_timer_count_get(); @@ -702,7 +708,7 @@ { uint16_t i; for(i=0; i<taglist_num; i++) { - if(memcmp(&tagid,&tagid_list[i],2)==0) + if(memcmp(&tagid,&tagid_list[i],2)==0) return 1; } return 0; @@ -772,7 +778,7 @@ // } UWBIdleTask(); } -//uint16_t REV_RX_NUM; + //uint16_t REV_POLL_NUM; //uint16_t REPLY_POLL_NUM; int Anchor_App(void) @@ -801,12 +807,13 @@ memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2); if(tempid==dev_id) { + Anchor_RecNearPoll(i); tagdist_list[taglist_pos]=rec_ancdistlist[i]; if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中 { //tempid==dev_id 说明基站下发测距报文有这个标签的信息 taglist_num++; //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况 - REPLY_POLL_NUM++; + tagid_list[taglist_pos] = tag_id_recv; } break; @@ -814,15 +821,17 @@ } if((i==rec_nearbase_num&&taglist_pos==taglist_num)||(rec_nearbase_num==0&&!ExistInTagList(tag_id_recv)))//当基站不在标签列表中,标签也不在基站列表中时,随机找个时间片回复基站。 { + REPLY_POLL_NUM++; + send_qiangzhan_NUM=1; Anchor_RecNearPoll(rec_nearbase_num); } } else{ - if(UWB_STATE==UWB_STATE_IDLE) - { - UWB_STATE=UWB_RX_STATE_BUSY; - OpenUWB(); - } +// if(UWB_STATE==UWB_STATE_IDLE) +// { +// UWB_STATE=UWB_RX_STATE_BUSY; +// OpenUWB(); +// } } -- Gitblit v1.9.3