我有兩個用.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