|
UWB 基站将测得的距离信息通过串口发送给上位机,上位机根据这些测距信息解算位置坐标, 需要统一规定信息的格式。
之前论坛里已经放过格式定义,请参见 链接
这里简单介绍下如果修改上位机的通信格式
用qt打开源码,找到RTLSClient.cpp 文件void RTLSClient::newData() ,下面的字符m 和 r 是通信的头标识- case 0:
- if(tmp=='m')
- usart_state=1;
- break;
- case 1:
- if(tmp=='r')
- {
- usart_state=2;
- data_pos =0;
- }
- break;
复制代码
在 void RTLSClient::ProcessData(void) 中可以找到将测得距离重新整合在一起
- 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);
- }
复制代码 trilaterateTag(TAG_ID, seq); 就是三边定位函数具体实现
|
|