Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ntrip客户端未接收RTCM更正_Python_Sockets_Gps - Fatal编程技术网

Python Ntrip客户端未接收RTCM更正

Python Ntrip客户端未接收RTCM更正,python,sockets,gps,Python,Sockets,Gps,我正在寻找帮助,了解如何开发一个完整和功能齐全的NTRIP客户端,以便接收RTCM更正。 我现在在Windows7上使用的是Python 3.4。在网上搜索,我找到了一些示例代码,并用它编写了一个基本客户端。问题是。。。它不起作用 我可以使用rtk校正服务。该服务处于活动状态并正常运行 这是我的代码片段 dummyNMEA = "$GPGGA,143741.356,7839.493,S,07627.626,W,0,00,,,M,,M,,*45" username = my_username

我正在寻找帮助,了解如何开发一个完整和功能齐全的NTRIP客户端,以便接收RTCM更正。 我现在在Windows7上使用的是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协议收到正确答案:

冰200行吗 服务器:“装载点的服务器” 日期:“日期”

在此之后,我必须发送NMEA GGA语句,以便开始接收RTCM更正。我用生成器创建了各种虚拟NMEA句子,并测试了如何发送它们。我把句子发出去,然后。。。。什么也没发生。我没有收到服务器的答复

有人有主意吗?也许我在对句子进行编码时做错了什么

我读到,也许我应该继续发送NMEA语句,但我是Python编程新手,不知道如何使用套接字实现这一点

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


谢谢大家。

当您发送GGA时,它是一个覆盖您的rtk纠正服务的职位吗?我以前也这样做过,发送了网络覆盖范围之外的虚拟位置,但没有返回任何信息,甚至没有错误消息,只是没有更正

干杯,
Steve。

您需要在NMEA字符串的末尾添加
'\r\n'


dummyNMEA=“$GPGGA,143741.3567839.493,S,07627.626,W,0,00,,,M,,*45\r\n”

您还必须为NMEA创建一个标题

dummyHeader = \
        "Ntrip-GGA: {}\r\n".format(dummyNMEA)

那么你应该会得到答案。

谢谢你的回答。使用的假人是从我的智能手机的gps中检索到的,所以我认为它们位于网络的平均区域。我使用rtklib绕过了这个问题,它实现了我所需要的。不幸的是,在不久的将来,我无法对这段代码进行进一步的测试。我正在尝试做同样的事情。我认为代码的问题在于您发送的是普通的NMEA消息,而您应该发送的是包含NMEA消息的RTCM帧(至少RTKLIB内部是这样做的)。您使用RTKLIB的哪个应用程序执行此操作?它适用于我使用rtkrcv(windows中的rtknavi),但我想知道是否可以用str2str(strsvr)实现同样的功能。我的问题是,由于一些Ntrip施法者需要获得你的GPGGA语句,我不知道在使用str2str时如何绕过它们