Главная 
 Каталог 
 Поддержка 
 Компания 
 Партнеры 
 1C:Франчайзинг 
 Карта сайта 

Задать вопрос
Часто задаваемые вопросы
Справочные материалы
Публикации


Поиск по сайту



Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация


Подписка

Изменение параметров





Hits 88190152
6070
Hosts 3936958
623
Visitors 18986910
1354

13


Поддержка / Форумы / Публичные форумы / Вопросы по контрольно-кассовой технике / Зависание ККМ (повтор)

  Зависание ККМ (повтор)

Версия для печати
RSS
Зависание ККМ (повтор)
 
Здраствуйте!

У нас возникает аналогичная проблема что и у basil.

Программное обеспечение: собственная разработка.
Операционная система: WinXP.

Статус обработки чека показывает значение близкое к 100%. Но, предположительно, функция WaitingStatus драйвера не отрабатывает необходимых действий в коде при нажатии ФЦ-ВВ

Код
StartWaiting(1)
while (WaitingStatus() == 1)
{
}
StopWaiting()


Спасибо.
 
Интересно, а у basil проблема разрешилась? Если Евгений Кокорникова не затруднит повторить объяснение, я был бы очень признателен.

Спасибо.
 
Начнем с того, что Basil так и не ответил на мой вопрос и я, к сожалению, не знаю разрешилась ли его проблема. Но у него, скорее всего была проблема с оборудованием, а у Вас еще непонятно :).

Опишите немного подробнее что именно происходит (и как часто это происходит), т.е. меня интересует пошаговая последовательность действий оператора и реакции на эти действия ККМ и Вашей программы. И еще уточните: Вы вызываете функции библиотеки из консольного приложения или приложения с GUI.
 
Спасибо Евгений, что откликнулись.

Программа на FoxPro 6.0.

По работе: 1 год эксплуатации все было хорошо, никто никого не "вешал". В этом году касса "вылетает" раз в 2-3 недели. Приходится отдавать в ремонт.

И соответственно главная проблема. Компьютер продолжает работать, программа "ждет". Касса не отрабатывает... Если проблема не решается, то объясните пожалуйста, логику работы: от нажатия "ФЦ-ВВ" до получения статуса завершеняи операции (WaitingStatus() == 0).

Спасибо
 
Логика работы следующая:

После вызова StartWaiting в библиотеке запускается таймер, который раз в 250 мс проверяет статус ККМ. Поскольку библиотека создавалась на Delphi и используется стандартный класс TTimer, то работает все следующим образом. Компилятор Delphi создает невидимое окно с именем "TPUtilWindow", через каждые 250 мс таймер посылает для окна сообщение, которое сначала попадает в очередь сообщений главного окна приложения и только затем переадресуется "TPUtilWindow". Если библиотека вызывается из консольного приложения, то очередь сообщений Windows не обрабатывается, и в этом случае необходимо самостоятельно организовывать перехват сообщений для скрытого окна таймера и пересылать полученное сообщение оконной функции. При получении сообщения вызывается обработчик события, в котором реализована проверка статуса ККМ. Если на ККМ выставлен признак запроса чека, то библиотека начинает передавать ККМ всю необходимую информацию. В процессе передачи данных периодически вызывается callback функция прогресса подготовки чека (разумеется, если она определена в Вашей программе). По завершению передачи данных библиотека ожидает завершения вывода чека (периодически опрашивая ККМ). Если вывод чека был успешно завершен или в процессе вывода чека произошла какая-либо ошибка (например, обрыв бумаги), то в вызывается соответствующая callback функция (опять же при условии, что она определена). Далее, в зависимости от того, с каким параметром была вызвана функция StartWaiting опрос будет либо остановлен (WaitingStatus сбросится в 0), либо не не будет остановлен (WaitingStatus останется в 1). Вот такая логика.

Правильно ли я понимаю, что в течение года все работало нормально, а затем началась, описываемая Вами проблема, учитывая то, что свою программу Вы при этом не изменяли? Т.е. проблема началась "на ровном месте" - все работало и в какой-то момент вдруг начались проблемы?
 
Да программа не менялась. "Ровность" места не гарантирую. Много в этом всяких составляющих: "железо", ОС, пользователи, которые все этим пользуются.

"По завершению передачи данных библиотека ожидает завершения вывода чека (периодически опрашивая ККМ)" - в данном случае драйвер посылает запрос и получает ответ или касса постоянно шлет статус?

Еще вопрос: в обработчике OnCheckPrepare(Progress: Integer) логика задания значений Progress (как во времени вычисляется значение)?

Спасибо.
 
Цитата
Тим писал(а):
"По завершению передачи данных библиотека ожидает завершения вывода чека (периодически опрашивая ККМ)" - в данном случае драйвер посылает запрос и получает ответ или касса постоянно шлет статус?

Касса абсолютно пассивна, она только выставляет признаки событий внутри себя, но ничего сама в канал не посылает. Поэтому для определения возникновения какого-либо события на ККМ библиотека сама обращается к ККМ.

Цитата
Тим писал(а):
Еще вопрос: в обработчике OnCheckPrepare(Progress: Integer) логика задания значений Progress (как во времени вычисляется значение)?

В зависимости от числа передаваемых строк заголовка и подвала, числа покупок и т.д. рассчитывается шаг увеличения прогресса и по завершению очередной логической операции (например передаче кассе информации об очередной покупке) вызывается callback функция в которую передается увеличенное на расчитанную величину значение прогресса.
 
Спасибо за ответы.







© 2000-2024 Версия-Т