From 650a51bb30a4c8c97898648f72d826fbc1a8a59a Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期六, 16 五月 2020 16:27:13 +0800 Subject: [PATCH] 未测试,修改成多次丢失才切换模式 --- 源码/核心板/Src/application/dw_app.c | 36 ++++++++++++++++++++---------------- 1 files changed, 20 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 4c15ddf..3f127fc 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" @@ -202,7 +202,7 @@ u16 anclist_num=0,anclist_pos; //list 总数量和当前位置 u16 ancid_list[TAG_NUM_IN_SYS]; -u8 nearbase_num=0; +u8 nearbase_num=0,last_nearbase_num,next_nearbase_num; 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]; uint8_t trygetnearmsg_times; @@ -266,11 +266,12 @@ dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); tag_succ_times = 0; GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET); - if(nearbase_num>=MAX_NEARBASE_NUM) + if(next_nearbase_num>=MAX_NEARBASE_NUM) { - nearbase_num = MAX_NEARBASE_NUM-1; + next_nearbase_num = MAX_NEARBASE_NUM-1; } //nearbase_num=0; + last_nearbase_num=next_nearbase_num; recbase_num=0; tx_nearpoll_msg[BATTARY_IDX] = Get_Battary(); tx_nearpoll_msg[BUTTON_IDX] = !READ_KEY0; @@ -282,9 +283,6 @@ dwt_writetxdata(13+2*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 dwt_writetxfctrl(13+2*nearbase_num, 0);//设置超宽带发送数据长度 dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 - - for(i=0;i<MAX_NEARBASE_NUM;i++) - exsistbase_list[i]=0; flag_finalsend=0; flag_rxon=1; @@ -334,9 +332,9 @@ memcpy(&rec_nearbaseid,&rx_buffer[ANCHOR_ID_IDX],2); if(nearbase_num==0) { - nearbaseid_list[0]=rec_nearbaseid; - nearbase_num=1; - memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); + nearbaseid_list[0]=rec_nearbaseid; + nearbase_num=1; + memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); } if(rec_nearbaseid==nearbaseid_list[0]) { @@ -345,7 +343,7 @@ memcpy(&temp_sync_timer1,&rx_buffer[ANCTIMEMS],2); memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2); sync_timer=temp_sync_timer1; - exsistbase_list[0]=1; + exsistbase_list[0]=10; //// memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2); // tmp_time=tmp_time+450; @@ -363,7 +361,7 @@ // tyncpoll_time=(tagslotpos-1)*slottime; //////////////////////////// rec_nearbasepos=0; - exsistbase_list[rec_nearbasepos]=1; + exsistbase_list[rec_nearbasepos]=10; memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); nearbase_distlist[rec_nearbasepos]=temp_dist; @@ -406,7 +404,7 @@ memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); } - exsistbase_list[rec_nearbasepos]=1; + exsistbase_list[rec_nearbasepos]=10; memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); nearbase_distlist[rec_nearbasepos]=temp_dist; @@ -465,19 +463,21 @@ } tyncpoll_time=(random_value%max_slotpos)*slottime; } - for(i=0;i<MAX_NEARBASE_NUM;i++) + next_nearbase_num=0; + for(i=0;i<last_nearbase_num;i++) { - if(exsistbase_list[i]==1) + if(exsistbase_list[i]-->0) { + next_nearbase_num++; true_nearbase_idlist[j]=nearbaseid_list[i]; true_nearbase_distlist[j++]=nearbase_distlist[i]; } } - for(i=0;i<nearbase_num-1;i++) + for(i=0;i<last_nearbase_num-1;i++) { - for(j=0;j<nearbase_num-1;j++) + for(j=0;j<last_nearbase_num-1;j++) { if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1]) { @@ -503,6 +503,10 @@ report_num++; } } + for(i=0;i<MAX_NEARBASE_NUM;i++) + { + nearbase_distlist[i]=0x1ffff; + } // printf("%d,%d",temp_sync_timer2,temp_sync_timer1); #ifdef USART_INTEGRATE_OUTPUT usart_send[2] = 4;//正常模式 -- Gitblit v1.9.3