Установил клиенту OLS 2.7 из новой поставки, где кассовый сервер выполнен как служба. Так вот, при загрузке компа сразу процессор загружается на 100%, видно в диспетчере задач. Пробовал работать с обычным как приложение, но что-то подвисает. Что-то может не так сделал? Что проверить?
WinXP SP2 OSP версии 2.7.78
SQL установлен. Программа уже в работе. Касса Касби-02К,RS232.
При установке OSP сначала установил кассовый сервер как приложение, запустил, но он зависал в системном трее- такое раньше уже бывало. Затем я установил OSP еще раз в другую папку уже как службу. Все работало, потом через несколько дней заметил, что касса иногда отрабатывает с задержкой, проверил загрузку проца 100%, так дальше он всегда и работает с такой загрузкой. Да и еще, когда мышкой кликаю по значку в системном трее открывается только желтое окно чистое.
Да, действительно ситация со 100% загрузкой процессора при работе с кассовым сервером в виде службы имеет место быть. Сейчас разбираюсь с этой проблемой. По готовности сообщю.
После обновления служба процессор уже не загружает, но проблемы остались...
1) Если запущена служба, то при работе с ККМ через несколько сканирований служба зависает. При клике на значок в трее пишет "Не отвечает". Сброс зависшей службы через диспетчера задач и перезапуск.
2) Работа с приложением. Если приложение после запуска минимизировать в трей, то через некоторое время работы ККМ (обычно не более получаса), приложение так же зависает - на мониторчике в трее перестает крутиться кружок и ккм пишет "Подождите..." При клике на значок в трее ничего не происходит пока не сбросишь через диспетчер задач.
Если приложение не пускать в трей, а оставить как есть или свернуть, то зависаний пока не наблюдаолось.
3) По информации в чеке. Сейчас выводится наименование товара вместе с кодом слитно. Т.Е. если товар "Хлеб" с кодом 1234, то в чеке будет "1234Хлеб". Нужно, чтобы было просто наименование без кода.
Перенос наименования на следующую строку делается слишком рано, до конца чека еще остается много символов. Надо бы увеличить количество символов в строке до переноса.
Работа программы проверялась на двух разных компах. Данные по подключении те же , что и выше в посте. CashServer 2.7.81.653, CSService 2.7.81.106, OnLineKasbi02 1.0.0.20
Спасибо за внимание, жду ответа...
Вообще не буду говорить про OSP, но подобное уже наблюдалось с другими приложениями. Когда в XP окно программы делается неактивным и невидимым, то через какое-то время система автоматом урезает этому приложению квант рабочего времени.
На некоторых задачах сиё решалось тем, что вместо того, чтобы сделать окно невидимым, его делали просто за экраном и пассивным. Сброс кванта времени не наблюдался.
Удачи.
Любой сервисный процесс исполняется с большим приоритетом, чем обычные программы, и если в сервисном коде имеется бесконечный цикл, то всё тормозит - решение - понизить приоритет для потока с бесконечным циклом.
Удачи.
Torquader, Вы это разработчикам или нам ЦТОшникам? У меня эти программы в 10 магазинах работают, но проблему работы при минимизации в системный трей еще не решили. Всем пользователям приходиться объяснять:"Ни в коем случае не нажимать этот четвертый квадратик слева, а то придется перегружать компьютер".
А если то,что вы написали правда - значит программа недоработана...
Я просто говорю, что в XP имеется подобный глюк, и по идее должен выйти сервис-патч для XP, в котором подобное исправлено.
А стоит ли на тех машинах, где это происходит, второй сервис патч ?
Да, конечно стоит. Сегодня вот опять клиенты позвонили, что приложение зависло. Это по самой новой версии программы. А прежние, которые работали без возможности минимизации в системный трей, были намного стабильней. Только уже не помню какие это были версии...
Torquader: На некоторых задачах сиё решалось тем, что вместо того, чтобы сделать окно невидимым, его делали просто за экраном и пассивным. Сброс кванта времени не наблюдался.
При работе сервера как приложения именно так и сделано.
Есть предположение, что это как-то связано с отображением анимированной иконки в трее - зависание потока анимирования может влиять на потоки опроса касс. Попробуем переделать иконку на статическую (запущен - одна иконка, остановлен - другая) и вышлем Вам для проверки.
По поводу иконок - есть мнение, что нужно отключать возможность сокрытия иконок, так как сообщения от сокрытых иконок система не обрабатывает.
Вообще, взаимодействие иконок реализовано через сообщение WM_COPYDATA, то есть передачу области памяти из одного приложения в другое.
При этом, есть вероятность, что просто дескрипторы памяти могут закончится.
(Мною проверялось, что до полторы тысячи иконок в трей залазит без проблем, но вот обновление иконки может приводить к тому, что на каждое обновление расходуется область дескриптора).
Просто при ошибке в WM_COPYDATA система пытается освободить память, то есть из приложения сообщение отослано, а возврат из функции вызова не происходит, пока система не сможет передать данные.
Поэтому ... статическая иконка явно будет проще ... или использовать не замену иконки, а удаление и добавление.
Удачи.
Также можно работу с иконкой выкинуть вообще в отдельный поток, а лучше в процесс, который взаимодействует с основным через Mutex.