пятница, 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, чтобы мы сами внесли изменения.

четверг, 29 декабря 2016 г.

node-avs

Последнее 3 года я не вел блог так как был занят написанием новой системы для управления экранами. Это, конечно, не значит что программа AdvertisePro не развивалась. Все поддержку и обновления осуществляет мой коллега Максим Леваков. Я готов Вам представить новый проект node-avs. По ссылке Вы можете подробнее ознакомиться с различиями от AdvertisePro и почитать справку по интерфейсу управления. Данное ПО уже работает с 2015 года на экранах всех видеоэкранах Russ Outdoor в г. Москве

пятница, 14 июня 2013 г.

Матричное табло и Excel

Матричное табло создавалось для примитивного вывода текста с разбиением по колонкам на экран. Может возникнуть необходимость вывода таблиц из Microsoft Excel, например на соревнованиях нужно выводить результаты участников. Это можно сделать скопировав таблицу из Excel и вставив ее в окно матричного табло, предварительно расставив маркеры табуляции в окне матричного табло.
Excel поддерживает макросы, поэтому вывод на экран можно осуществить средствами самого Excel, конечно программа AdvertisePro так же должна быть запущена. В Excel мы разбираем таблицу, форматируем строку для вывода и отправляем ее в AdvertisePro.

Вот макрос:
Sub SendToScb()
    Dim apro, elements
    Set apro = GetObject("AdvertisePro:Application")
    If IsNull(apro) Then
        MsgBox ("Приложение не запущено")
    End If
    
    Set elements = apro.textform.Root.Children
    Dim line, column
    Dim scbWidth
    Dim scbHeight
    Dim headerLength
    headerLength = Range("HeaderLength").Value
    scbWidth = Range("ScbWidth").Value
    scbHeight = Range("ScbHeight").Value
    Dim src, colDef
    Set src = Worksheets("Вывод")
    Set colDef = Range("ColumnsDef")
    For line = 1 To scbHeight
        If (line <= headerLength) Then
            elements.Item(line - 1).Value = FormatLine(src.Cells(line, 1).Value, scbWidth, Range("HeaderAlign").Value)
        Else
            Dim text As String
            text = ""
            For column = 1 To colDef.Rows.Count
                Dim colWidth, colAlign
                colWidth = colDef.Cells(column, 1)
                colAlign = colDef.Cells(column, 2)
                If colWidth > 0 Then
                    text = text + FormatLine(src.Cells(line, column).Value, colWidth, colAlign)
                End If
            Next column
            elements.Item(line - 1).Value = text
        End If
    Next line
End Sub

Function FormatLine(text, width, align)
    text = Left(CStr(text), width)
    If align = "R" Then
        FormatLine = Right(Space(width) + text + " ", width)
    ElseIf align = "C" Or align = "С" Then
        FormatLine = Left(Space((width - Len(text)) / 2) + text + Space(width), width)
    Else
        FormatLine = Left(text + Space(width), width)
    End If
End Function

Здесь apro - экземпляр запущенного приложения AdvertisePro, elements - объекты-строки в матричной форме. Параметры экрана (высота, ширина в символах) и определения колонок хранятся в именованных областях.

Файл для excel с полным примером можно взять здесь
На первом листе Параметры указываем параметры экрана и определяем размеры колонок. Там думаю все понятно. Указываем количество строк заголовка и ширину колонок. Выравнивание в колонках указываем буками:
R - (Right) выравниваем вправо (и добавляем один пробел, чтобы отделить от следующей колонки)
C - (Center) - выравнивание по центру
L или любой другой символ -  (Left) выравнивание слева.

На второй лист "Вывод" копируем или заполняем результаты начиная с верхнего левого угла. Там же есть кнопка "Отправить" которая выводит результаты на экран.

Так же для AdvertisePro до версии 3.2.1 включительно нужно заменить файл библиотеки TextFormX.dll которая лежит в папке с программой, в старой версии была ошибка когда вставлялся текст из буфера обмена.

понедельник, 21 января 2013 г.

Объект NIMediaRender.


В этой статье я опишу API для работы с рендерером AdvertisePro, которое можно использовать в пользовательских скриптах на VBScript. Используя API Вы сможете получить доступ к текущим коллекциям медиа-объектов, проигрываемых рендерером, управлять ими и медиа-объектами.

Чтобы данные скрипты работали на AdvertisePro версии 3.2, 3.2.1 нужно обновить файл библиотеки NIMediaObjectu7.dll

Объект MediaRenderer. progid:NIVideoRender.MediaRenderer

