пятница, 2 октября 2020 г.

Получение спортивной статистки по протоколу UDP


Для упрощения доступа к статистике спортивных состязаний (раньше требовалось подключаться по RS485 и разбирать протокол NiBUS) добавлена возможность получения этих сообщений по протоколу UDP.
Загрузите файл rconsoles.dll
Замените старый файл (сохраните его перед этим), зарегистрируйте его командой:


>regsvr32 rconsoles.dll

Рекомендую обновить также game.dll и, если хоккей, icehockey.dll, которые тоже нужно регистрировать.

Внесите изменения в конфигурационный XML-файл (сохранитесь)
Откройте его в текстовом редакторе и попробуйте найти слово GameRetranslator.

А) Если не нашли, то ... (смотрите Б, если нашли)
Найдите объект Game и добавьте строку внутрь объекта:
  <bind_to id="GameRetranslator" dispname="Game"/>
Должно получиться как-то так:
<object name="Game" clsid="progid:Game.GameLogic" description="Игра">
  <bind_to id="IceHockeyLogic" dispname="Game"/>
  <bind_to id="GameRetranslator" dispname="Game"/>
  ...
</object>
Добавьте на уровень объектов:
<object name="GameRetranslator" clsid="progid:rconsoles.GameRetranslator" description="Игра: ретранслятор">
  <property dispname="TimerUdpPort" value="55555" />
  <property dispname="GameUdpPort" value="55556" />
  <property dispname="Address" value="192.168.1.255" />
  <bind_to id="IceHockeyLogic" dispname="TimeRetranslator"/>
</object>
Здесь можно видеть, что задаются три параметра:
TimerUdpPort - порт для передачи тамера (0-65535)
GameUdpPort - порт для передачи игровых моментов
Address - это адрес подсети для широковещательной рассылки (в конце 255 для сетей x.x.x.x/24), в которую отправлять пакеты UDP, можно не задавать тогда будет отправляться в 255.255.255.255. Не задавайте этот параметр, если не знаете что указать! 

Б) Если нашли, то добавьте три параметра в GameRetranslator как в предыдущем примере.

Теперь по указанным портам будут отправлены широковещательные пакеты UDP.
Значения таймеров будут отправлятся в формате:
1-й символ R (running) или P (paused) - состояние таймера
2-й символ P (primary) или S (secondary) - тип таймера (основное время/таймаут например)
потом пробел и собственно строка со значением таймера.

Игровые события:
два или три поля разделенных символом |
первое поле команда (если нужно указать) HOME/GUESTS
Например: HOME|SCORE|значение
Второе поле (или первое если команда не нужна)
SCORE - очки команды
RESTS - таймауты команды
FOULS - командные фолы
NAME - название команды
TOURNAMENT - название турнира 
PERIOD - период
и последнее поле - это значение.

Можно обратится в техподдержку и предоставить нам удаленный доступ с помощью AnyDesk, чтобы мы сами внесли изменения.