我有两个用.NET编写的程序,它们通过USB与采集硬件进行通信。一个设备是异步的,但是当数据点被记录时,它告诉我微秒。另一个是同步的,也就是说,我知道每个数据点的记录时间。两个进程之间的时间同步 - .NET
我有.NET程序来与这些接口。到目前为止,我已经使用DateTime.Now来确定何时开始采集,然后使用异步设备报告的毫秒/微秒时间和同步设备的采样编号来计算每个数据点的计算机时间(通过将滴答添加到开始时间)。
现在我必须同步两次收购的时间。这两个程序在同一台计算机上运行,但正如我一直在阅读的,根据某些文档,DateTime.Now的准确度为10到15毫秒(尽管看起来好几个人可以实现比这更好的效果,尽管可以说只是因为他们在Thread.Sleep之后正确地调用它)。
所以据我所知,我目前的方法:
- 用户开始对设备1.收购DateTime.Now叫
- 用户对设备2 DateTime.Now叫 开始收购
可以使我的采集开始时间缩短到15毫秒。
我可以考虑在程序启动时使用DateTime.Now,并使用StopWatch记录程序启动和采集开始之间的确切运行时间。但是,如果我将这两个程序合并在一起,这只会起作用。
还有其他想法吗?
这就是我说的吗? – pelesl 2011-03-03 02:34:31
我以为你只是使用秒表来衡量流逝的时间,而不是得到一个实际的时间戳? – Carlos 2011-03-03 10:29:20
我还没有使用StopWatch。我正在考虑将DateTime.Now和StopWatch.GetElapsed结合起来,这样我只能得到Now的不确定性,每次之后,我都会得到GetElapsed的准确性。只是想知道是否有更好的方法。 – pelesl 2011-03-04 02:38:23