From 560b6d32211b3c3591bcbad3ec25d3e92377352f Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Thu, 16 May 2024 15:20:52 +0200 Subject: [PATCH] Print: count undefined print result values and retry --- src/ATBAPP/ATBDeviceControllerPlugin.cpp | 16 ++++++++++++++-- src/ATBAPP/ATBDeviceControllerPlugin.h | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index 54b68ff..dcc8d8e 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -654,6 +654,7 @@ void ATBDeviceControllerPlugin::requestPrintReceipt(const QString & printingStri hw->prn_switchPower(true); hw->prn_setFonts(8,12,0,0); hw->prn_sendText(&ba); + this->printResultCheckCounter = 0; QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingReceipt())); //QTimer::singleShot(2000, this, [this](){ hw->prn_cut(3); } ); @@ -844,6 +845,7 @@ void ATBDeviceControllerPlugin::onPrinterDataPrepared() // note: calling prn_getPrintResult() immediately may result in wrong answer! // We have to wait "about some seconds" until calling this function! + this->printResultCheckCounter = 0; QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingTicket())); // old: use printer templates: @@ -867,8 +869,17 @@ void ATBDeviceControllerPlugin::onPrinterWaitForPrintingTicket() this->onPrintFinishedERR(); break; default: - qCritical() << "DC Error: wait for printing"; - this->onPrintFinishedERR(); + // result value is not defined (-> workaround for DC misbehaviour) + if (this->printResultCheckCounter < 10) { + this->printResultCheckCounter++; + qCritical() << "DC print result undefined: " << printerResult; + QTimer::singleShot(1000, this, SLOT(onPrinterWaitForPrintingTicket())); + } + else { + qCritical() << "DC Error: wait for printing"; + this->onPrintFinishedERR(); + } + break; } @@ -896,6 +907,7 @@ void ATBDeviceControllerPlugin::onPrinterPrintNextTemplate() if (this->currentTicket->templateList()->isEmpty()) { // all templates are printed + this->printResultCheckCounter = 0; QTimer::singleShot(2000, this, SLOT(onPrinterWaitForPrintingTicket())); } else { diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.h b/src/ATBAPP/ATBDeviceControllerPlugin.h index 4db4410..7337fc7 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.h +++ b/src/ATBAPP/ATBDeviceControllerPlugin.h @@ -129,6 +129,9 @@ private: // counts failed hw->log_chkIfVaultRecordAvailable() int accountCheckCounter; + // counts faild hw->prn-getPrintResult() + int printResultCheckCounter; + // dbus int init_sc_dbus();