我有一个与我的 C++ 应用程序接口的 AHRS(姿态航向参考系统)。我通过以太网从 AHRS 接收到 50Hz 的消息流,作为该消息的一部分,我得到了 UTC 时间。我的系统还将运行 NTPD 作为我们嵌入式网络的时间服务器。AHRS 还有一个 1PPS 输出,指示 UTC 的第二个翻转时间。我想将 NTPD 时间与 UTC 同步。经过一番研究,我发现有些技术利用串行端口作为 1PPS 的输入。据我所知,这些技术使用 GPSD 读取 1PPS 并与 NTPD 通信以同步系统时间。但是,GPSD 期望来自 GPS 的 NMEA 格式的消息。我没有那个。
我现在看到的方式,我有几个可选的方法:
不要使用 GPSD。编写一个程序,读取 1PPS 和包含 UTC 的以太网消息,然后以某种方式将此信息传达给 NTPD。
使用 GPSD。编写一个程序,将以太网消息重新打包成可以发送到 GPSD 的东西,并让它处理与 NTPD 的交互。
还有什么?
任何建议将不胜感激。
编辑: 我为这个结构不佳的问题道歉。
我对这个问题的解决方案如下: 1 - 将 1PPS 接口连接到 RS232 端口,事实证明这是 GPSD 处理的标准方法。2 - 编写自定义 C++ 应用程序来读取包含 UTC 的以太网消息,并从中构建包含 UTC 的 NMEA 消息。3 - 将 NMEA 消息馈送到 GPSD,GPSD 进而与 NTPD 接口以将 GPS/1PPS 信息与系统时间同步。