51uwb.cn

 找回密码
 立即注册
查看: 2195|回复: 1
打印 上一主题 下一主题

上位机标签与基站的距离是怎么得到的

[复制链接]

10

主题

31

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
跳转到指定楼层
楼主
发表于 2023-4-13 18:04:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上位机里面有一段代码是收到串口传过来的数据后就进行解析,然后可以得到标签与基站的距离,这个解析的原理是什么?
  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. }
复制代码


回复

使用道具 举报

35

主题

1053

帖子

4523

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4523
沙发
发表于 2023-4-13 22:27:06 | 只看该作者
  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;
复制代码

匹配字符串
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

bphero Inc.  

GMT+8, 2024-11-22 16:14 , Processed in 0.012939 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表