gpt4 book ai didi

python - 仅依赖时间同步两个远程程序(Python)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:39 27 4
gpt4 key购买 nike

我有两个程序,S 和 D,用 Python 2.7 编写,运行在不同的机器上,都是 linux。

目标是将文件(换句话说,位)从 S 传递到 D,仅通过称为 T 的第三方服务器,它们之间没有任何联系,除了我写 S 和 D(并且可以计划任何我想要的协议(protocol))。

T 是一个简单的回显服务器,它只是发回它收到的消息。

想法是将每一位编码为一个数字,并提升 T 的 IP_ID 字段。因此,如果 S 想将位 1 传递给 D,假设我将 1 编码为 IP_ID 值的 +30,那么我将向 T 发送 30 个空数据包,只是为了将其 IP_ID 值增加 30。D 正在向 T 发送数据包偶尔检查 IP_ID 字段是否增加,以便将增量解码为相关位,1 或 0。所以现在 D 会看到 IP_ID 增加了 30,它会写入位 1,依此类推上。

我的问题来了:

我如何同步/计时 S 和 D?

例如,我想从 S 到 T 每 1 秒写一次。

现在,D 知道 S 每 1 秒写入一次消息,因此它知道在这些时间间隔之间检查 IP_ID 值。

我只能使用模块“时间”进行同步。

我意识到让 S 休眠 1 秒和 D 休眠 1 秒是行不通的,因为 S 循环涉及的操作比 D 多,所以一段时间后计时会搞砸,当 D 正在检查时,S 将写入 T值(value)。

于是我自己写了一个基于wall time的函数,但是还是不行:

S代码:

省略

D代码:

省略

这种同步由于某种原因不起作用,D 正在与 S 混淆(D 读取而 S 写入 T)。

知道 accurateSleep 函数有什么问题吗?也许还有其他检查时间的方法?

p.s 用 busyWait 函数替换了“sleep”,似乎更准确,但还不够。

最佳答案

您可能需要考虑实现 I2C1-Wire .这些实际上可能提供比您需要的更多的功能,因为它们都是单主/多从总线系统,听起来您正好有两个设备。不过,如果您不介意额外的复杂性,他们仍然可以完成工作。

我希望将引脚调高或调低的等价物分别是增加共享计数器或不增加共享计数器。

要解决时钟不同步问题,您可能还需要考虑使用 clock recovery系统如 TMDS .这是一个经过深入研究的领域,因为它被许多部署极其广泛的现代视频系统所使用。

关于python - 仅依赖时间同步两个远程程序(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com