2

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

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

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

4

1 回答 1

0

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

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

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

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

于 2015-11-04T17:29:56.260 回答