Ошибка -3804 "Неверное количество"

Автор Валерий, июн 23, 2017, 15:38

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

Валерий

июн 23, 2017, 15:38 Последнее редактирование: июл 12, 2017, 02:26 от AlexeyK
Здравствуйте, есть вопрос по драйверу ДТО 9.9.1, ККМ Казначей ФА, версия для linux x64, C++ интерфейс. Я пытаюсь напечатать простой пробный чек, в одном случае у меня это получается, а другом нет. Код практически идентичен, но во втором случае при регистрации первой позиции в чеке, метод Registration(), появляется ошибка -3804 "Неверное количество", хотя количество точно такое, как и в первом случае - 1. Не могу понять, в чем проблема. Прикрепляю полные логи драйвера для первого случая - good_log.txt, и для второго - bad_log.txt.
По совету техподдержки обновил прошивку Казначея с 3377 до 4093, драйвер с 9.9.1 до 9.10.0, проблема не исчезла.
Что подскажете? Может я что-то неправильно делаю, какие-то не те параметры ставлю, хотя в первом случае оно все-таки работает, чек печатается, ошибок нет.

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

Валерий, прикрепите пожалуйста логи из ДТО 9.10. Уточните, полную версия ОС и её разрядность. А также какие библиотеки используете, т.е. из какой папки их запускаете?

Валерий

ОС Linux Mint 18 4.4.0-21-generic x86_64
Библиотеки libfptr.so, libudev.so.0, libusb-1.0.so.0 лежат в папке с исполняемым файлом put_DeviceSingleSetting() SearchDir = ./

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

Я хотел узнать библиотеки из какой папки из ДТО 9.10 берете?

Используют ли Вы библиотеку decnumber?

Я правильно понимаю, Вы пробиваете несколько чеков подряд, ничего при этом не меняете, один чек пробивается, второй чек не пробивается, выходит ошибка? Так как ситуация у вас повторяется, при каких условиях это повторяется?

Валерий

Библиотеки беру из папки linux-x64, decnumber не использую.
Есть 2 исполняемых файла, один - демка, она просто печатает чек, написал ее, чтоб попробовать и понять, как пользоваться драйвером, чек печатается нормально. Пример из документации драйвера тоже работает нормально. Переношу этот кусок кода в другой проект - не работает, выдает ошибку при вызове метода Registration(), последовательность вызова методов и параметры точно такие, флаги компиляции тоже. После установки значения ifptr->put_Quantity(1) специально проверяю значение ifptr->get_Quantity(), возвращает 1, как и положено, но при вызове Registration() ошибка - "Неправильное количество".

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

Валерий, выясняем причину такого поведения, нужен работающий и неработающий код целиком.

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

Валерий, ждём от Вас работающий и неработающий код целиком, необходим разработчикам для анализа, пришлите пожалуйста на нашу почту - ask@kaznachej.com

Валерий

Код целиком, к сожалению, не могу. Работающий код полностью аналогичен примеру из документации, по неработающему могу описать последовательность вызов методов и значения параметров, которые вытащил из лога(в прищепке), кроме вызовов этих методов там больше ничего особенного не происходит.
Временно решил проблему тем, что вместо вызова метода Registration() посылаю команду <E6h> "Регистрация позиции" с помощью метода RunCommand(), работает без ошибок, чек печатается.

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

Т.к. баг фантомный - то код работает, то код не работает с одинаковыми методами (только проекты разные), а неработающего кода нет, на данный момент разработчикам трудно понять в чем проблема. Возможно, что неработающий проект как-то криво собрался.

По поводу команды E6, мы не рекомендуем её использовать. Для добавления позиции используйте команду комплексной регистрации позиции EA - EB.

kuzin

#9
июл 05, 2017, 16:24 Последнее редактирование: июл 05, 2017, 16:30 от kuzin
Была похожая проблема, когда пытался передать целое число в поле Quantity (вместо вещественного).

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

#10
июл 28, 2017, 11:54 Последнее редактирование: авг 01, 2017, 15:52 от Тех.Поддержка
Вышла новая версия ДТО 9.10.1 Просьба протестировать работу с данным драйвером. Скачать можно здесь.

Вверх