Не определяет отсутствие бумаги в принтере (VKP-80II)

Автор Vladimir, ноя 28, 2017, 10:57

« предыдущая тема - следующая тема »
Вниз

Vladimir

ноя 28, 2017, 10:57 Последнее редактирование: ноя 28, 2017, 11:06 от Vladimir
Добрый день!
К Казначей ФА подключен принтер VKP-80II, установил вашу прошивку до версии 4.20 Для управления использую библиотеку FprnM45, драйвер ККМ: 8.15.2.0.
Проблема заключается в том, что я не могу получить код ошибки (процедура GetStatus) при отсутствии бумаги в принтере, всегда получаю - 0.
В итоге при закрытии чека (CloseCheck), получаю зависшее приложение (при подключении FPrint-77ПТК вместо Казначей ФА все работает).
Подскажите что делать?

Тех.Поддержка

#1
ноя 28, 2017, 18:29 Последнее редактирование: дек 05, 2017, 22:26 от Тех.Поддержка
Добрый день, Владимир.

Пришлите селф-тест с принтера и отчет "Информация о ККТ".

Для опроса готовности принтера перед печатью чека рекомендуется производить опрос принтера командой 45h.

Vladimir

Добрый день!
Пробую разобраться с опросом принтера командой 45h с помощью команды RunCommand. В документации АТОЛ в описании RunCommand нашел только данный пример (переделал на Delphi), но даже он у меня не работает, пишет - "Недопустимое число параметров". Параметры для АТОЛ 3.х другие?

  // Выплата денег (4Fh) с суммой 12.34 для протокола АТОЛ 2.х
// Установить параметры
ECR.ACKTimeout :=500;
ECR.ENQTimeout :=5000;
ECR.StreamFormat := 5; // Формат данных «шестнадцатиричный
// с 0 и разделителем»
// Войти в режим регистрации
ECR.OutboundStream := '56 01 00 00 00 30';
ECR.RunCommand(); // Выполнить команду
// Выплата денег
ECR.OutboundStream := '4F 00 00 00 00 12 34';
ECR.RunCommand(); // Выполнить команду
if ECR.InboundStream = '55 00 00' then exit;
// Команда выполнена успешно

Тех.Поддержка

#3
дек 12, 2017, 18:32 Последнее редактирование: дек 12, 2017, 18:43 от Тех.Поддержка
Добрый день, Владимир.

В описании драйвера (стр.337) указанно: "Драйвер может работать с ККМ по нескольким протоколам обмена".

Не совсем понятно из вашего примера, что вы хотите опросить принтер, командой низкого уровня 45h.

# Исполнение команд нижнего уровня с возвратом кода ошибки
def Run(command):
   D.put_CommandBuffer(command)
   D.RunCommand()
   return D.get_AnswerBuffer()

В качестве примера вы можете выполнить данную команду через наш драйвер ДТО 9. Для этого необходимо ввести команду 45 на вкладке "Нижний уровень" и нажать кнопку выполнить. Далее необходимо открыть полный лог драйвера, расположенный по адресу C:\Users\{имя пользователя}\AppData\Roaming\ATOL\drivers9\logs\fptr_log.txt посмотреть, с какими параметрами она выполняется нашим ДТО.

Вверх