我正在寻求帮助,以了解如何开发完整的功能性NTRIP客户端以接收RTCM更正。
我现在在Windows 7上使用Python 3.4。在网上搜索了一些示例代码,并用它编写了一个基本的客户端。问题是...它不起作用。

我可以使用rtk更正服务。该服务已激活并且正在运行。

这是我的代码的一部分。

dummyNMEA = "$GPGGA,143741.356,7839.493,S,07627.626,W,0,00,,,M,,M,,*45"

username = my_username    #username for RTCM correction service
password = my_password    #password for RTCM correction service
port = 2101    #port for the service

'''Generate an encoding of the username:password for the service.
The string must be first encoded in ascii to be correctly parsed by the
base64.b64encode function.'''
pwd = base64.b64encode("{}:{}".format(username, password).encode('ascii'))

#The following decoding is necessary in order to remove the b' character that
#the ascii encoding add. Othrewise said character will be sent to the net and misinterpreted.
pwd = pwd.decode('ascii')

print("Header sending... \n")

header =\
"GET /mountpoint HTTP/1.1\r\n" +\
"Host my_host\r\n" +\
"Ntrip-Version: Ntrip/1.0\r\n" +\
"User-Agent: ntrip.py/0.1\r\n" +\
"Accept: */*" +\
"Connection: close\r\n" +\
"Authorization: Basic {}\r\n\r\n".format(pwd)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((my_host,int(port)))
s.send(header.encode('ascii'))

print("Waiting answer...\n")
data = s.recv(2048).decode('ascii')
print(data)

s.send(dummyNMEA.encode('ascii'))
data = s.recv(2048).decode('ascii')
print(data)

s.close()

现在,该代码是部分功能。该请求将发送到rtk服务器,并且我已正确身份验证。我从ntrip协议(protocol)收到正确的答案:

冰冷200 OK
服务器:“安装点的服务器”
日期:“日期”

此后,我必须发送NMEA GGA语句,以开始接收RTCM更正。我用生成器创建了各种虚拟的NMEA句子,并测试了如何发送它们。我发送了这句话,.....什么都没发生。我没有收到来自服务器的答复。

有人有主意吗?编码句子时,我可能做错了什么?

我读到也许我应该连续发送NMEA语句,但是我是Python编程的新手,所以我不确定如何使用套接字执行此操作。

英语不是我的母语,所以请原谅我的错误:)

谢谢大家。

最佳答案

当您发送GGA时,该职位是否涵盖了您的rtk更正服务?我之前已经做过,发送的伪位不在网络覆盖范围之内,什么也没有返回,甚至没有错误消息,只是没有更正。

干杯,
史蒂夫。

关于python - Ntrip客户端未收到RTCM更正,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30785308/

10-09 19:13