Обычно данный объект прописан в конфигурационном файле под именем renderer:
<object name="renderer" xsi:type="cfg:MediaRender" clsid="progid:NIVideoRender.MediaRenderer" ...>
Чтобы узнать под каким именем он определен в вашем файле конфигурации можно сделать поиск по его progid. В некоторых случаях может быть несколько рендереров. Зная его имя можно обращаться к нему из скрипта, например Application.renderer.
Рассмотрим его свойства:
Свойства рендерера
Имя Доступ Описание
PermanentMedia Чтение/Запись Коллекция постоянных объектов. Именно она содержит список воспроизводимых объектов из текущего плейлиста
CurrentMedia Чтение/Запись Текущий воспроизводимый медиа-объект.
Set mediaObject = renderer.CurrentMedia
AddMedia Метод Добавление медиа-объекта в пул постоянных медиа-объектов.
renderer.AddMedia mediaObject
RemoveMedia Метод Удаление медиа-объекта из пула постоянных медиа-объектов.
renderer.RemoveMedia rendererId
MoveUp Метод Увеличить Z-координату объекта.
renderer.MoveUp rendererId
MoveDown Метод Уменьшить Z-координату объекта.
renderer.MoveDown rendererId
MoveToFront Метод Переместить объект на передний план.
renderer.MoveToFront rendererId
MoveToBack Метод Переместить объект на задний план.
renderer.MoveToBack rendererId
RemoveAll Метод Удалить все объекты.
renderer.RemoveAll
Background Чтение/Запись Текущий фон.
Set background = renderer.Background
Width Чтение Ширина
Height Чтение Высота
Advertising Чтение/Запись Режим показа рекламы. В этом режиме по окончании ролика его последний кадр продолжает оставаться на экране пока готовится к показу следующий ролик.
renderer.Advertising = true
SetMediaPosition Метод Задает координаты верхнего левого угла для вывода медиа-объекта.
renderer.SetMediaPosition rendererId, x, y
Media Функция Поиск медиа-объекта.
Set media = renderer.Media(key, flags)
All Чтение Коллекция всех меда-объектов
Параметры:

  • mediaObject - объект MediaObject
  • rendererId - Идентификатор-строка элемента в рендерере (см. св-ва медиа-объекта).
  • background - объект Background
  • x, y - целые числа
  • flags - Флаги поиска:
    0 - поиск по rendererId (по умолчанию)
    1 - поиск по Alias
    2 - поиск всех объектов
    4 - поиск по cookie
  • key - поиск по заданному значению, зависит от flags
  • Коллекции - стандартные, индекс начинается с 0, в качестве индекса может использоваться RendererId.
    Dim oMedia, oMedia3, oOtherMedia
    For Each oMedia in renderer.PermanentMedia
    Rem Работаем с медиа-объектом
    Next
    Set oMedia3 = renderer.PermanentMedia(3)
    Set oOtherMedia = renderer.PermanentMedia("{087846D6-2EE3-49FB-824B-9DB9746AC8BD}")

Медиа-объект

Свойства медиа-объекта
Имя Доступ Описание
sourceURL Чтение Путь к файлу воспроизведения
duration Чтение Длительность в секундах
RendererId Чтение Строка - идентификатор объекта. Доступна после добавления меда-объекта в рендерер
ZOrder Чтение/Запись Z-координата объекта
Alias Чтение/Запись Псевдоним
Cookie Чтение Cookie
x Чтение/Запись x-координата верхнего левого угла
y Чтение/Запись y-координата верхнего левого угла
CurrentPosition Чтение/Запись Текущее положение воспроизведения в секундах
StopTime Чтение/Запись Время остановки воспроизведения в секундах.
Rate Чтение/Запись Коэффициент скорости воспроизведения
SelfDeleteOnComplete Чтение/Запись Автоматическое удаление после воспроизведения.
oMedia.SelfDeleteOnComplete = true
ReleaseMedia Метод Освободить медиа-объект.
oMedia.ReleaseMedia

Медиа-загрузчик

Данный объект нужно использовать для создания новых медиа-объектов и управления выводом звука или масштабированием. Обычно в конфигурационном файле он называется MediaLoader, соответственно из скрипта он доступен как Application.MediaLoader. Чтобы узнать его имя найдите в конфигурационном файле объект с clsid="progid:NIMediaObject.MediaLoader". Их может быть несколько.
Свойства медиа-загрузчика
Имя Доступ Описание
LoadURL Функция Получить медиа-объект из указанного файла.
Set oMedia = mediaLoader.LoadURL("C:\Video\clip1.avi")
Audio Чтение/Запись Включить/выключить вывод звука.
mediaLoader.Audio = false
StretchMode Чтение/Запись Тип масштабирования:
0 - растянуть
1 - обрезать
2 - сохранить пропорции с рамкой
3 - сохранить пропорции
CheckURL Метод Если указанный файл не может быть воспроизведен возникнет исключение.
On Error Resume Next
mediaLoader.CheckURL "C:\Video\Clip.avi"
If Err.Number <> 0 Then
MsgBox ("Invalid file")
Err.Clear
End If
Width Чтение/Запись Ширина
Height Чтение/Запись Высота

Примеры

Предположим, что мы хотим в определенный момент показать заданный ролик, который отсутствует в плейлисте. Будем показывать его с удвоенной скоростью и в медиаплеере он будет отображаться с нужным нам именем в поверх основного плейлиста. Сам плейлист будет продолжать воспроизведение. После окончания ролика он самостоятельно удалиться:

Dim oMedia
// Создаем медиа-объект
Set oMedia = Application.MediaLoader.LoadURL("C:\Videos\Clip.avi")

// Указываем ZOrder больше чем основной плейлист
oMedia.ZOrder = 200

// Под этим именем он будет отображаться
oMedia.Alias = "Тестовый ролик"

// Двойная скорость воспроизведения
oMedia.Rate = 2.0

// Удалить себя по окончании!!!
oMedia.SelfDeleteOnComplete = true

Application.renderer.AddMedia oMedia // Воспроизводим

суббота, 29 декабря 2012 г.

