gpt4 book ai didi

algorithm - "Polling"的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:23 24 4
gpt4 key购买 nike

这个问题与微 Controller 编程有关,但任何人都可以建议一个好的算法来处理这种情况。

我有一个中央控制台和一组远程传感器。中央控制台有一个接收器,每个传感器都有一个以相同频率运行的发射器。所以我们只能实现Simplex通信。

由于发射器以相同频率工作,我们不能让 2 个传感器同时向中央控制台发送数据。

现在我想对传感器进行编程以执行一些“轮询”。中央控制台应该了解传感器的存在(每个传感器是否响应)

我可以想象出几种方式。

  1. 在每个传感器的轮询消息之间使用相同的间隔并随机启动传感器。所以他们不会同时传输。

  2. 使用一些回合机制。传感器 1 在 5 秒开始轮询,第二个在 10 秒开始轮询,依此类推。方法 1 的更正式版本。

最大数据传输速率约为 4800 bps,因此我们也需要考虑这一点。

有人能想出一种减少通信链接使用量的好方法来解决这个问题吗?请注意,如有必要,我们可以为每个传感器使用不同的轮询间隔。

最佳答案

我假设您所描述的是传感器和中央单元连接到一次只能传递一条消息的总线。

处理此问题的正常方法是进行碰撞检测。这是例如据我所知,以太网是如何运作的。您尝试发送消息;然后尝试检测碰撞。如果您检测到冲突,请等待一个随机数量(打破平局),然后重新传输,当然还要再次进行冲突检查。

如果您无法检测到碰撞,则不同传感器的轮询间隔可能都是不同的质数。这将保证每个传感器都有用于成功轮询的专用插槽。当然仍然会有碰撞,但不需要检测它们。这里以素数 5、7 和 11 为例:

 ----|----|----|----|----|----|----|----| (5)
------|------|------|------|------|----- (7)
----------|----------|----------|-:----- (11)
* COLLISION

值得注意的是,传感器“同相”或“异相”启动并不重要。

关于algorithm - "Polling"的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997797/

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