+7(3412) 655-209

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

Содержание

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. Для Windows XP папки:%USERPROFILE%\Application Data\unidisplay\ для unidisplay.ini, %USERPROFILE%\Local Settings\Application Data\ для контекстов.

Для регистрации информационного дисплея на сервере 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 · Последние изменения: 2017/04/17 08:27 — Судовиков Дмитрий

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