2012-09-26 57 views
4

我有兩臺可以通過串行連接相互通信的計算機。連接通過無線網絡完成。這兩個系統之間的通信存在可變的,變化的延遲。在這兩個系統上,我有一個計數器運行時間,每ms增加1。它們都在應用程序啓動後立即啓動。說每臺電腦在不同的時間啓動。我如何與串行連接同步計數器,以便systemA.counter等於systemB.counter,並使兩個計數器同時遞增(或儘可能接近)。通過網絡同步計數器

理想情況下,一旦同步計數器只會緩慢地分開,所以每3或4千個重複一次就可以重新同步。

我正在尋找關於主題,示例algorythms,示例代碼(c/C++),任何指向正確方向的好資源。

更新

這是一個封閉的系統,沒有互聯網。對於所有的意圖和目的,除了無線鏈路之外並沒有真正的協議。目前該鏈接是藍牙,但我正在考慮將其移至ZigBee網狀網。目前有2個節點,但是如果我有30個節點都運行同一個應用程序,我希望它們全部同步。沒有客戶端/服務器名稱,只有幾臺運行與計數器相同的程序的設備。我沒有時間去訪問任何東西,只是這個計數器每增加一毫秒就會增加一次,我可以使用任何算法。一旦我能得到這個工作,我想建立一個定位和映射系統,但要找出節點之間的距離,我需要激活設備上同步的時間。

回答

1

顯而易見的資源是NTP,它記錄在例如http://www.eecis.udel.edu/~mills/ntp.html和關聯那裏。基本上,這使用時間戳來調整本地時鐘運行的頻率。該協議已經存在多年,並一直是不斷研究的主題 - 我看不到任何幻燈片,它立即清楚它的工作原理。您可能會更好地瞭解是否已有NTP實現可用,而不是嘗試自行重新實現它。

看來(例如從搜索中)看到有一個從事時間同步算法工作的小型行業,尤其​​是在無線傳感器網絡環境中。除了搜索外,還有一個起點是調查報告http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.2012 - 傳感器網絡中的時間同步:一項調查(2004)