chen
2025-08-08 7b81c9f59686b683618cf95bd7f51951cdb1afed
keil/uwb_app.c
@@ -472,7 +472,7 @@
//void TagListUpdate(void)
//{
//    uint8_t i,j=0;
//    for(i=0; i<anchordata_num; i++)
//    for(i=0; i<taglist_num; i++)
//    {
//        if(tagofflinetime[i]++<QUIT_SLOT_TIME)
//        {
@@ -480,18 +480,18 @@
//            tagofflinetime[j++]=tagofflinetime[i];
//        }
//    }
//    anchordata_num=j;
//    taglist_num=j;
//}
void TagListUpdate(void)
{
uint16_t i,j=0,k=0;
    for(i=0; i<taglist_num; i++)
    {
          if(tagofflinetime[i]++<TAG_KEEPTIMES)
          if(tagofflinetime[i]++<10)
        {
            tagid_list[j]=tagid_list[i];
            tagdist_list[j] = tagdist_list[i];
                  anchordata_bat[j]=anchordata_bat[i];//电量随之更新
         anchordata_bat[j]=anchordata_bat[i];//电量随之更新
            anchordata_version[j]=anchordata_version[i];
            tagofflinetime[j++]=tagofflinetime[i];
        }
@@ -651,8 +651,10 @@
   if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
      uwb_losttimer=g_com_map[UWB_RNAGE_TIME]+1;//防止溢出
}
uint8_t uwbsend[200];
uint8_t uwbsend[1000];
static uint8_t usart_send[1024];
extern uint8_t bat_percent;
uint16_t tagseq=0;
void UWBIdleTask(void)
{
@@ -681,10 +683,10 @@
    
    }
    
        if(taglist_num>6)
        {
        taglist_num=6;
        }
//        if(taglist_num>6)
//        {
//        taglist_num=6;
//        }
      uwbtasktimer = HIDO_TimerGetTick();
      UWBOneSecondTask();
        uwbsend[0]=0x55;
@@ -694,11 +696,42 @@
        memcpy(&uwbsend[4],&tagid_list,taglist_num*2);
        memcpy(&uwbsend[4+taglist_num*2],&tagdist_list,taglist_num*2);
        memcpy(&uwbsend[4+taglist_num*4],&anchordata_version,taglist_num*2);
        uart_send(UART_ID0, uwbsend,taglist_num*6+4, NULL);
        taglist_num=0;
//        for(int i=0;i<anchordata_num;i++)
      //新增URT协议
if(taglist_num>20) //最多上传20个基站数据,距离最近的20个
{taglist_num = 20;
}
usart_send[0] = 0x55;//正常6模式
usart_send[1] = 0xAA;//正常模式
usart_send[2] = 0x12;//正常模式
usart_send[3] = 15+5*(taglist_num);//数据段长度
memcpy(&usart_send[4],&g_com_map[DEV_ID],2);
usart_send[6] = tagseq;
usart_send[7] = (tagseq++)>>8;
usart_send[8] = bat_percent;
//usart_send[9] = userkey_state|stationary_flag<<1|gotosleep_flag<<2|motor_flag<<5|uwb_state<<6;
      usart_send[9]=0;
// memcpy(&usart_send[10],&rec_tagheight,2);
usart_send[12] = 0;
usart_send[13] = 0;
usart_send[14] = 0;
usart_send[15] = 0;
usart_send[16] = taglist_num;
uint16_t checksum;
memcpy(&usart_send[17],&tagid_list,2*taglist_num);
memcpy(&usart_send[17+taglist_num*2],&tagdist_list,2*taglist_num);
memcpy(&usart_send[17+taglist_num*4],&anchordata_bat,taglist_num);
checksum = Checksum_u16(&usart_send[2],15+5*taglist_num);
memcpy(&usart_send[17+5*taglist_num],&checksum,2);
uart_send(UART_ID0, &usart_send,19+5*taglist_num, NULL);
while(uart_tx_in_progress(UART_ID0));
      //URT输出协议
//        uart_send(UART_ID0, uwbsend,taglist_num*6+4, NULL);
      //  taglist_num=0;
//        LOG_INFO(TRACE_MODULE_APP,"当前测距基站数量%d.\r\n",taglist_num);
//        for(int i=0;i<taglist_num;i++)
//        {
//        LOG_INFO(TRACE_MODULE_APP,"当前测距基站ID:%x,距离:%d.\r\n",tagid_list[0],tagdist_list[0]);
//        LOG_INFO(TRACE_MODULE_APP,"当前测距基站ID:%x,距离:%d.\r\n",tagid_list[i],tagdist_list[i]);
//        }
   }
}
@@ -823,7 +856,7 @@
         current_count=phy_timer_count_get();
         while(mac_is_busy())
        {
                  Calibration_Time();
//                  Calibration_Time();
            IdleTask();
            current_count=phy_timer_count_get();
            if(current_count>end_receive_count&&current_count<end_receive_count+HALF_SECOND_TIME)