Я использую GPS-мышь/приемник, подключенный через USB (создает виртуальный COM-порт) для определения временного дрейфа компьютера. GPS-мышь отправляет событие PPS в виде сообщения NMEA. Я хотел бы получить точную метку каждого полученного сообщения, чтобы я мог рассчитать разницу между временем GPS и временем компьютера.C# серийный порт точная метка времени
Каков наилучший способ получить отметку времени, как только будет получено сообщение. Я попробовал как с опросом последовательного порта, так и с полученным событием. Сейчас мой код выглядит следующим образом:
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 с секундомером, но Шум разницы Arround 20мс. Я видел бумаги, где была достигнута точность/точность 1 мс. Кто-нибудь есть идея, что я делаю неправильно?
Почему вы используете GetSystemTimePreciseAsFileTime() AND DateTime.Now? Почему бы просто не использовать GetSystemTimePreciseAsFileTime()? –
Я пытался использовать все возможные таймеры, доступные на C#, и сравнивал их, чтобы убедиться, что это проблема. Это было просто для сравнения. – gojcic