Пример #1
0
def RTCM_converter_thread(server, port, username, password, mountpoint, rtcm_callback=None):
    import subprocess

    nt = subprocess.Popen(["./ntripclient",
                           "--server", server,
                           "--password", password,
                           "--user", username,
                           "--mountpoint", mountpoint],
                          stdout=subprocess.PIPE)

    """nt = subprocess.Popen(["./ntrip.py", server, str(port), username, password, mountpoint],
                            stdout=subprocess.PIPE)"""

    if nt is None or nt.stdout is None:
        indev = sys.stdin
    else:
        indev = nt.stdout

    print("RTCM using input {}".format(indev))

    while True:
        sio = indev

        d = ord(sio.read(1))
        if d != RTCMv3_PREAMBLE:
            continue

        pack_stream = BitStream()

        l1 = ord(sio.read(1))
        l2 = ord(sio.read(1))

        pack_stream.append(bs.pack('2*uint:8', l1, l2))
        pack_stream.read(6)
        pkt_len = pack_stream.read(10).uint

        pkt = sio.read(pkt_len)
        parity = sio.read(3)

        if len(pkt) != pkt_len:
            print "Length error {} {}".format(len(pkt), pkt_len)
            continue

        if True:  # TODO check parity
            for d in pkt:
                pack_stream.append(bs.pack('uint:8', ord(d)))

            msg = parse_rtcmv3(pack_stream)

            if msg is not None and rtcm_callback is not None:
                rtcm_callback(msg)
Пример #2
0
def decode_rtcm3_pack(buff):
    d = ord(buff[0])
    if d != RTCMv3_PREAMBLE:
        print "RTCM3 preamble error!", d
        return

    pack_stream = BitStream()

    l1 = ord(buff[1])
    l2 = ord(buff[2])

    pack_stream.append(bs.pack('2*uint:8', l1, l2))
    pack_stream.read(6)
    pkt_len = pack_stream.read(10).uint

    pkt = buff[3:3 + pkt_len]
    parity = buff[3 + pkt_len:-1]

    if True:  # TODO check parity
        for d in pkt:
            pack_stream.append(bs.pack('uint:8', ord(d)))

        msg = parse_rtcmv3(pack_stream)