AdvertisePro 3.2.1 (исправление)

Обновлена версия AdvertisePro: AdvertisePro3.2.1.msiAdvertisePro3.2.1.x64.msi Исправлен баг с выводом статичных картинок. Чтобы не устанавливать всю программу заново для версии 3.2 достаточно поменять в папке с программой NIMediaObjectu7.dll
Для перехода с версии 3.1 распаковать с заменой в папку с программой (нужны права администратора)  update3.1to3.2.zip

четверг, 27 декабря 2012 г.

Управление звуком по расписание (обновление 2)

В предыдущей статье для управления звуком предлагалась утилита msndvol.exe. К сожалению она поддерживается только на Windows XP. Есть готовая утилита для Windows 7, читайте по ссылкеhttp://my.opera.com/irzyxa/blog/index.dml/tag/Volume2. Данная утилита может постоянно работать в трее и поддерживает расписание. Также она поддерживает управление из командной строки:
volume2 MUTE
volume2 UNMUTE
volume2 75
Выключить звук
Включить
Задать громкость 75%
Данные команды можно вставлять в планировщик AdvertisePro
PS. Есть еще один способ включения/выключения звука. В Планировщике встаньте на нужную позицию в плейлисте,  нажмите на стрелку рядом с кнопкой Вставить новый элемент. Выберите Мастер "Заданий"/Вставить VB-скрипт, наберите команду Application.MediaLoader.Audio = false, Далее, Назовите команду "Выключить звук", Далее, Готово.
Также можно включить звук, только скрипт будет выглядеть как Application.MediaLoader.Audio = true
Подробнее в статье Объект NIMediaRender

пятница, 14 декабря 2012 г.

AdvertisePro 3.2

Обновленная версия AdvertisePro 3.2.1 (исправление)

Вышла новая версия AdvertisePro3.2.msi и для x64 AdvertisePro3.2.x64.msi.
Рекомендуемая версия операционной системы Windows 7, также поддерживается Windows XP.
Основное изменение затронуло процесс рендеринга видео:
  • используется VMR9
  • улучшилось качество масштабирования видео под размер экрана
  • устранение чересстрочной развертки средствами видеокарты
  • поддержка большого числа форматов видео
Чтобы программа поддерживала необходимые Вам форматы установите соответствующие кодеки (например K-Lite Codec Pack). Если в диалоге добавления файла в плейлист он не отображается, выберите тип файла "Все файлы (*.*)".
Те пользователи, которые уже установили версию AdvertisePro 3.1.1, могут самостоятельно обновить файлы распаковав архив update3.1to3.2.zip в папку с установленной программой с заменой (для Windows 7 требуются права Администратора). Перед заменой файлов, чтобы освободить Brcoreu7.dll, остановите службу NiBUS, например командой
net stop nibus
замените файлы, а затем запустите службу командой
net start nibus
Все официальные обновления теперь подписаны нашей цифровой подписью.
PS. Данная версия программы некорректно отображает статические изображения (jpg, gif, bmp)! Вскоре выйдет обновление с исправлением.

четверг, 20 сентября 2012 г.

Управление звуком по расписанию

Читайте новую статью для Windows 7.
Может возникнуть ситуация, когда Вам понадобится управлять звуком. Например: выключить звук вечером, включить утром, изменить громкость или во время трансляции телепрограммы переключить звук на линейный вход. Для этого подойдет утилита msndvol.exe, которая поставляется вместе с нашей программой (только для Windows XP).
Вот ее параметры запуска:

Sound volume console v1.3 Mar 24 2006. Copyright (c) 2005 Nata-Info Ltd.
Developed by Andrey Ivanov [jho@nata-info.ru]
Usage: msndvol.exe [options] 
options consist of the following parameters: 
volume - sound volume in percents 
/mute - switch the audio output line off 
/mute- - switch the audio output line on 
/linein+ - switch the line in source line on 
/linein- - switch the line in source line off 
/mic+ - switch the microphone source line on 
/mic- - switch the microphone source line off 
Укажите запуск утилиты с нужными параметрами в Планировщике заданий или Планировщике Windows. Так же задание можно вставить в плейлист.

среда, 8 августа 2012 г.

Версия 3.1.1

Готово обновление AdvertisePro 3.1.1 и Football3.1.1
Если у Вас все работает, то переустанавливать не обязательно.
Изменения:
Отказ от использования виртуального принтера NISBDC. Теперь его не надо устанавливать.
Исправлена ошибка, когда нельзя было править цветовую кривую.
В футболе таймер периода ограничен 45/90 мин (если переустановили программу, запустите ее с нажатой клавишей shift, ВНИМАНИЕ! это сбросит все установки).
В футболе второй игрок замены будет выбираться из запасных (в списке они без галочки).
Удалите принтер NISBDC, если он установлен.
Исправлены ошибки.

Перед установкой прочтите статью AdvertisePro 3.1

пятница, 6 июля 2012 г.

Шрифты для XP Embedded

У некоторых наших клиентов в качестве операционной системы используется Windows XP Embedded. Это урезанная версия Windows XP для встраиваемых устройств. Данная ОС ставилась из-за того, что Windows XP уже не продавалась, а не все наше ПО корректно работало на Windows 7. Если у Вас в некоторых диалогах (например Диалог создания заданий планировщика) из-за неправильно отображаемого шрифта невидно части диалога, то Вам нужно установить отсутствующий шрифт "MS Sans Serif". Для этого скачайте два шрифта с нашего ftp-сайта: Первый и Второй. Откройте Панель управления, найдите там Шрифты, откройте. Выберите вверху меню Файл/Установить шрифт и укажите папку с загруженными шрифтами. Установите их.

