web-dev-qa-db-ja.com

NMEA基準時計とGPS位置に同時にアクセスする

GPS(PPSを使用)から正確な時刻を取得するための2つのアプローチに気づきました。どちらかでntpdを使用する

私の問題:非常に正確な時刻とGPS位置データへのアクセスが必要です。したがって、gpsdを介した共有メモリの使用は遅くなる可能性があります。

私のntp構成では、現在 NMEA基準クロック を使用しています。 GPS受信機(PPS付き)は、それぞれ/dev/ttyS0/dev/gps0に接続されています。

NtpdとNMEA、gpsdの両方を使用して位置データを並行して取得することはできません。 ntpdが実行されている場合、gpsdはデータを取得せず、タイムアウト後に終了します。ただし、ntpdが実行されている場合はcat /dev/ttyS0コンソールにNMEAデータを出力します。だから私はシリアルラインから読み取ることができます。では、ntpdが実行されている場合、gpsdがシリアルデータにアクセスできないのはなぜですか?貼り付けたgpsdのデバッグメッセージ ここ 。 gpsdを起動してから、cgpsに接続しようとします。

私はそれが一般的に並列にデバイスを開くことの問題かもしれないことを知っています...

[〜#〜]編集[〜#〜]

今使っています

server 127.127.20.0 mode 18 minpoll 4 maxpoll 4 iburst prefer true
fudge 127.127.20.0 flag1 1 flag2 0 flag3 1 flag4 0 time2 0.475

Clockstatsファイルから位置データを取得すると機能します。このファイルを解析するよりも良い解決策がありますか?

1
wenzul

なぜgpsdを使用するのですか? NMEAドライバーを使用して、flag1でPPS)を有効にするだけです。

server 127.127.20.0 minpoll 4  mode 18 prefer   # NMEA serial port, 16 = 9600 baud, 2 = $GPGGA
fudge 127.127.20.0  time2 0.435 flag1 1 flag3 0

ファッジタイムを適切なものに変更する必要があります。

Clockstatsファイルから位置データを取得できます。

2
dfc