51uwb.cn
标题:
上位机标签与基站的距离是怎么得到的
[打印本页]
作者:
itmozun
时间:
2023-4-13 18:04
标题:
上位机标签与基站的距离是怎么得到的
上位机里面有一段代码是收到串口传过来的数据后就进行解析,然后可以得到标签与基站的距离,这个解析的原理是什么?
//当接收到有效数据包后,对数据包里的数据进行解析,
//解析主要内容有3个距离信息(如果是4基站定位有4个距离信息),标签的ID以及其它信息。
void mainwindow::ProcessData(void)
{
uint8_t frame_type;
uint8_t TAG_ID,seq;
uint16 range[4],lnum;
frame_type = frame[0];
TAG_ID = frame[1];
lnum = frame[2]|frame[3]<<8;
seq = lnum&0xff;
if(frame_type==1)
{
range[0]=frame[6]|frame[7]<<8;
range[1]=frame[8]|frame[9]<<8;
range[2]=frame[10]|frame[11]<<8;
range[0] = range[0]*10;
range[1] = range[1]*10;
range[2] = range[2]*10;
if(_useAutoPos) //if Anchor auto positioning is enabled then process Anchor-Anchor TWR data
{
processAnchRangeReport(0, 1, range[0], lnum, seq);
processAnchRangeReport(0, 2, range[1], lnum, seq);
processAnchRangeReport(1, 2, range[2], lnum, seq);
}
}
else if(frame_type == 2)
{
range[0]=frame[4]|frame[5]<<8;
range[1]=frame[6]|frame[7]<<8;
range[2]=frame[8]|frame[9]<<8;
range[3]=frame[10]|frame[11]<<8;
ra[0] = range[0]*10;//解码
ra[1] = range[1]*10;
ra[2] = range[2]*10;
ra[3] = range[3]*10;
processTagRangeReport(0, TAG_ID, range[0]*10, lnum, seq);//校正
processTagRangeReport(1, TAG_ID, range[1]*10, lnum, seq);
processTagRangeReport(2, TAG_ID, range[2]*10, lnum, seq);
processTagRangeReport(3, TAG_ID, range[3]*10, lnum, seq);
trilaterateTag(TAG_ID, seq);//定位
//qDebug() << range[0];
//这个是解算标签坐标的入口函数,在这个函数会判断是有几个基站距离,然后调用calculateTagLocation 完成解算
}
}
复制代码
作者:
蓝点无限
时间:
2023-4-13 22:27
range[0]=frame[4]|frame[5]<<8;
range[1]=frame[6]|frame[7]<<8;
range[2]=frame[8]|frame[9]<<8;
range[3]=frame[10]|frame[11]<<8;
ra[0] = range[0]*10;//解码
ra[1] = range[1]*10;
ra[2] = range[2]*10;
ra[3] = range[3]*10;
复制代码
匹配字符串
欢迎光临 51uwb.cn (http://51uwb.cn/)
Powered by Discuz! X3.3