понедельник, 18 июня 2012 г.

Вывод аналогового видео с внешних источников (камеры) на экран

Вывод внешнего аналогового видеосигнала на экран возможен в случае, если установлена карата видеозахвата (TV-тюнер). Обычно все наши компьютеры поставляются с уже установленной картой видеозахвата. Если такой карты нет, можно приобрести ее самостоятельно. Обычно мы пользуемся картами фирм AverMedia, Beholder, FlyVideo, но должна подойти также любая WDM-совместимая карта или TV-тюнер. Тюнеры выпускаются для шин PCI или PCI-E - перед покупкой убедитесь, что у вас присутствует свободный разъем на материнской карте для выбранной карты. Убедитесь, что все драйвера для данной карты установлены. Также рекомендуется установить последнюю версию ПО AdvertisePro 3.1 или выше. Данная версия поддерживает все WDM-совместимые тюнеры. При установке выберите выборочную установку и укажите дополнительный элемент Аналоговое видео/WDM-совместимая плата.
После установки и запуска программы потребуется один раз задать размеры видеозахвата и размер для вывода, а также, возможно,  настроить параметры деинтерлейсинга (устранение чересстрочности) при размере кадра более 288 линий (половина кадра для сигнала PAL).
Откройте закладку Видео-источник (если ее нет, то при установке программы не был указан пункт Аналоговое видео).
Откройте меню Сервис/Настройка..., выберите пункт Аналоговое видео, справа нужно указать устройство из выпадающего списка WDM устройство (либо отключить его):
Пункт Масштабирование лучше указать Быстрое.
Закройте окно настроек.
Далее на закладке Видео-источник правой кнопкой мыши щелкните на большом черном прямоугольнике предпросмотра справа и выберите из списка пункт меню "Посмотреть возможности устройства". Если пункта нет, то устройство неправильно установлено либо не поддерживается. Раскройте список с типами поддерживаемых форматов:
В данном случае мы видим, что устройство поддерживает размеры вывода от 160х120 до 768х576. Некоторые карты выводят только в одном фиксированном размере, например 768х576, в последнем случае нам придется уменьшать изображение, чтобы вписать его в экран (если экран меньше  768х576). Далее будут рассмотрены оба случая, когда экран можно вписать в заданный диапазон и когда необходимо сжать изображение, чтобы вписать его в экран.
Закройте свойства с возможностями.


Зададим профиль оцифровки.

Красным обведен выпадающий список, нажав который нужно выбрать пункт Редактировать...
Откроется окно для создания профиля оцифровки:
Профиль По умолчанию настроен на размер 320х240, можно изменить его выбрав и нажав на кнопку Изменить... или добавить новый используя кнопку Добавить...
Далее откроется диалог с указанием параметров оцифровки:
В названии профиля укажите удобное для вас описание, например размер вашего экрана в пикселях, этот профиль потом будет легче выбрать, если вы создадите их несколько.

Вариант 1 (размер экрана входит в диапазон, поддерживаемый картой).


В группе "Размеры оцифровки"

необходимо указать размер получаемого кадра после оцифровки внешнего сигнала. Здесь надо учесть, что соотношение сторон должно быть 4:3, иначе кадр будет "плющить". Например, если экран у вас 480х240, то подходящий ему размер 480х360, или экран 320х288, то 384х288. Главное, что ваш экран полностью входит в указанный размер и соотношение сторон 4:3.

Координаты видимой части.

В поле Ширина и Высота укажите размер вашего экрана. X, Y - сдвиг, если пропорции экрана не соответствуют соотношению 4:3, их можно пока оставить равными 0.

Координаты вывода на экран.

X, Y = 0
Ширина и Высота - размеры экрана.

Вариант 2 (размер экрана меньше чем допустимый диапазон)


Размеры оцифровки.

Укажите размер, поддерживаемый картой.

Координаты видимой части.

X,Y укажите 0.
Ширину и Высоту укажите как в размере оцифровки или близко к ним, но старайтесь соблюсти соотношение сторон реального экрана. Например в размере оцифровки указано 768х576, а экран у вас 320х160 (т.е. соотношение сторон 2:1), тогда нужный размер 768х384, или экран 320х288 -> укажите 640х576. Если невозможно указать точно, укажите приблизительный размер, чтобы не сильно "плющить" изображение, когда не соблюдены соотношения высоты и ширины исходного изображения и размера экрана.

Координаты вывода на экран.

X, Y = 0
Ширина и Высота - размеры экрана. Если нужно вывести изображение только на часть экрана, укажите ее координаты и размер.

