高精度支持:
1.需要支持NTRIP协议到地基差分服务器下载差分数据并发送到北斗定位芯片串口。
2.NTRIP协议:
连接到差分服务器,建立TCP套接字,获取Source table,选择RD23表,发送用户名、密码等信息,重新连接后下载数据。
3以下代码供参考使用
获取Source table
void MyTcpSocket::getsourcetable()
{
// QByteArray data;
// QBuffer buffer;
// QDataStream stream( &data, QIODevice::WriteOnly );
// stream << (quint32)buffer.data().size();
// stream <<“User:”<<“jsd\r\n”;
// stream <<“date:”<<“201412112\r\n”;
// std::stringstream ss;
// ss <<“User:”<<“jsd\r\n”;
// ss <<“date:”<<“201412112\r\n”;
// std::string str = ss.str ();
// std::cout <<str<<std::endl;
// data.append( buffer.data() );
std::stringstream request_stream;
request_stream << “GET " << “/” << " HTTP/1.0\r\n”;
request_stream<<“User-Agent: NTRIP **client namepclient/20180324";
request_stream << “Accept: /\r\n”;
request_stream << “Connection: close\r\n\r\n”;
request_stream << “Authorization: Basic YmRxdDoxMjMxMjM=”;
std::string str = request_stream.str();
socket->write(str.c_str());
}
void MyTcpSocket::sendrtcm21mountpoint(){
std::stringstream request_stream;
request_stream << “GET " << “/RTCM21” << " HTTP/1.0\r\n”;
request_stream<<“User-Agent: NTRIP JsdTechcomntripclient/20150324”;
request_stream << “Accept: /\r\n”;
request_stream << “Connection: close\r\n\r\n”;
request_stream << “Authorization: Basic YmRxdDoxMjMxMjM=”;
std::string str = request_stream.str();
socket->write(str.c_str());
}
发送GPPA语句到服务器,
void MyTcpSocket::sendGPPARequest(){
std::stringstream request_stream;
request_stream <<"$GPGGA,073309,3030.16152,N,11425.59738,E,4,10,1,200,M,1,M,6,060\r\n”;
std::string str = request_stream.str();
socket->write(str.c_str());
}
然后把网络接收的数据写到芯片串口。
观察芯片输出数据,伪距差分定位标识为真时表示协议运行成功。
GLL=8
isUpdate = 1, isPositioned = 1
start GGA,094720.000,3029.063183,N,11425.836284,E,2,15,2.813,69.252,M,0,M,1,09736A
$GNGLL,3029.063183,N,11425.836284,E,094720.000,A,D4D
$GNGSA,A,3,30,23,1,28,7,11,22,8,9,27,4.472,2.813,3.476*2D
$GNGSA,A,3,162,165,1
end of pstart of gga