Содержание
Содержание
«Авибус: Универсальный дисплей» – это приложение, отображающее динамической контент из АСУ на дисплее (например, табло рейсов, табло расписания, дисплей покупателя, рекламный дисплей или даже прогноз погоды). Приложение может работать как на рабочих компьютерах, так и на мини компьютерах под управлением ОС Windows, Linux (основанные на Debian).
Примеры некоторых экранов приложения:
Табло расписания автовокзала
Табло отправлений/прибытий автовокзала
Дисплей покупателя: выбор рейсов
Дисплей покупателя: выбор мест
Дисплей покупателя: оплата заказа
Приложение содержит модуль отображения web-страниц и видео на экране монитора. Обмен данными с отображаемой web-страницей и сервером 1С осуществляется через клиент-серверный модуль, поддерживающий протокол SOAP. Также в приложении существует модуль автоматического выполнения действий в соответствии с файлом конфигурации.
Контекст – конкретная web-страница, видео ролик, представляет из себя конкретный файл, например Дисплей_покупателя_рейсы.html
, Логотип_автовокзала.html
, Реклама_автовокзала.avi
;
Для работы требуются компоненты Microsoft Visual C++ Redistributable Package.
Необходимо распаковать содержимое архива в любую папку, далее – скопировать файлы контента из папки demo_content в рабочую папку: %localappdata%/unidisplay/
. При запуске unidisplay.exe создастся файл настроек unidisplay.ini в папке: %appdata%/unidisplay
.
Для регистрации информационного дисплея на сервере 1С необходимо запустить его один раз и завершить выполнение программы. В системе будет создан информационный дисплей Администрирование – Настройки «Управление автовокзалами» – Информационные дисплеи .
Далее необходимо настроить созданный информационный дисплей.
Вид табло – определяет наборы данных, доступных для информационного дисплея.
Наименование – название информационного дисплея.
Пользователь – указывается пользователь, от имени которого будет авторизоваться информационный дисплей.
Источники данных – указываются Остановка или Рабочее место для получения изменяющихся данных, например, данные от рабочего места кассира для режима дисплей покупателя.
По определенным событиям сервер 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
Файл конфигурации описывает правила автономной работы приложения. Правила описываются как простые тригеры (событие, условие, действие).
События:
Условия и переменные:
Действия: quit
Примеры правил:
[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 }