Нажмите кнопку Ok. Теперь созданный Вами профиль можно выбрать из списка. Если все правильно сделано, то на поле предварительного просмотра можно увидеть область выделенную пунктиром, именно она будет выведена на экран. Если это поле меньше размера оцифровки, то с помощью левой кнопки мыши можно захватить область и передвигать ее, чтобы добиться вывода нужной части (обычно ближе к середине)
В верхней части закладки можно увидеть 6 кнопок. По порядку:

  1. Включить/Выключить вывод на экран
  2. Выбор входного-видеоисточника. Выберите в поле Input - Composite/тюнер/S-Video и т.д
  3. Настройка свойств и форматов (PAL/NTSC/Secam и различные свойства: яркость, цветность...)
  4. Настройка деинтерлейса. Доступно, если высота оцифровки больше 288. Поиграйтесь различными методами удаления чересстрочности и выберите оптимальные.
  5. Отображать окно предпросмотра (можно отключить, чтобы уменьшить нагрузку на процессор).
  6. Сделать снимок кадра и сохранить в файл (см. Сервис/Настройка.../Аналоговое видео/каталог)
Теперь можно подать сигнал на карту или выбрать в качестве источника тюнер (кнопка 2). Телевидение обычно отдает композитный сигнал, для подключения которого может понадобиться переходник BNC-тюльпан. Также очень рекомендую использовать гальваническую развязку в месте подключения кабеля к карте видеозахвата, возможно может понадобиться видеоусилитель, все это, обычно, можно взять у телевизионщиков, которые будут давать вам картинку.

четверг, 3 мая 2012 г.

Вывод логотипов с прозрачным фоном.

Если добавить логотип с прозрачным фоном на вкладке Логотипы, то вместо прозрачного фона будет выведен черный цвет.
Чтобы вывести логотип с прозрачным фоном используйте следующую технику:
Создайте файл GDI-формы (пример), с размером вашего логотипа, именем файла и прозрачностью 100%.

<?xml version="1.0" encoding="UTF-8"?>
<gdiform width="60" height="30" background-color="black" warnings="0" transparency="100">
<image x="0" y="0" src="transparent.gif" stretchmode="preserveaspectrationoletterbox" />
</gdiform>


Фон логотипа должен быть прозрачный (*.gif, *.png)

Далее переходим на закладку логотипы и добавляем файл с созданной формой.

Football 3.1

Обновлено: Версия 3.1.1
Готова сборка Football.3.1 (Football.3.1.x64.msi)
При установке данной версии форма вывода футбола, часы, матричное табло автоматически подстраиваются под размер экрана (разумный размер, но если что-то не так, нужно подправить вручную). Напомню, что шрифты названий и турнира можно выбрать в настройках. Данная версия работает на Windows XP/Windows 7 (32 бита). Для x64 есть своя сборка, но рекомендуется ставить именно на 32-битные системы.
Во время установки будет предложено установить неподписанные драйвера - согласитесь. Если не установлен виртуальный принтер nisbdc - установите его сами, выберите производителя Nata-Info, принтер nisbdc, порт любой (можно file). Этот принтер нужен для правильного масштабирования информационных сообщений с фото. 
Также убедитесь, что шаблоны для информационных сообщений указаны правильно (они могут сохранится с предыдущей установки). Новые шаблоны универсальные и показывают изображение с фото или бегущей строкой в зависимости от того, есть ли фото у игроков (не забудьте зарегистрировать команды).
Если используется карта видеозахвата - не забудьте указать ее при установке.

четверг, 15 марта 2012 г.

AdvertisePro 3.1

Обновление: Версия 3.1.1
Готова предварительная версия AdvertisePro 3.1AdvertisePro3.1.x64 для WindowsXP/Windows7 (желательно использовать 32-битную версию ОС ).

Изменения в этой версии:
  • Добавлена поддержка Windows 7
  • AdvertiseMedia не требуется. Видеокодеки даны на откуп пользователю. Теперь Вы сами должны их устанавливать исходя из собственных потребностей.
  • В пакет установщика добавлены компоненты: Бегущая строка, Матричное табло, Быстрый вывод видео (вывод видео по горячим клавишам)
  • Видеозахват включает поддержку деинтерлейсинга при размере кадра более 288 линий.
  • Расширена поддержка плат видеозахвата.
  • Размер формы для вывода часов теперь всегда совпадает с размером экрана.
Порядок установки:
  1. Загрузите пакет с установщиком с нашего ftp-сайта ftp://ftp.nata-info.ru/software/AdvertisePro/AdvertisePro3.1.msi или ftp://ftp.nata-info.ru/software/AdvertisePro/AdvertisePro3.1.x64.msi
  2. Запустите установщик (у Вас должны быть достаточные права для выполнения этой операции на Windows 7).
  3. Согласитесь с условиями лицензии.
  4. Укажите размер экрана в модулях и типоразмер модуля.
  5. Укажите тип установки Обычная или Выборочная (не нажимайте Полная, некоторые компоненты являются взаимоисключающими). Если у Вас установлена карта видеозахвата нажмите Выборочная и выберите компонент "Аналоговое видео/WDM-совместимая плата". Также если Вам нужен запуск видеороликов при помощи нажатия указанных клавиатурных сочетаний выберите компонент "Быстрый вывод видео".
  6. (Пропустите этот пункт для версии 3.1.1) При установке будет предложено установить не подписанный драйвер, согласитесь на установку. Это драйвер виртуального принтера nisbdc, который нужен для правильного отображения размера символов в программе Титровальщик. После установки Вам нужно будет вручную добавить принтер, выберите из списка фирм Nata-Info, принтер nisbdc. Если Вы не собираетесь использовать титровальщик можно опустить это замечание.
  7. После установки настройте службу nibus (смотрите предыдущие статьи) и установите нужные видеокодеки.
