我正在使用连接到计算机的GPS鼠标/接收器(创建虚拟COM端口)来确定计算机时间漂移。 GPS鼠标以NMEA消息的形式发送PPS事件,我希望能够获得每个接收到的消息的精确时间戳,以便我可以计算GPS时间和计算机时间之间的差异。
如何在接收到消息时获得时间戳是最佳方式?我尝试过轮询串行端口和数据接收事件。现在我的代码看起来像这样:
如何在接收到消息时获得时间戳是最佳方式?我尝试过轮询串行端口和数据接收事件。现在我的代码看起来像这样:
while ( serialPort.IsOpen())
{
if (serialPort.BytesToRead != 0)
{ GetSystemTimePreciseAsFileTime(out filetime);
DateTime collected = DateTime.Now;
time.Add(collected.Ticks.ToString());
time2.Add(filetime.ToString());
serialPort.DiscardOutBuffer();
serialPort.DiscardInBuffer()
}
else {
}
}`
我尝试使用DateTime.Now.Ticks和Stopwatch,但差异的噪声约为20毫秒。我看过一些文献,其中实现了1毫秒的精度/准确性。有人知道我做错了什么吗?