У меня есть две программы, написанные на .NET, которые взаимодействуют с оборудованием для сбора данных через USB. Одно устройство является асинхронным, но оно сообщает мне время записи точки данных с точностью до микросекунды. Другой — синхронный, то есть я знаю, когда была записана каждая точка данных.
У меня есть программы .NET для взаимодействия с ними. До сих пор я использовал DateTime.Now, чтобы установить, когда началось сбор данных, затем я использую время в миллисекундах/микросекундах, сообщаемое асинхронным устройством, и номер выборки с синхронного устройства, чтобы вычислить компьютерное время для каждой точки данных (путем добавления тиков к время начала).
Теперь я должен синхронизировать время для двух приобретений. Две программы работают на одном компьютере, но, как я читал, DateTime.Now имеет точность от 10 до 15 миллисекунд, согласно некоторой документации (хотя кажется, что некоторые люди могут добиться значительно большего, чем это, хотя возможно, только потому, что они вызывают его сразу после Thread.Sleep).
Насколько я знаю, мой текущий метод:
- Пользователь начинает сбор данных на устройстве 1. Вызывается DateTime.Now
- Пользователь начинает сбор данных на устройстве 2. Вызывается DateTime.Now
может дать мне время начала сбора данных с точностью до 15 миллисекунд.
Я могу подумать о том, чтобы использовать DateTime.Now при запуске программы и использовать StopWatch для записи точного времени, прошедшего между запуском программы и началом сбора данных. Но это сработало бы только в том случае, если бы я объединил две программы вместе.
Любые другие идеи?