From 5bdc868b2ef673bbce5e0abbc2a7bf8f7f8fa55e Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期二, 27 四月 2021 11:59:30 +0800 Subject: [PATCH] V2.17 增加基站汇总模式,青岛待测试 --- 源码/核心板/Src/application/dw_app.c | 70 ++++++++++++++++++++++++++-------- 1 files changed, 53 insertions(+), 17 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 2227003..c9eaf86 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" @@ -165,7 +165,7 @@ } u16 tag_time_recv[TAG_NUM_IN_SYS]; -u8 usart_send[100],usart_send_anc[100]; +u8 usart_send[150],usart_send_anc[100]; u8 battary,button,tag_frequency,tag_slotpos; extern uint8_t g_pairstart; void tag_sleep_configuraion(void) @@ -863,8 +863,7 @@ dwt_writetxfctrl(sizeof(tx_resp_msg), 0);//设定发送长度 result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 - battary = rx_buffer[BATTARY_IDX]; - button = rx_buffer[BUTTON_IDX]; + frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; if(result==0) { @@ -918,6 +917,7 @@ uint32_t time_monitor[10]; extern uint16_t configremotetagID; extern u8 remotetag_paralen; +u8 finalsend=0; u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,waittagconfig_reponse,motorstate=0; u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase 1 first near_base { @@ -947,6 +947,7 @@ tx_nearresp_msg[MESSAGE_TYPE_IDX]=NEAR_RESPONSE; tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; waittagconfig_reponse=0; + finalsend = 0; if(pwtag.remain_time>0) {uint8_t i; for(i=0;i<pwtag.groupnum;i++) @@ -964,11 +965,14 @@ dwt_writetxdata(24+remotetag_paralen, tx_nearresp_msg, 0);//写入发送数据 dwt_writetxfctrl(24+remotetag_paralen, 0);//设定发送长度 remotesend_state=0; + finalsend = 1; break; } } + } - }else{ + if(finalsend == 0) + { dwt_writetxdata(24, tx_nearresp_msg, 0);//写入发送数据 dwt_writetxfctrl(24, 0);//设定发送长度 } @@ -983,11 +987,6 @@ result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 - battary = rx_buffer[BATTARY_IDX]; - button = rx_buffer[BUTTON_IDX]; - frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; - tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; - tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; if(result==0) { while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_sync_flag)///不断查询芯片状态直到接收成功或者出现错误 @@ -1069,7 +1068,7 @@ usart_send[18] = tag_slotpos; checksum = Checksum_u16(&usart_send[2],17); memcpy(&usart_send[19],&checksum,2); - UART_PushFrame(usart_send,21); + // UART_PushFrame(usart_send,21); #else memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2); memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4); @@ -1083,9 +1082,9 @@ misdist_num[taglist_pos]++; } } - if(rx_buffer[TAGCONFIGSUCCESS_INDEX]==1&&waittagconfig_reponse) + if(rx_buffer[TAGCONFIGSUCCESS_INDEX]==1) { - waittagconfig_reponse = 0; + remotesend_state = 0; usart_send[2] = 7;//正常模式 usart_send[3] = 5;//数据段长度 @@ -1103,12 +1102,15 @@ dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); } } - +extern int32_t intheight; extern u16 synclost_count; uint32_t current_syncid=0xffffffff,synclost_timer; extern u8 flag_syncbase,waitsync_flag; u8 tagpos_rec[50],tagpos_send[50],ancidlist_num; u16 ancidlist_rec[20],ancidlist_send[20]; +u16 recnearbaselist_id[30]; +int32_t recnearbaselist_dist[30]; +int16_t rec_tagheight; void Anchor_App(void) { @@ -1213,7 +1215,8 @@ } break; case NEAR_POLL: - // GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); + // GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); + memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); taglist_pos=CmpTagInList(tag_id_recv); if(taglist_pos==taglist_num) @@ -1226,10 +1229,42 @@ new_tagid=0; } tagofflinetime[taglist_pos]=0; - temp_tagpos=round((float)(sync_timer%g_com_map[COM_INTERVAL])/slottime); + temp_tagpos=round((float)(sync_timer%g_com_map[COM_INTERVAL])/slottime); tagpos_rec[(u8)temp_tagpos]=1; rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX]; - + battary = rx_buffer[BATTARY_IDX]; + button = rx_buffer[BUTTON_IDX]; + frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; + tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; + tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; + ////////////////基站汇总模式数据 + memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6+4],2); + memcpy(&recnearbaselist_id,&rx_buffer[NEARBASEID_INDEX],rec_nearbase_num*2); + memcpy(&recnearbaselist_dist,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*2],rec_nearbase_num*4+4); + usart_send[2] = 0x0c;//正常模式 + usart_send[3] = 15+8*(rec_nearbase_num+1);//数据段长度 + memcpy(&usart_send[4],&tag_id_recv,2); + usart_send[6] = rx_buffer[SEQUENCE_IDX]; + usart_send[7] = rx_buffer[SEQUENCEH_IDX]; + usart_send[8] = battary; + usart_send[9] = button; + memcpy(&usart_send[10],&rec_tagheight,2); + usart_send[12] = tag_frequency; + usart_send[13] = tag_slotpos; + usart_send[14] = 0; + usart_send[15] = 0; + usart_send[16] = rec_nearbase_num+1; + memcpy(&usart_send[17],&anc_id_recv,2); + memcpy(&usart_send[19],&recnearbaselist_id,2*rec_nearbase_num); + memcpy(&usart_send[19+rec_nearbase_num*2],&recnearbaselist_dist,4*rec_nearbase_num+4); + + checksum = Checksum_u16(&usart_send[2],23+8*rec_nearbase_num); + memcpy(&usart_send[25+8*rec_nearbase_num],&checksum,2); + UART_PushFrame(usart_send,27+8*rec_nearbase_num); + + ////////////////////////////////////////////////////////////// + + GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); if(anc_id_recv==dev_id) { @@ -1254,7 +1289,8 @@ // seize_anchor=1; //抢占anchor // Anchor_RecNearPoll(i); // } - +// if(tag_id_recv==0x4008) +// printf("标签高度: %d,基站高度: %d,高度差: %d. \r\n",rec_tagheight,intheight,intheight-rec_tagheight); break; default: -- Gitblit v1.9.3