2012-09-26 55 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)