Closed ghost closed 2 years ago
Добрый день. По логу видно, что ошибка возникает при выполнении команды 0xFF0C, "Передать произвольную TLV структуру". При помощи этой команды добавить два одинаковых тега в чек нельзя. По приведенному коду эта команда вызываться не должна. Нужен лог драйвера, чтобы стало понятнее.
@VitalyKravtsov2016 лог драйвера, здесь другой текст ошибки и происходит она на другой команде, но тем не менее проблема та же PrintCheque51LogsJpos.txt
Добрый день. По логу видно, что в чеке 2 команда записи тегов чека: D/com.shtrih.jpos.fiscalprinter.FiscalPrinterService: directIO(SMFPTR_DIO_FS_WRITE_TLV, null, [B@25436d68) D/com.shtrih.jpos.fiscalprinter.FiscalPrinterService: directIO(SMFPTR_DIO_FS_WRITE_TLV, null, [B@da06a7b) Данные в лог не записаны (нужно это поправить), поэтому сказать что передаются одинаковые теги нельзя. По логу нельзя сказать где ошибка, в драйвере или в приложении. Ошибка происходит при повторной записи тега в чек: D/com.shtrih.fiscalprinter.PrinterProtocol_1: sendCommand: Fiscal storage: write TLV data, false D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 05 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 15 D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 02 0B FF 0C 1E 00 00 00 21 04 01 00 40 82 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 06 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 02 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 03 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- FF 0C 00 F0 D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 06 D/com.shtrih.fiscalprinter.SMFiscalPrinterImpl: FF0Ch, Fiscal storage: write TLV data = 0, 60 ms D/com.shtrih.fiscalprinter.SMFiscalPrinterImpl: FF0Ch, Fiscal storage: write TLV data D/com.shtrih.fiscalprinter.PrinterProtocol_1: sendCommand: Fiscal storage: write TLV data, false D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 05 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 15 D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 02 0B FF 0C 1E 00 00 00 21 04 01 00 40 82 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 06 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 02 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- 03 D/com.shtrih.fiscalprinter.PrinterProtocol_1: <- FF 0C 33 C3 D/com.shtrih.fiscalprinter.PrinterProtocol_1: -> 06
Проверю драйвер, сделаю более полную запись данных в лог. Если есть дополнительная информация, например лог приложения, присылайте.
@VitalyKravtsov2016 не знаю, насколько это поможет, но вот еще один файла с логами драйвера, где исходная ошибка о повторе тега уже есть PrintCheque51Logcat.txt
Понятнее пока не стало - так же две команды записи тега в чек: 2022-01-28 18:02:38.553 6427-6485/ru.eastbanctech.mobileregistrator.dev D/com.shtrih.jpos.fiscalprinter.FiscalPrinterService: directIO(SMFPTR_DIO_FS_WRITE_TLV, null, [B@1bd08ae0) 2022-01-28 18:02:38.805 6427-6485/ru.eastbanctech.mobileregistrator.dev D/com.shtrih.jpos.fiscalprinter.FiscalPrinterService: directIO(SMFPTR_DIO_FS_WRITE_TLV, null, [B@d20f8d3)
@VitalyKravtsov2016 правильно ли передавать данные поставщика как мы это делаем в примере, который я прислал ранее?
printer.fiscalReceiptType = FiscalPrinterConst.FPTR_RT_SALES
printer.beginFiscalReceipt(true)
val writer = TLVWriter()
val phoneTag = 1171
val supplierNameTag = 1225
val supplierDataTag = 1224
val innTag = 1226
writer.add(phoneTag, "+79136195732")
writer.add(supplierNameTag, "Тест")
printer.fsWriteOperationTag(supplierDataTag, writer.bytes)
printer.fsWriteOperationTag(innTag, "5448100656")
printer.setParameter(SmFptrConst.SMFPTR_DIO_PARAM_ITEM_SUBJECT_TYPE, 4)
printer.printRecItem("Товар1", 0, 1000000, 1, 10000, "0")
printer.fsWriteOperationTag(supplierDataTag, writer.bytes)
printer.fsWriteOperationTag(innTag, "5448100656")
printer.setParameter(SmFptrConst.SMFPTR_DIO_PARAM_ITEM_SUBJECT_TYPE, 4)
printer.printRecItem("Товар2", 0, 1000000, 1, 10000, "0")
printer.printRecTotal(20000, 20000, "0")
printer.endFiscalReceipt(true)
Мы с помощью TLVWriter записываем телефон и наименование и далее передаем через fsWriteOperationTag с тегом 1224. Возможно неправильно так передавать эти теги? Мы делаем так перед каждым printRecItem, передавая один и тот же телефон и наименование. Если это неверно, то какой правильный способ отправить эту информацию, в случае если данные поставщика для некоторых позиций могут совпадать?
Добрый день. Вы все делаете правильно. Лучше использовать writer.addTag: writer.addTag(phoneTag, "+79136195732") Тогда хотя бы будет проверен идентификатор тега. printer.fsWriteOperationTag(innTag, "5448100656") выдает ошибку, потому что ИНН принимается 12 символов. Если ИНН 10 символов, то они должны дополняться пробелами: "5448100656 " В новой версии это сделает драйвер. Также можно отключить строгий ФЛК в таблица ФР.
@VitalyKravtsov2016 здравствуйте! Увидели, что появилась новая версия драйвера 642. Попробовали распечатать с ней. Вот лог операции. Здесь, вроде бы, теперь выводятся теги, возможно станет яснее в чем может быть проблема. PrinterLog.txt
Добрый день. В ФФД 1.2 нет тега 1057, есть тег 1222
@VitalyKravtsov2016 на наших терминалах мы используем ФН с версией ФФД 1.05. Может ли в таком случае возникать наша проблема недопуском повтора тега в текущем документе, если используем тег 1057 вместо 1222? Требуется ли убрать тег 1057 и перейти на 1222?
Здравствуйте, стали получать ошибку при передаче данных поставщика, когда печатаем более, чем одну позицию в чеке. Ниже пример кода
Ранее этот код работал и таким образом выводились данные поставщика, когда выставлен признак агента "Агент". Мы используем версию драйвера 633, но проблема на удивление воспроизводится и на более старых версиях драйвера, хотя ранее все работало.
Ниже лог с этой ошибкой, воспроизводится стабильно и на нескольких устройствах 51PrinterError.txt
Помогите понять, как решить эту проблему