Как можно предварительно буферизовать пакеты ArtNet3 в контроллере DMX?
Я создаю библиотеку, предназначенную для отправки пакетов UDP по локальной сети на строку из 100 контроллеров DMX, совместимых с ArtNet3.
У меня есть пакеты ArtDmx, отправляющие и рендеринг успешно. Сейчас я пытаюсь предварительно буферизовать данные в контроллерах DMX, чтобы помочь с задержкой в сети. В документации говорится, что нужно отправить пакет ArtSync, чтобы сообщить контроллерам, что нужно визуализировать ранее полученные пакеты ArtDmx, что я и реализовал. Я также отправляю один пакет ArtSync перед пакетами ArtDmx, чтобы сообщить контроллеру о необходимости буферизовать данные вместо их рендеринга. Этим пакетам ArtDmx присваивается свойство последовательности с увеличенным значением для каждого юниверса / контроллера, начиная с 1.
Проблема, я думаю, в том, что OpCode не распознается. Когда я смотрю трафик с помощью Wireshark, OpCode пакетов ArtDmx распознается как "ArtDmx (0x5000)". Пакеты ArtSync, с другой стороны, отображаются как "Неизвестно (0x5200)", даже если значение соответствует документации. Я что-то упускаю? Вот документация.
1 ответ
Я считаю, что моя версия WireShark просто не поддерживает коды операций ArtSync и неизбежно не имеет значения. Может случиться так, что WireShark только наивно поддерживает более раннюю версию ArtNet, возможно, ArtNet или ArtNet 2, которая может не поддерживать эту функцию. ArtNet3 был разработан специально для больших сетевых дисплеев.
Что касается платы за буферизацию, возможно, я неправильно истолковал документацию ArtNet 3.
Когда узел получает пакет ArtSync, он должен перейти в синхронную работу. Это означает, что полученные пакеты ArtDmx будут буферизироваться и выводиться при получении следующего ArtSync.
Где говорится, что "[...] полученные пакеты ArtDmx будут буферизованы [...]", грамматически правильно при обращении к нескольким контроллерам, при множественном множестве "пакетов", но неверно при обращении к одному контроллеру. Контроллеры, совместимые с ArtNet3, которые я использую, будут обрабатывать только последний отправленный пакет ArtDmx после отправки пакета ArtSync.