【问题标题】:How does one prebuffer ArtNet3 packets in a DMX controller?如何在 DMX 控制器中预缓冲 ArtNet3 数据包?
【发布时间】:2015-10-22 17:52:03
【问题描述】:

我正在创建一个库,旨在通过本地网络将 UDP 数据包发送到一串 100 个兼容 ArtNet3 的 DMX 控制器。

我已成功发送和渲染 ArtDmx 数据包。现在我正在尝试预先缓冲 DMX 控制器中的数据以帮助解决网络延迟问题。文档说要发送一个 ArtSync 数据包来告诉控制器渲染以前收到的 ArtDmx 数据包,这就是我已经实现的。我还在 ArtDmx 数据包之前发送一个 ArtSync 数据包,以告诉控制器缓冲数据而不是渲染它们。这些 ArtDmx 数据包的序列属性填充了从 1 开始的每个 Universe/控制器的递增值。

我认为,问题在于 OpCode 未被识别。当我使用 Wireshark 查看流量时,ArtDmx 数据包的操作码被识别为“ArtDmx (0x5000)”。另一方面,ArtSync 数据包显示为“未知 (0x5200)”,即使该值与文档匹配。有什么我想念的吗?这是documentation

【问题讨论】:

    标签: c# .net udp wireshark dmx512


    【解决方案1】:

    我相信我的 WireShark 版本根本不支持 ArtSync 操作码,不可避免地无关紧要。可能是 WireShark 仅原生支持早期版本的 ArtNet,可能是 ArtNet 或 ArtNet 2,它们可能不支持该功能。 ArtNet3 专为大型网络显示器而开发。

    就缓冲而言,可能是我误解了 ArtNet 3 文档。

    当一个节点接收到一个 ArtSync 数据包时,它应该转移到同步操作。 这意味着接收到的 ArtDmx 数据包将被缓冲并在下一个时输出 收到 ArtSync。

    Where is 说“[...] 收到的 ArtDmx 数据包将被缓冲 [...]”,在引用多个控制器时语法正确,当复数 'packet' 时,但在引用一个控制器时不正确。我使用的兼容 ArtNet3 的控制器只会在我发送 ArtSync 数据包后呈现最后发送的 ArtDmx 数据包。

    【讨论】:

    • 令人惊奇的是,一个字符可以完全改变功能描述的含义。尽管如此,我有 100 个控制器以每秒 50+ 帧的速度运行。以相反的顺序发送数据也有很大帮助,因此最后发送给控制器的数据包首先发送,因此所有数据基本上同时到达它要去的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2013-10-14
    相关资源
    最近更新 更多