Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Доработка операционной системы касс : УКМ-4

29.03.2024 11:35


18.02.2010 23:08
NGhost
 
Некоторые люди жалуются, что им не хватает чего-то в клиентской части УКМ, часть этих проблем связана с самой операционной системой (поддержка какого-либо железа, производительность). На мой взгляд дистрибутив ОС (порезаный RedHat) не оптимален и при небольшом вмешательстве можно добавить функционал или избавится от мелких "косячков" типа краха файловой системы. Вот например: задача сбора состояния касс (железо, загрузка ресурсов), времени их работы, банальная проверка ФС не очень то реализуема стандартними средствами, однако может быть легко решена установкой SNMP агента на кассах и небольшого скрипта. Хочется собрать какую-нибудь статистику по этому вопросу.
Быть может следует начать проект по созданию альтернативного дистрибутива UKM-Client?
Конечно, я не имею ввиду декомпиляцию программных продуктов С+ - занятие неблагодарное и наказуемое.
Однако, никто не запрещает и не может запретить ставить эти продукты на любой другой дистрибутив Linux, а также изменять этот дистрибутив по своему усмотрению.
23.02.2010 18:37
Onesoft
 
Цитата:
NGhost Некоторые люди жалуются, что им не хватает чего-то в клиентской части УКМ, часть этих проблем связана с самой операционной системой (поддержка какого-либо железа, производительность). На мой взгляд дистрибутив ОС (порезаный RedHat) не оптимален и при небольшом вмешательстве можно добавить функционал или избавится от мелких "косячков" типа краха файловой системы. Вот например: задача сбора состояния касс (железо, загрузка ресурсов), времени их работы, банальная проверка ФС не очень то реализуема стандартними средствами, однако может быть легко решена установкой SNMP агента на кассах и небольшого скрипта. Хочется собрать какую-нибудь статистику по этому вопросу.
Быть может следует начать проект по созданию альтернативного дистрибутива UKM-Client?
Конечно, я не имею ввиду декомпиляцию программных продуктов С+ - занятие неблагодарное и наказуемое.
Однако, никто не запрещает и не может запретить ставить эти продукты на любой другой дистрибутив Linux, а также изменять этот дистрибутив по своему усмотрению.
Потом в техподдержке сервис плюса вам скажут: негарантийный случай, со всеми проблемами (причём - не только на стороне клиента) разбирайтесь сами. Связано с тем, что каждая используемая версия УКМ сильно зависит от ядра и окружения ОС, и даже если на функционировании УКМ это не скажется пагубно, то при обновлении гарантированно могут возникнуть неразрешимые трудности. Достаточно часто при обновлении УКМ обновляется ядро линукса, обновляется мускул, апач и пхп. Для их обновления могут понадобиться такие средства ОС, которые для пробития чеков не нужны. Так что решайте, что вам дороже.
25.02.2010 16:36
NGhost
 
Ну ни так уж сильно и зависит.
Я потому и писал о "небольшой" доработке. Сами посудите - чем SNMP агент или немного измененные стартовые скрипты могут помешать обновлению. Не далее как на прошлой неделе успешно заработала последняя версия UPOS (клиент Сбербанк) на 42 версии, причем изменений в саму ОС внесено не было. По крону запускается проверка бд касс, SNMP агент отсылает trap`ы (ловит их zabbix) при окончании бумаги в ФР и прочих радостях типа отключения питания сканера ШК. Техподдержка при звонке из магазина уже приблизительно знает в чем причина, а иногда сама звонит еще до переполоха кассиров. Клиент доволен как кот, который объелся карасями.
Причем все изменения на кассе откатываются одной командой (делал на случай обращения в С+). На следующей неделе проверю как проходит обновление.
25.02.2010 16:52
NGhost
 
Для примера еще одна полезная штука - запрос IP адреса при заливке кассы изменения в файле /etc/rc.sysinit образа ukmrd (при обновлении этот файл перезаписывается).

Код:
#SET_IP BLOCK
if [ "$PROMPT_FOR_IPADDRESS" = "Y" -o "$PROMPT_FOR_IPADDRESS" = "y" ];
then
cp /etc/install.cfg /etc/install.grep
grep -v -e IPADDRESS -e NETMASK /etc/install.grep > /etc/install.cfg
rm /etc/install.grep
echo "=== Network configuration  ==="
echo
echo "Manual network setup selected"
echo "please set IP address."
echo
while :
do
read -p "Enter IP address: " man_ip
read -p "Enter Network mask: " man_mask
read -p "Enter default gate: " man_gate
read -p "DNS1: " man_dns1
read -p "DNS2: " man_dns2
read -p "Enter SERVER IP ADDRESS: " man_srv

echo
echo "==========================================="
echo "Network params are:"
echo "IP=$man_ip"
echo "MASK=$man_mask"
echo "Gate=$man_gate"
echo "DNS1=$man_dns1"
echo "DNS2=$man_dns2"
echo "SERVER ip address=$man_srv"
echo "==========================================="
echo
read -p "Is it correct (Yes-[Enter]/No-[n])?:" ip_correct

if [ -z "$ip_correct" -o "$ip_correct" = "y" ]; then
IPADDRESS=$man_ip
NETMASK=$man_mask
GW_IPADDRESS=$man_gate
DNS_SERVER_1_IPADDRESS=$man_dns1
DNS_SERVER_2_IPADDRESS=$man_dns2
SMB_SERVER_IPADDRESS=$man_srv
echo "Exporting variables."
export -p IPADDRESS GW_IPADDRESS NETMASK
export -p DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS SMB_SERVER_IPADDRESS
echo
echo "Configuration set."
break
fi
done
fi

## END
Т.е. Если в install.cfg будет строчка PROMPT_FOR_IPADDRESS=Y, то при заливке касса попросит вручную указать IP адрес и прочие параметры - удобно при заливке 5-10 касс одновременно.
25.02.2010 17:04
Mtirt
 
Цитата:
NGhost Для примера еще одна полезная штука - запрос IP адреса при заливке кассы изменения в файле /etc/rc.sysinit образа ukmrd (при обновлении этот файл перезаписывается).

Код:
#SET_IP BLOCK
if [ "$PROMPT_FOR_IPADDRESS" = "Y" -o "$PROMPT_FOR_IPADDRESS" = "y" ];
then
cp /etc/install.cfg /etc/install.grep
grep -v -e IPADDRESS -e NETMASK /etc/install.grep > /etc/install.cfg
rm /etc/install.grep
echo "=== Network configuration  ==="
echo
echo "Manual network setup selected"
echo "please set IP address."
echo
while :
do
read -p "Enter IP address: " man_ip
read -p "Enter Network mask: " man_mask
read -p "Enter default gate: " man_gate
read -p "DNS1: " man_dns1
read -p "DNS2: " man_dns2
read -p "Enter SERVER IP ADDRESS: " man_srv

echo
echo "==========================================="
echo "Network params are:"
echo "IP=$man_ip"
echo "MASK=$man_mask"
echo "Gate=$man_gate"
echo "DNS1=$man_dns1"
echo "DNS2=$man_dns2"
echo "SERVER ip address=$man_srv"
echo "==========================================="
echo
read -p "Is it correct (Yes-[Enter]/No-[n])?:" ip_correct

if [ -z "$ip_correct" -o "$ip_correct" = "y" ]; then
IPADDRESS=$man_ip
NETMASK=$man_mask
GW_IPADDRESS=$man_gate
DNS_SERVER_1_IPADDRESS=$man_dns1
DNS_SERVER_2_IPADDRESS=$man_dns2
SMB_SERVER_IPADDRESS=$man_srv
echo "Exporting variables."
export -p IPADDRESS GW_IPADDRESS NETMASK
export -p DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS SMB_SERVER_IPADDRESS
echo
echo "Configuration set."
break
fi
done
fi

## END
Т.е. Если в install.cfg будет строчка PROMPT_FOR_IPADDRESS=Y, то при заливке касса попросит вручную указать IP адрес и прочие параметры - удобно при заливке 5-10 касс одновременно.
Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
25.02.2010 18:49
Onesoft
 
Цитата:
Mtirt Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
Я застал ещё 26-ую версию - и там тоже это уже было.
25.02.2010 19:04
Onesoft
 
Цитата:
NGhost Ну ни так уж сильно и зависит.
Я потому и писал о "небольшой" доработке.
На тот момент не усмотрел я понятия "небольшая доработка" за фразами "неоптимальный порезанный RedHat" и "любой другой дистрибутив Linux"

Цитата:
NGhost Сами посудите - чем SNMP агент
Главное - чтобы не влияло на функциональность. Однако, косяки могут вылезти в самых неожиданных местах...

Цитата:
NGhost успешно заработала последняя версия UPOS (клиент Сбербанк) на 42 версии
Линуксовый клиент sb_pilot поддержан с 44й версии.

Цитата:
NGhost По крону запускается проверка бд касс, SNMP агент отсылает trap`ы (ловит их zabbix) при окончании бумаги в ФР и прочих радостях типа отключения питания сканера ШК
А питание сканера ШК как проверяете? УКМ не ждёт от него постоянного подключения и при разрыве связи/пропадении питания ошибки не возникает, в отличие от ФР, клавиатуры или дисплея покупателя..
26.02.2010 14:55
NGhost
 
Самый простой вариант - /proc/tty/driver/serial
26.02.2010 14:57
NGhost
 
Цитата:
Mtirt Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
Проблема в том, что у клиента для которого писался скрипт 42 версия, а в ней такого функционала нет.
26.02.2010 23:32
Onesoft
 
Цитата:
NGhost Проблема в том, что у клиента для которого писался скрипт 42 версия, а в ней такого функционала нет.
Утверждение неверно: вот файл install.cfg.skel, так называемый скелет, на основе которого создаётся install.cfg на флешке/дискете, достал я его из дистрибутива 42sp6 (уверяю тебя, вплоть до 26 версии было так же - за более ранние версии утвержать не стану, с ними в С+ я уже не работал):

#!/bin/sh

SMB_SHARE=//SMB_SERVER/SHARE_NAME
SMB_SHARE_DIR=
SMB_USER=username
SMB_PASSWORD=password
SMB_WORKGROUP=WORKGROUP

IPADDRESS=
NETMASK=
GW_IPADDRESS=
SMB_SERVER_IPADDRESS=
DNS_SERVER_1_IPADDRESS=
DNS_SERVER_2_IPADDRESS=
PROMPT_FOR_IPADDRESS=

INSTALL_CLI=Y
INSTALL_SRV=N
AUTOSTART=Y
SRV_NAME=UKMSERVER_NAME
SRV_CODE=0001

# ! WARNING ! DON'T EDIT PARAMETERS BELOW THIS LINE
SCRIPTS_FILE=scripts.tar.gz
E2TOOLS_FILE=e2tools.tar.gz
UKM_BOOT_FS_FILE=ukm-boot.tar.gz
UKM_ROOT_FS_FILE=ukm-root.tar.gz
UKM_KMODS_FILE=ukm-kmods.tgz
UKM_SOFT=ukm-cli.tar.gz
XWIN_FILE=xwin.tgz

STAGE2_FILE=
SAVE_LOG=Y
SRV_SOFT=ukm-srv.tgz

KERNEL_BOOT_PARAMS=

export KERNEL_BOOT_PARAMS
export UKM_KMODS_FILE SMB_SHARE SMB_USER SMB_WORKGROUP SMB_PASSWORD
export SMB_SERVER_IPADDRESS IPADDRESS GW_IPADDRESS NETMASK
export DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS PROMPT_FOR_IPADDRESS
export SCRIPTS_FILE E2TOOLS_FILE UKM_BOOT_FS_FILE UKM_ROOT_FS_FILE UKM_SOFT
export STAGE2_FILE AUTOSTART SAVE_LOG
export INSTALL_CLI INSTALL_SRV XWIN_FILE
export SRV_SOFT SRV_NAME SRV_CODE

Если в строке "PROMPT_FOR_IPADDRESS=" добавить "Y", то заливка терминала бует сопровождаться запросом IP-адреса.
Часовой пояс GMT +3, время: 11:35.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.