+7(499) 450-28-09

Боковая панель

Содержание

docs:uav:components:universal_display:start

Авибус: Универсальный дисплей

«Авибус: Универсальный дисплей» – это приложение, отображающее динамической контент из АСУ на дисплее (например, табло рейсов, табло расписания, дисплей покупателя, рекламный дисплей или даже прогноз погоды). Приложение может работать как на рабочих компьютерах, так и на мини компьютерах под управлением ОС Windows, Linux (основанные на Debian).

Примеры некоторых экранов приложения:

Табло расписания автовокзала

Табло отправлений/прибытий автовокзала

Дисплей покупателя: выбор рейсов

Дисплей покупателя: выбор мест

Дисплей покупателя: оплата заказа

Архитектура приложения

Приложение содержит модуль отображения web-страниц и видео на экране монитора. Обмен данными с отображаемой web-страницей и сервером 1С осуществляется через клиент-серверный модуль, поддерживающий протокол SOAP. Также в приложении существует модуль автоматического выполнения действий в соответствии с файлом конфигурации.

Контекст – конкретная web-страница, видео ролик, представляет из себя конкретный файл, например Дисплей_покупателя_рейсы.html, Логотип_автовокзала.html, Реклама_автовокзала.avi;

Установка (Windows)

Для работы требуются компоненты Microsoft Visual C++ Redistributable Package.

Необходимо распаковать содержимое архива в любую папку, далее – скопировать файлы контента из папки demo_content в рабочую папку: %localappdata%/unidisplay/. При запуске unidisplay.exe создастся файл настроек unidisplay.ini в папке: %appdata%/unidisplay.

Для регистрации информационного дисплея на сервере 1С необходимо запустить его один раз и завершить выполнение программы. В системе будет создан информационный дисплей Администрирование – Настройки «Управление автовокзалами» – Информационные дисплеи .

01_information_display.jpg

Далее необходимо настроить созданный информационный дисплей.

02_main_scoreboard.jpg

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

Режимы работы приложения

По определенным событиям сервер 1С инициирует передачу данных с идентификатором их типа универсальному дисплею. Эти данные сохраняются в буфере и доступны по запросу html страницы отображаемой на универсальном дисплее.

Также от сервера 1С могут передаваться команды прямого управления для включения того или иного контекста, установки параметров универсального дисплея и т.д.

Помимо режима получения команд от сервера 1С, приложение может работать в автономном режиме, правила автономной работы описываются в конфигурационном файле default.rules в папке приложения.

При первом старте универсальный дисплей регистрируется на сервере 1С «Авибус: Управление автовокзалами» и становится доступным для настройки через интрфейс 1С.

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

В каждый момент работы приложение отображает один конкретный контекст: web-страницу или видеоролик. Команда отображения контекста, переданная от сервера, имеет приоритет и выполняется незамедлительно. Некоторые контексты имеют приоритет и могут быть переключены только вручную, например, контекст экстренных сообщений.

При отображении контекста, представляющего собой динамическую web-страницу, изменяющуюся информацию от сервера web-страница получает при помощи опроса локального web-сервиса приложения. Пример использования с jQuery Soap:

$.soap({
    url: 'http://localhost:8080/display/',
    method: 'getData',
    namespaceQualifier: 'ns',
    namespaceURL: 'urn:display',
    data: {key: 'schedule_table'},
 
    success: function (soapResponse) {
        // обработка soapResponse
 
        $data = $(soapResponse.toString()).find("ns\\:data");
        xmlDoc = $.parseXML(Base64.decode($data.find("data").text()));
        $xml = $( xmlDoc );
        makeBoard($xml);
        departVer = Number($data.find("ver").text());
    },
    error: function (SOAPResponse) {
        // обработка ошибки
    }
});

Данные, отправляемые сервером 1С самостоятельно или по запросу приложения, помечаются идентификатором, каждая новая порция данных с одним и тем же идентификатором перезаписывает старую и увеличивает на единицу номер версии данных. Доступны следующие виды данных:

  • schedule_table – данные о рейсах расписания автовокзала;
  • departure_table – данные о прибывающих рейсах;
  • arrival_table – данные об отправляющихся рейсах;
  • saleorder_trips – список рейсов в открытом рабочем места кассира;
  • saleorder_tickets – схема автобуса и выбранных мест в открытом рабочем места кассира;
  • saleorder_payment – итоговая информация по заказу в открытом рабочем места кассира.

