Оглавление |
---|
Описание
В кассовом меню доступен раздел Внешние приложения, позволяющий прямо из интерфейса кассы осуществлять запуск разнообразных внешних приложений и пользовательских скриптов.
...
Выход во внешние приложения доступен только для версии ISO-образа кассы не ниже 1.28.1!
В меню доступны:
...
Клавиатурная касса | Touch-касса |
---|---|
...
Настройки выхода во внешние приложения осуществляются на кассовом сервере УКМ 5 по адресу: Магазин – Типы касс, где нужно выбрать тип кассы и нажать кнопку Настройки:
В появившемся иерархическом древе необходимо найти конфигурационный файл external_apps.conf (applications\external_apps\external_apps.conf), где в список приложений app_list нужно добавить следующую конфигурацию:
Блок кода | ||||
---|---|---|---|---|
| ||||
launcherPossition = 1400 # Очередность расположения кнопки на экране
name = "Внешние приложения" # Надпись на кнопке (может быть длиной от 1 до 30 символов)
app_list : [
{
name : "cutecom", # Название кнопки на экране "Внешние приложения"
command : """start_cutecom.sh""" # Полное имя скрипта с его расположением (при параметре isExclusive = true указываем только название скрипта в папке /home/ukm5/mint/bin/ext_apps/)
isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском (по умолчанию – false, если отсутствует - тоже false)
}
{
name : "xterm", # Название кнопки на экране "Внешние приложения"
command : """/home/ukm5/mint/bin/ext_apps/start_xterm.sh""" # Полное имя скрипта с его расположением
}
{
name : "freerdp", # Название кнопки на экране "Внешние приложения"
command : """start_xterm.sh""" # Полное имя скрипта с его расположением (при параметре isExclusive = true указываем только название скрипта в папке /home/ukm5/mint/bin/ext_apps/)
isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском (по умолчанию – false, если отсутствует – тоже false)
}
] |
В файле external_apps.conf (applications\external_apps\external_apps.conf) задаются только названия кнопок, адреса запуска скриптов, а также дополнительный параметр остановки кассового модуля. Непосредственно скрипты запуска внешних приложений располагаются на самой кассе.
Настройка и запуск протокола RDP (для доступа к серверу Windows)
Успешный выход во внешние системы на базе ОС Windows, осуществляемый через протокол RDP, требует выполнения трех обязательных условий:
1. На сервере Windows должен быть настроен доступ по RDP. Осуществление этих настроек полностью возлагается на пользователя и в данном руководстве не описано.
2. На кассовом сервере также должны быть выполнены необходимые настройки.
3. На кассе должен находиться готовый скрипт запуска приложения под названием xfreeRDP, включая реквизиты для входа, а также файл подключения с RDP-фермы.
...
Общие настройки выхода во внешние системы через RDP аналогичны описанным выше и так же производятся в файле external_apps.conf (applications\external_apps\external_apps.conf) по адресу Магазин – Типы касс на кассовом сервере УКМ 5, куда добавляется следующий фрагмент:
Блок кода | ||||
---|---|---|---|---|
| ||||
{
name : "FreeRDP", # Наименование кнопки во Внешних приложениях
command : """start_freerdp.sh""" # Название скрипта в папке /home/ukm5/mint/bin/ext_apps/ на кассе
isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском
} |
Например:
Имя скрипта start_freerdp.sh следует заменить на другое, чтобы в ходе будущих обновлений этот скрипт-пример не затёрся.
В файле external_apps.conf (applications\external_apps\external_apps.conf) на кассовом сервере задается только наименование кнопки в разделе кассового меню Внешние приложения, а также название скрипта запуска приложения, который будет размещен в папке /home/ukm5/mint/bin/ext_apps/ на кассе. Кроме того, здесь же указывается дополнительный параметр остановки кассового модуля (когда запуск скрипта производится с выключением кассового модуля и последующим его запуском вновь).
Лог запуска пишется в файл /home/ukm5/mint/bin/logs/application.log. Живет на касссе
работа и ошибки самого скрипта – в service-имя_скрипта.log.
Сам скрипт - на кассе в папке /home/ukm5/mint/bin/ext_apps/ в файле формата BASH или SHELL, с правами 766.
Написание скриптов запуска внешних приложений полностью возлагается на пользователя. Все внешние скрипты должны располагаться в папке /home/ukm5/mint/bin/ext_apps/ и иметь права запуска 766. Если после завершения работы кассового модуля и завершения работы пользовательского скрипта необходимо вновь возобновить работу кассового модуля, то в пользовательском скрипте должны быть прописаны следующие команды:
Функция (необходимо расположить в начале скрипта):
result()
{
if [ $? -ne 0 ]; then
echo "ERROR"
exit 1
fi
}
result_with_restart()
{
if [ $? -ne 0 ]; then
echo "ERROR"
...
exit 1
fi
}
Эту часть нужно разместить в конце скрипта:
result_with_restart
echo "==== UI started"
echo
echo "==== starting mint service"
systemctl start mint
result
echo "==== mint service started"
...
exit 0
Чтобы работа и ошибки самого скрипта отразились в логе, надо добавить в начало скрипта:
MINT_DIR="/home/ukm5/mint/bin"
NAME=$(tail $MINT_DIR/.ext_app)
LOGFILE=$MINT_DIR/logs/service-$NAME.log
И у каждой команды, от к-рой требуется вывод сообщения в лог, добавить >> $LOGFILE.
Логи пишутся в папку /home/ukm5/mint/bin/logs/: лог запуска скрипта пишется в application.log, работа и ошибки самого скрипта – в service-имя_скрипта.log.
Горячие клавиши:
- Right ALT+TAB – переключение между открытыми приложениями;
- Right ALT+F4 – закрытие активного приложения в фокусе.
- Остальные - в офиц. док-ции Openbox
...
В настройках на самой кассе необходимо скопировать скрипт запуска RDP start_freerdp.sh: и сделать из него свой, подобный, например
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
#!/bin/bash
MINT_DIR="/home/ukm5/mint/bin" # Папка исполняемых файлов УКМ5 кассы
NAME=$(tail $MINT_DIR/.ext_app) # Имя скрипта
LOGFILE=$MINT_DIR/logs/service-$NAME.log # Лог файл
LOGIN='Admin' # Логин пользователя Windows
PASSWORD='One1' # Пароль пользователя Windows
IP_ADDR='' # IP адрес или доменное имя подключения RDP
PORT='3389' # Порт подключения RDP
RDPFILE='/home/ukm5/mint/bin/ext_apps/1c.rdp' # Файл подключения RDP с Windows RDP фермы
#COM_01='/serial:COM1,/dev/ttyS0,Serial,permissive' # Пример проброса COM порта
#COM_07='/serial:COM7,/dev/ttyACM0,Serial,permissive' # Пример проброса USB-COM порта (работает на основании драйвера в ubuntu, сканер работает плохо)
COM_1='' # COM порты
COM_2='' #
COM_3='' #
COM_4='' #
COM_5='' #
COM_6='' #
COM_7='' #
COM_8='' #
COM_9='' #
#PRINTER_00='/printer' #
PRINTER='' # Принтер
result() # Функция выхода из скрипта при критической ошибке запуска
{
if [ $? -ne 0 ]; then
echo "ERROR"
exit 1
fi
}
result_with_restart() # Функция перезапуска кассового модуля при завершении скрипта с ошибкой
{
if [ $? -ne 0 ]; then
echo "ERROR"
echo
echo "==== starting mint service"
systemctl start mint
result
echo "==== mint service started"
echo
echo "==== starting UI"
export DISPLAY=:0
su ukm5 -c "$MINT_DIR/start_chrome.sh >/dev/null 2>&1 &"
echo "==== UI started"
exit 1
fi
}
echo "==== $0 started $(date) ===========" # Запуск RDP
echo
echo "==== stopping mint service" # Останавливаем mint
systemctl stop mint
result_with_restart
echo "==== mint service stopped"
echo
echo "==== starting freerdp" # Запускаем RDP
export DISPLAY=:0
#/opt/freerdp-nightly/bin/xfreerdp /u:$LOGIN /p:$PASSWORD /v:$IP_ADDR:$PORT /cert-ignore $COM_1 $COM_2 $COM_3 $COM_4 $COM_5 $COM_6 $COM_7 $COM_8 $COM_9 $PRINTER /multitouch /f +compression >> $LOGFILE
/opt/freerdp-nightly/bin/xfreerdp $RDPFILE /u:$LOGIN /p:$PASSWORD /cert-ignore >> $LOGFILE #без multitouch - 1С с ними не работает
result_with_restart
echo "==== UI started"
echo
echo "==== starting mint service" # Запускаем mint после выхода/дисконнекта RDP
systemctl start mint
result
echo "==== mint service started"
echo
echo "==== $0 completed $(date) ========="
exit 0 |
Приложение xfreerdp позволяет подключаться по разным параметрам, также есть возможность использовать файл формата .rdp.
...
remoteapplicationcmdline:s:ENTERPRISE /S"DEV-16-AS-001\V8_DEV_XXX"/RunModeOrdinaryApplication
...
Настройки данного функционала подробно описаны здесь.