Данный пакет не был достаточно тщательно протестирован и мы будем благодарны Вам за любые замечания к работе программы и установщика. В случае невозможности установки программы вы можете попробовать установить программу с включенным  журналом установки для обнаружения ошибки при установке пакета. Для этого запустите установку из командной строки следующей командой:
msiexec /log AP.log /i AdvertisePro3.1.msi
Файл журнала с ошибками AP.log можно выслать на support@nata-info.ru

четверг, 15 декабря 2011 г.

Установка AdvertisePro

Рекомендации по выбору компьютера.

Любой современный компьютер с процессором Intel и видеокартой от NVIDIA  (нужен один DVI выход для табло и второй выход для монитора) с 1GB ОЗУ годится для работы в качестве станции вывода видео. Если для конвертации RS232-RS485 используется Siolynx первого поколения (с подключением к COM-порту) или прямое подключение к оптическому передатчику DVI-мастер, то нужен также COM-порт на материнской плате или преобразователь USB<->COM или PCIe<->COM. Если экран не очень большой, то с задачей справлялся даже процессор ATOM D525 с NVIDIA ION 2.
Жесткий диск и DVD-привод на собственное усмотрение. Также, если необходим вывод внешнего источника аналогового видео, нужна плата видеозахвата.

Операционная система.

ПО AdvertisePro работает под Windows XP  желательно с установленным SP3. (Готова новая версия ПО Advertisepro 3.1, которая поддерживает Windows 7 и она не требует AdveriseMedia! Кодеки, если они нужны, ставите сами).
В принципе можно попробовать установить его на Windows 7 с отключенным UAC, но возможны различные "глюки" в интерфейсе и работе программы. Чтобы отключить UAC выберите ПУСК в левом нижнем углу и в строке "Найти программы и файлы" наберите uac в списке найденных выберите  "Изменение параметров контроля учетных записей" и передвиньте ползунок вниз, перезагрузитесь.

Установка ПО.

Все ниже перечисленное по можно найти на компакт диске из нашей поставки.
  • Если на компьютере еще не установлен .NET Framework 2.0 установите его. Можно загрузить у нас или воспользоваться диском \REDIST\NET_FRAMEWORK2.0\X86\REDISTRIBUTABLE_PACKAGE\dotnetfx.exe
  • Установите MSXML.4 SP2 взять можно у нас или на диске \REDIST\msxml.4\msxml.msi  
  • Установите dxtxtra.exe (\REDIST\dxtxtra.exe)
  • Установите набор кодеков AdevrtiseMedia. Если есть диск то просто запустите \AdvertiseMedia\Setup.exe, если загрузили AdvertiseMediaPack.zip, то распакуйте и запустите \AdvertiseMedia\Setup.exe. Может понадобится перезагрузка и повторный запуск установщика.
  • Для Siolynx2 понадобятся драйвера, загрузить, распаковать указать Диспетчеру Устройств. Должен появиться COM-порт.
  • Настроить службу nibus.
  • Открыть свойства экрана

    Выбрать второй экран, поставить галочку Расширить рабочий стол на этот монитор. Качество цветопередачи: Самое высокое (32 бита). Цвет рабочего стола лучше сделать черным, отключить заставку и режим выключения монитора после простоя.
  • Загрузить последнюю версию AdvertisePro и установить. Если плата видеозахвата не используется, лучше отключить ее в диалоге установки. Если не поддерживается установленная плата видеозахвата см. Поддержка плат видеозахвата с форматом YUV
  • Настроить управление яркостью
  • Если компьютер должен работать круглосуточно, рекомендую установить AdvertisePro Guard





четверг, 1 декабря 2011 г.

Мониторинг спортивных состязаний.

Иногда возникает необходимость получать информацию о текущем спортивном состязании, чтобы, например, можно было наложить ее на телевизионную картинку. Все данные об игре передаются по 485 интерфейсу используя протокол NiBUS. Подробные сведения по устройству протокола можно прочитать в документе NiBUS.pdf. Если Вы для прослушивания протокола NiBUS будете использовать компьютер под управлением Windows, а в качестве конвертера RS485-RS232 трансивер Siolynx/Siolynx2 (siolynx2.tech_ref.pdf), Вам необходимо будет установить на него службу NiBUS. На данный момент последняя версия nibus-v3.0.780.10.msi. После установки службы может потребоваться ее настройка (Настройка службы NIBUS). Этот дистрибутив также содержит примеры на C++:
  • NibusLog (VC2003), который снифит данные поступающие по nibus
  • NibusListener (VC2008), заготовка для написания обработчиков спортивных событий
Последний пример-заготовка позволяет быстро написать свой обработчик спортивных событий (время, счет и т.д). При необходимости можно добавить обработчики используя документ с расшифровкой основных информационных сообщений для спорта SportInfo.pdf. Обратите внимание 
  • CAppModuleEx::Init() - здесь строится стек протокола nibus (NibusListener.cpp)
  • CAppModuleEx::DoCapture(TRUE) - включить прослушку.
  • CNibusListenerView - получает и разбирает датаграммы
  • CNibusListenerView::OnTimerChanged - изменились данные таймера
  • CNibusListenerView::OnScoreChanged - изменился счет
  • CNibusListenerView::OnPeriodChanged - изменился период
Вместо Pin 1 для питания можно использовать Pin 2. 12V используется для питания пульта и может отсутствовать. Pin 4 и Pin 5 должны быть на одной паре, например - синяя и бело-синяя жилы, также как и Pin 3 и Pin 1/2.
Если возникли вопросы, то отпишитесь в комментариях  к данному сообщению.

Дополнение:

Гораздо удобнее с протоколом NiBUS можно работать с помощью .NET 4.0, поэтому, если для подключения к шине NiBUS Вы используете компьютер с Windows и установленным .NET Framework 4.0, то возможно стоит посмотреть как это реализовано на C#. В этом случае Вам не требуется установка службы NiBUS. Клиент для коммуникации по протоколу NiBUS должен использовать библиотеку libnibus.dll написанную на C#, также понадобятся библиотеки Async-CTP-v3 (AsyncCtpLibrary.dll, System.Threading.Tasks.Dataflow.dll) и NLog.dll для ведения журнала. Все это можно загрузить с с нашего ftp-сайта. Там же есть простейший пример для хоккея в архиве IceHockeyViewer.zip. Чтобы скомпилировать пример понадобится VS2010 и установленный Visual Studio Async CTP (Version 3). libnibus.xml - содержит подсказки для студии, а в libnibusdoc.chm - справка к библиотеке. Пример использует 14 COM-порт для взаимодействия с NiBUS, Вы должны не забыть указать свой. Также учтите, что при установленной VS 11 Beta пример не компилируется.

Важное дополнение:

Все примеры выше используют в качестве конвертера RS485<->RS232 Siolynx2 нашего производства. Наш конвертер, в отличие от обычных конвертеров, является более "интеллектуальным" устройством. Помимо приема/передачи данных он отвечает за разрешение коллизий в протоколе NiBUS. На выход пользователю он выдает Сетевой уровень (Глава 3 nibus.pdf). Если Вы используете обычный конвертер RS485<->RS232 Вам нужно обратить внимание на Канальный уровень (Глава 2). Он отличается от сетевого наличием специальных двухбайтовых маркеров, причем используется режим когда данные содержат 9 бит! Старший бит установлен именно у маркеров. Не все конвертеры могут поддерживать 9 бит данных. Обычно он обрезается до 8 бит. Некоторые конвертеры обрезают этот старший бит (данные можно обработать), другие могут обрезать младший (в этом случае информация неполная).

пятница, 25 ноября 2011 г.

APGuard. Следим за AdvertisePro.

К сожалению программам иногда свойственно зависать или падать, особенно если они работают круглосуточно. Не является исключением и наша программа вывода видео на табло - AdvertisePro. Чтобы сделать нашу жизнь чуточку проще :) - я написал службу, которая следит за тем, чтобы наша программа всегда была запущена и по возможности определяет, что программа продолжает трудится и не отлынивает зависнув. Необходимо уточнить, что программа будет запущенна сразу после входа пользователя в систему (имя пользователя можно указать). Поэтому может понадобиться настройка системы на автологон при рестарте или запуске компьютера. Также наша служба может следить и за некоторыми другими службами, которые нужны для программы - первый кандидат служба nibus. Итак, встречайте AdvertisePro Guard (APGuard)
Перед установкой убедитесь, что установлен .NET Framework 2.0, скачайте файл msi и установите его. После установки служба APGuard будет автоматически запускаться после рестарта, поэтому необходимо внести все настройки в конфигурационный файл APGuard.exe.config расположенном в папке с установленной программой. Рекомендую сделать резервную копию перед внесением изменений. После внесения изменений можно запустить службу командой net start apguard.

Теперь подробнее про файл APGuard.exe.config.

Открываем его текстовым редактором и находим нужный нам раздел.
Красным подчеркнут полный путь к наше программе, зеленым выделено пустое значение, а синим показан элемент списка названий служб, за которыми нам надо следить, просто добавьте такую же строчку, поменяв название службы, если необходимо следить еще за какой-нибудь службой. Временной интервал задается в формате ЧЧ:ММ:СС. Теперь описания каждого параметра:
  • AdvertiseProFile - полный путь к программе.
  • WorkingDir - рабочая папка. Если не задана, то папка с программой.
  • GuardTimerInterval - интервал проверки работоспособности, здесь каждые 10 сек.
  • CommandLineArgs - параметры для запуска программы.
  • WatchIpgm - проверять зависший ipgm.exe (если вы не знаете для чего это - оставьте).
  • IpgmMaxDuration - время в течении которого ожидается завершение выполнения ipgm.exe.
  • WatchApplication - выполнять наблюдение (True/False).
  • UserName - имя пользователя, при входе которого будет начато наблюдение и запущена программа. Если не указано, то для любого.
  • AppMoniker - название префикса моникера для нахождения запущенного экземпляра программы. Задается в файле конфигурации AdvertisePro.cfg, пример: <process priority="default" autonomous="false" debug_level="0" moniker="AdvertisePro:"></process>. Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro.
  • ShedulerName - имя компонента Планировщик (см. статьи про Планировщик и компоненты). Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro. Работает при указании AppMoniker.
  • RestartDelay - задержка при перезапуске программы. Необходима, так как при быстром рестарте предыдущий экземпляр программы не успевает выгрузиться и блокирует новый.
  • WatchedServices - список служб для наблюдения.
