zhyinch
2021-04-27 5bdc868b2ef673bbce5e0abbc2a7bf8f7f8fa55e
Ô´Âë/ºËÐİå/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)
         {
@@ -988,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)///不断查询芯片状态直到接收成功或者出现错误
@@ -1074,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);
@@ -1108,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)
{
   
@@ -1219,6 +1216,7 @@
      break;
         case NEAR_POLL:      
      //   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)
@@ -1234,6 +1232,38 @@
          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)
@@ -1259,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: