51uwb.cn

标题: 上位机标签与基站的距离是怎么得到的 [打印本页]

作者: itmozun    时间: 2023-4-13 18:04
标题: 上位机标签与基站的距离是怎么得到的
上位机里面有一段代码是收到串口传过来的数据后就进行解析,然后可以得到标签与基站的距离,这个解析的原理是什么?
  1. //当接收到有效数据包后,对数据包里的数据进行解析,
  2. //解析主要内容有3个距离信息(如果是4基站定位有4个距离信息),标签的ID以及其它信息。
  3. void mainwindow::ProcessData(void)
  4. {
  5.     uint8_t frame_type;
  6.     uint8_t TAG_ID,seq;
  7.     uint16  range[4],lnum;
  8.     frame_type = frame[0];

  9.     TAG_ID = frame[1];
  10.     lnum = frame[2]|frame[3]<<8;
  11.     seq = lnum&0xff;


  12.     if(frame_type==1)
  13.     {
  14.         range[0]=frame[6]|frame[7]<<8;
  15.         range[1]=frame[8]|frame[9]<<8;
  16.         range[2]=frame[10]|frame[11]<<8;
  17.         range[0] = range[0]*10;
  18.         range[1] = range[1]*10;
  19.         range[2] = range[2]*10;


  20.         if(_useAutoPos) //if Anchor auto positioning is enabled then process Anchor-Anchor TWR data
  21.         {
  22.             processAnchRangeReport(0, 1, range[0], lnum, seq);
  23.             processAnchRangeReport(0, 2, range[1], lnum, seq);
  24.             processAnchRangeReport(1, 2, range[2], lnum, seq);
  25.         }
  26.     }
  27.     else if(frame_type == 2)
  28.     {
  29.         range[0]=frame[4]|frame[5]<<8;
  30.         range[1]=frame[6]|frame[7]<<8;
  31.         range[2]=frame[8]|frame[9]<<8;
  32.         range[3]=frame[10]|frame[11]<<8;

  33.         ra[0] = range[0]*10;//解码
  34.         ra[1] = range[1]*10;
  35.         ra[2] = range[2]*10;
  36.         ra[3] = range[3]*10;


  37.         processTagRangeReport(0, TAG_ID, range[0]*10, lnum, seq);//校正
  38.         processTagRangeReport(1, TAG_ID, range[1]*10, lnum, seq);
  39.         processTagRangeReport(2, TAG_ID, range[2]*10, lnum, seq);
  40.         processTagRangeReport(3, TAG_ID, range[3]*10, lnum, seq);


  41.         trilaterateTag(TAG_ID, seq);//定位
  42.         //qDebug() << range[0];
  43.         //这个是解算标签坐标的入口函数,在这个函数会判断是有几个基站距离,然后调用calculateTagLocation 完成解算
  44.     }

  45. }
复制代码



作者: 蓝点无限    时间: 2023-4-13 22:27
  1.         range[0]=frame[4]|frame[5]<<8;
  2.         range[1]=frame[6]|frame[7]<<8;
  3.         range[2]=frame[8]|frame[9]<<8;
  4.         range[3]=frame[10]|frame[11]<<8;

  5.         ra[0] = range[0]*10;//解码
  6.         ra[1] = range[1]*10;
  7.         ra[2] = range[2]*10;
  8.         ra[3] = range[3]*10;
复制代码

匹配字符串




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3