После внесения изменений запустите службу командой net start apguard. Если вы все указали правильно, то программа должна запуститься.
Служба APGuard хранит файл с журналом сообщений в папке .\logs в которую у нее должен быть доступ (касается особенно для систем Vista+ с активным UAC).

вторник, 22 ноября 2011 г.

VLC в роли проигрывателя

VLC - кроссплатформенный мультимедиа плеер с открытым исходным кодом. Для воспроизведения файлов мультимедиа не требуется установка дополнительных кодеков, они уже «встроены» в программу. VLC может воспроизводить DVD и потоковое незашифрованное (без DRM) видео (IPTV). Для удалённого управления программой можно использовать интерфейсы telnet, HTTP. Подробнее о VLC.
Я написал дополнение nidirectx (Nata-Info DirectX (DirectDraw) video output) которое позволяет использовать VLC для проигрывания плейлиста одновременно на двух мониторах. В качестве второго монитора используется видеоэкран (аналогично поступает и AdvertisePro). Данный плагин работает на ОС Windows XP и выше. Также используя это дополнение можно воспроизводить потоковое видео или устройство видеозахвата.

Установка.

  • Установите VLC (проверял версии 1.1.x)
  • Найдите папку plugins в месте установки VLC, скопируйте туда дополнение libnidirectx-plugin.dll
  • Чтобы не задавать каждый раз параметры в командной строке откройте файл конфигурации, расположенный в %APPDATA%\VLC\vlcrc. Учтите, что перевод строки там как в *NIX, поэтому в Блокноте строки не разделены, но FAR на F4 умеет разделять строки.
  • Найдите строку начинающуюся на #clone-vout-list= и измените на clone-vout-list=,nidirectx
    (удалите "решетку" в начале строки и не забудьте запятую в значении параметра)
  • Найдите строку #vout-filter= и измените ее на vout-filter=clone
  • Найдите строку начинающуюся на #width= измените на width=320 Вместо 320 поставьте ваше разрешение экрана по горизонтали.
  • Найдите строку начинающуюся на #height= измените на height=240, вместо 240 поставьте ваше разрешение экрана по вертикали
  • Чуть ниже будет строка начинающаяся на #crop= также убираем символ комментария и заменяем на crop=4:3 (320:240 -> 4:3). Для Вашего разрешения укажите свои пропорции.
  • В конец файла добавьте строки
    [nidirectx]
    nidirectx-device=\\.\DISPLAY2
  • В настройках экрана не забудьте расширить рабочий стол на второй монитор (режим DualView), отключить хранители экрана, задать черный фон для рабочего стола.

среда, 26 октября 2011 г.

НОВОСТЬ. Добавлена поддержка плат видеозахвата с форматом YUV.

Многие карты видеозахвата используют цветовую модель YUV (YUY2), которая не поддерживалась нашим программным обеспечением. Теперь есть возможность использовать и такие карты. Для этого необходимо установить обновление, которое можно взять с нашего ftp-сайта: ftp://ftp.nata-info.ru/software/dxcapture_update/dxcapture_update.zip
Также добавлен динтерлейс для высоты кадра более 288 линий.
Вот содержание файла readme.txt из архива:
Обновление для компонента DxCapture (видеозахват).

Добавлена поддержка плат видеозахвата с форматами YUY2 UYUV.
Добавлена поддержка деинтерлейса для кадров высотой более 288 линий (размер полукадра).
Установка:
Скопируйте содержимое архива в папку с установленной программой (с заменой dxcaptureu7.dll)
Установите один раз пакет поддержки VC2008 redist (vc2008redist_x86.exe), после установки файл можно удалить.
Запустите командный файл reg_dxcapture.cmd для регистрации библиотек.

Интерфейс:

Запустите программу. На вкладке "Видео-источник" появится кнопка с чередующимися полосами. Если высота кадра захвата превышает 288, то кнопка будет активна. Нажав на нее можно выбрать метод применяемый для устранения эффекта "гребенки" (денитерлейсинг). Выберите на закладке Deinterlace Settings лучший, на ваш взгляд, метод денитерлейса (при выборе пункта "Use DScaler Plug-in" нужно выбрать плагин из списка "DScaler Plug-in").

Рекомендации:

Для настройки размеров оцифровки выберите на вкладке "Видео-источник" профиль оцифровки из выпадающего списка (самый правый на панели) пункт "Редактировать". Представленные профили можно изменить или добавить новый.
Измените название профиля на удобное.
В секции "Размеры оцифровки" задайте размеры наиболее соответствующие размерам вашего экрана соблюдая пропорцию 4:3, чтобы не внести искажения в пропорций объектов. Некоторые карты могут не поддерживать все размеры (свойства карты можно посмотреть кликнув правой мышью по полю кадра видезахвата и выбрав пункт "Посмотреть возможности устройства"). В этом случае после сохранения изменений при повторном открытии будут выставлены наиболее близкие значения, вместо указанных вами.
В секции "Координаты видимой области" задайте размеры близкие к размерам указанным в секции "Размеры оцифровки", но соблюдая соотношения сторон вашего экрана. Эта область будет выделен на поле кадра захвата пунктирным прямоугольником, который можно таскать и изменять с помощью мыши.
В секции "Координаты вывода на экран" задайте размеры соответствующие вашему экрану.