连接NTrip服务器一connect就失败

ntrip服务器是需要验证的,

需要2步,

第一步connect,

第二步发送check cmd

这二步是连续的,要不然服务器就会拒绝,显示一连就失败。

由于年初连过一次ntrip服务器,由于间隔久了,不记得踩过的坑了。

这不 年尾又要去使用这块功能,重新添加了下 代码,由于一个忽略,折腾了2天才找到原因

年初写的一个版本tcpclient类里有做修改,但是这个修改没有在目前使用的项目中改过来,所以一直没有发现是这个原因。

由于ntrip服务使用qtconcurrent::run重启了一个线程去发送。

结果是在tcpclient类的SendMsg中未flush,造成未发到服务器,

所以如果不同线程间发送。注意要 flush。

bool DTSTcpClient::SendMsg(const char* msg, int nSize)

{
    if(NULL == pDataSocket){
        return false;
    }
    //QByteArray dataArr = msg;
    int rc = pDataSocket->write(msg,nSize);
    pDataSocket->flush();//专门为QThread中new socket 发送数据添加的

    qDebug()<<"write socket:"<<msg;

    if(rc != -1)
    {
        return true;
    }
    else
        return false;

}





//20210927
又一次在添加该功能后运行程 序 没成功。查看输出如下,显示发命令后 socket断开了。

 

 没看出来是哪的原因

使用第三方socket工具,连Ntrip服务后,随便 发送GGA,或者验证码,都会引起连接断开。。。

再次通过另一个软件验证那个千寻帐号竟然真连不上。。。


重新在一个测试demo上添加该功能 的代码:

 

 一连接就反回这个信息,然后也断开了,这个测试demo把里面的IP 地址和端口换成本机开启的一个tcpserver服务来测试,是可以连接的,说明socket是通的。

至于返回的那个可能是跟服务器验证有关,但是验证也做了。NND,原来是帐号写错了,这个帐号不行,换一个就可以了

 

换个帐号虽然验证通过了,不知道为什么,并没有再继续返回差分数据:

 跟以前搞的可以连通的程序对比了下,没看出什么问题,想破脑袋也没想出来 为啥不返回差分数据。。。。。

正要放弃时,突然再运行程序,就能收到差分了,我X,真没修改哪,之前改过的每次都运行了,也没有数据,为什么突然好了,还有没天理了

但是 这是个win下的demo, 在接收机里面使用,一连接服务端,随便 发个什么都会断开的,再用socket工具测试也一样。又出这毛病了。愁死了。

没办法最后再试试这个开发板里的socket是不是通的,费点劲模拟一个服务端,让他们在一个局域网内。再运行一下看看,也是通的,

不过仔细一看发现原因了:

服务端收到连接后会发现收到有一个:REG NtripClient ,就是这个消息引起的问题,Ntrip服务器首先收到的是验证信息,如果验证不通过就给你关闭,所以不要多发任何多余的东西。

 

 对应的代码里:多的玩意儿,赶紧删了

 

 

 

经验证:

1.模拟GGA的时间必须是UTC时间,不能用本地时间,否则不返回差分数据

2.给ntrip服务端 不要发送任何无关数据。

 

 

第二天再试,怎么还是会出现一连就断开的情况。。。郁闷。。。

(由于接收机中IP及用户帐号配置是在一个配置文件中添加的,给清空了,又手动添加一遍,把用户和密码写反了引起的。。。。)

posted @ 2020-12-18 15:54  伟大的厨师  阅读(582)  评论(0编辑  收藏  举报