pinewell's farmer blog 農業と電子工作、ソフトウェア、バイク、車

2020年3月2日

ZED-F9PをTrimble CFX-750の基準局として使用する方法

Filed under: GNSS — pinewell @ 11:24 PM

https://www.thecombineforum.com/threads/how-to-use-zed-f9p-as-a-base-station-for-trimble.331721/page-3

上に書かれていることの日本語で。

Trimbleでは RTCMのメッセージのうち1005,1077,1087 ,1230 と1008が必要。

1008はアンテナ情報のようだが、ZEDーF9Pでは出力できない。

実際のところ、ダミーデータで良いようだ。。

ZED-F9Pからraspiのシリアルで取得、NtripCasterに送信する前にダミーの1008を挟み込む。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python3
 
import sys
 
while True:
    data = sys.stdin.buffer.read(1)
    while (data != b'\xd3'):
        data = sys.stdin.buffer.read(1)
 
    length_data = sys.stdin.buffer.read(2)
    length = (length_data[0] << 8) + length_data[1]
    packet_data = sys.stdin.buffer.read(length)
    crc24_data = sys.stdin.buffer.read(3)
 
    message_number = (packet_data[0] << 8) + packet_data[1]
    message_number >>= 4
 
    sys.stdout.buffer.write(b'\xd3')
    sys.stdout.buffer.write(length_data)
    sys.stdout.buffer.write(packet_data)
    sys.stdout.buffer.write(crc24_data)
    sys.stdout.flush()
 
    if message_number == 1005:
        # blank 1008 message for Trimble
        sys.stdout.buffer.write(bytes([0xd3,0x00,0x06,0x3f,0x00,0x00,0x00,0x00,0x00,0x99,0x25,0xca]))
 
        sys.stdout.flush()

これをtr1008.pyとして保存。socatでシリアルから受けて、tr1008.pyを処理して標準入出力に対応したstr2strでNtripCasterに送信。

socat /dev/ttyAMA0,b115200,raw - | ./tr1008.py | str2str -out ntrips://:PASS:xxx.xxx.xxx.xxx:2101/MountPoint

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress