首页 > 解决方案 > 通过 NTRIP 接收 RTCM 数据但无法翻译机器码

问题描述

我编写了一个 python 脚本,用于从NTRIP 服务器 (RTK)发送和接收数据。但我不知道如何翻译机器代码。

例如我得到这个:

b'3E\r\n\xd3\x008?]\x0c\xe5^;\x834I\x0c\xa0\x01Hy\x00\nDh\x00Q\xf6\xc0\x19\x10&\x00\xc8~\xb0%\ x83\xfd\x00\x19\x1f\xf8\x00\xc9\x00@\x06H\r\x01,@x\tb\x05@2\x10\x17\x19@\xbaU\xca\r\n'

我试图用ascii, utf8,来解码它latin1

pwd = base64.b64encode("{}:{}".format(username, password).encode('ascii'))
pwd = pwd.decode('ascii')

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

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

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

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

print("Waiting answer...\n")
data = s.recv(2048).decode('ascii')
print(data)
for i in range (0, 10):
    s.send(dummyHeader.encode('ascii'))
    data = s.recv(1024)
    print(data)

s.close()

标签: python-3.x

解决方案


RTCM 是一种二进制格式。它不能被解码成文本。如果您想读取流中的消息,您将需要一个二进制解析器。但 RTK 定位的正常用例是将未经修改的 RTCM 流传递给您的 GNSS 接收器。


推荐阅读