На каждый экран можно вывести консоль отладки по горячей клавише Ctrl+Shift+L, чтобы закрыть ее необходимо нажать клавишу Esc.

Основные настройки

Все основные настройки приложения хранятся в текстовом файле unidisplay.ini в папке %USERPROFILE%/AppData/Roaming/unidisplay/.

Пользователь, от имени которого авторизуется универсальный дисплей, должен состоять в группе доступа с профилем Информационный дисплей

[General]
;URL сервера 1С "Авибус: Управление автовокзалами"
remote_server_url=http://demo.avibus.pro/albatros/ws/UDisplayPort/
 
;Порт локального web-сервиса
local_server_port=8080
 
;Настройки номера экрана
screen=\.\DISPLAY1
 
;Указание пути расположения медиаплеера, можно использовать относительный путь
player=mplayer/mplayer.exe
 
;Пользователь 1С от имени которого работает универсальный дисплей
license_server_user=wsuser
 
;Пароль пользователя 1С
license_server_passwd=sales
 
;Интерфейсе на котором запускается веб-сервис
target_subnet=192.168.0.0/24
 
;Принудительная установка id клиента, по умолчанию заполняется MAC-адресом
client_id=00:00:00:00:00:00
 
;Файл конфигурации сценария работы
rules_file=default.rules
 
;Уровень логгирования, 4-отключен
log_level=0

Файл конфигурации

Файл конфигурации описывает правила автономной работы приложения. Правила описываются как простые тригеры (событие, условие, действие).

События:

  • on_time «time_in_cron_format» – событие, генерируемое в определенное время, в формате cron (например time=0 20 * * 1-5, событие сработает в 20:00 каждый будний день);
  • on_startup – событие, генерируемое при старте дисплея;
  • on_context_time «seconds» – событие генерируется, когда дисплей находится в текущем контексте заданное время;
  • on_passive_time «seconds» – событие генерируется, когда время без активного управления со стороны сервера 1C достигает определенного значения в секундах;
  • on_data_modified «data_identificator» – событие, генерируемое при обновлении данных с определенным идентификатором.

Условия и переменные:

  • & – оператор логическое “И”;
  • ! – оператор логическое “НЕ”;
  • | – оператор логическое “ИЛИ”;
  • () – оператор порядка вычисления;
  • <, >, = – операторы строгого сравнения;
  • context() – текущий контекст и контент, строка;
  • year() – текущий год, число;
  • month() – текущий месяц, число от 1 до 12;
  • day() – текущее число месяца, число от 1 до 31;
  • time() – текущее время;
  • context_time() – время отображения контекста, число секунд;
  • weekday() – текущий день недели, число от 1 до 7.

Действия: quit

  • show_context («string») – установить контекст;
  • playlist ([«string_1»:<time_1>,«string_2»,«string_n»]) – проиграть плейлист, для html контекстов необходимо установить время показа в секундах;
  • repeat_playlist ([«string_1»:<time_1>,«string_2»,«string_n»]) – зациклить показ плейлиста;
  • quit () – закрыть приложение;
  • delay (seconds) – задержка в секундах.

Примеры правил:

[emergency_alert]
event: on_data_modified "alert"              ;событие изменения данных с id "alert"
condition:                                   ;условие отсутствует
action: show_context("html/alert.html")      ;отобразить экран с предупреждением
 
[show_adv_after_customer_display]            ;показ рекламы после дисплея покупателя
event: on_context_time "120"                 ;простой контекста в течении 120 секунд
condition: context = "customer_display.html" ;текущий контекст равен customer_display
action: {
        playlist (["ad1.avi","ad2.avi":10])  ;проиграть плейлист
        }
 
[show_hello_logo]                            ;показать приветственный логотип
event: on_time "55 7 * * *"                  ;время 7:55 утра каждого дня
condition:                                   ;условие отсутствует
action: {
        show_context ("adv_logo.html")       ;отобразить контекст adv_logo.html
        delay (25)                           ;задержка 10 секунд
        show_context ("board_table.html")    ;отобразить контекст табло автовокзала
        }
 
[turn_on_standby_lights]                     ;правило дежурного освещения
event: on_time "00 20 * * *"                 ;время 20:00 каждого дня
condition:                                   ;условие отсутствует
action: {
        show_context ("standby_lights.html") ;отобразить контекст standby_lights
        }
docs/uav/components/universal_display/start.txt · Последние изменения: 2022/07/06 15:13 — Судовиков Дмитрий

Инструменты страницы