Teilen des GPS-NMEA-Strings mit NTP

1

Ich verwende GPS als Uhr für NTP. Es funktioniert großartig und NTP öffnet /dev/gps0und liest es gut. Ich habe auch ein Programm, das /dev/gps0zum Lesen (und Schreiben) des GPS-Geräts geöffnet werden kann , damit ich die Informationen verarbeiten und konfigurieren kann. Wie kann ich beide gleichzeitig ausführen?

Ich möchte kein gpsd verwenden und möchte einen Weg finden, den seriellen Port zu teilen, ohne etwas zu tun, das NTP beschädigen könnte. Socat, Pseudoterminal? Wie kann ich das leicht erreichen?

Ozean
quelle
NTP unterstützt eine Softwareuhr, die über den gemeinsamen Speicher mit NTP kommuniziert. Wenn Ihre GPS-Software Zeitinformationen im gemeinsamen Speicher ablegen kann, kann NTP diese abrufen. Hier ist ein Beispielcode, den ich vor langer Zeit geschrieben habe.
David Schwartz
Ich habe das tatsächlich schon einmal mit Shared Memory gemacht (gpsd verwendet auch Shared Memory). Das Problem ist, dass der "Kunde" möchte, dass NTP ausgeführt wird und dann ein zweites Programm, das bei Bedarf auf das serielle Gerät "zugreifen" kann. Ich dachte an posix_openpt, fragte mich aber, ob es einen besseren Weg gäbe.
Ozean
Sie können entweder den NTP-Code ändern oder Ihren eigenen Code schreiben, um als Tee zu fungieren.
David Schwartz
Abhängig von der Maschine könnten Sie eine andere physische serielle Schnittstelle installieren und dann eine für nema und eine für pps als serielle Schnittstelle verwenden. Verwenden Sie dann, wie andere angegeben haben, den Shared Memory-Treiber von ntp.
user3788685
1
Danke für die Hilfe. Ich habe das gelöst, indem ich Pseudo-Terminals geöffnet habe, für ntp und für den Prozess, der die nmea-Strings analysiert. dh ntpfd = posix_openpt (O-RDWR | O_NOCTTY); grantpt (ntpfd); entsperren (ntpfd); ptsname_r (ntpfd, buff, sizeof (buff)). Buff hält den Namen des Pseudoterminals. Das gleiche gilt für parserfd. Dann öffne und lese ich das GPS und sende, was ich bekomme, an diese FDS. Verknüpfte das mit ntpfd verknüpfte Pseudoterminal mit / dev / gps0.
Ozean

Antworten:

-1

Ich ignoriere den Grund, warum du keinen Zauberstab benutzt, um gpsd zu benutzen. Ich selbst empfehle Ihnen, es zu verwenden, da dies wahrscheinlich die einfachste Lösung ist. Wenn Sie Zugriff auf die NMEA-Sätze haben möchten, verwenden Sie das Programm "gpspipe", während gpsd ausgeführt wird. Sie werden wahrscheinlich haben, was Sie wollen.

Claude Frantz
quelle
Willkommen bei Super User. Ihr Beitrag muss erweitert werden. Eine gute Antwort enthält spezifische Anweisungen ( nicht nur Links zu diesen) und eine Erklärung, wie oder warum die Antwort die Frage des OP beantwortet. Bearbeiten Sie Ihren Beitrag, um Details hinzuzufügen, in denen erläutert wird, wie Ihre Lösung die OP-Frage beantwortet.
Twisty Imitator