From 48d6a34b16348f750bbf804e8428cccec7c34543 Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Thu, 18 May 2023 11:57:54 +0200 Subject: [PATCH] ATBAPP: Rework for ticket printing --- include/interfaces.h | 4 +- src/ATBAPP/ATBDeviceControllerPlugin.cpp | 48 +++++++++++++++++------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/include/interfaces.h b/include/interfaces.h index 5261c31..31856ce 100644 --- a/include/interfaces.h +++ b/include/interfaces.h @@ -76,8 +76,8 @@ struct Tprn_currentSettings { struct T_dynDat { uint8_t licensePlate[8]; uint8_t vendingPrice[8]; - uint8_t parkingEnd[8]; - uint8_t currentTime[8]; + uint8_t parkingEndTime[8]; + uint8_t parkingEndDate[8]; uint8_t currentDate[8]; uint8_t dynDat5[8]; uint8_t dynDat6[8]; diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index d0520b2..5d48e66 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -76,24 +76,46 @@ void ATBDeviceControllerPlugin::requestPrintTicket(const QHashlicensePlate, codec->fromUnicode(printingData["licenseplate"].toString()).data(), 8); - memcpy((char*)dynTicketData->vendingPrice, codec->fromUnicode(printingData["amount"].toString()).data(), 8); + QByteArray ba_licenseplate = codec->fromUnicode(printingData["licenseplate"].toString()); + memcpy((char*)dynTicketData->licensePlate, ba_licenseplate.data(), std::min(ba_licenseplate.size(),8)); - QDateTime parkingEndQDateTime = QDateTime::fromString(printingData["parkingEnd"].toString(), Qt::ISODate); - QDateTime currentDateTime = QDateTime::fromString(printingData["currentTime"].toString(), Qt::ISODate); + QByteArray ba_amount = codec->fromUnicode(printingData["amount"].toString()); + memcpy((char*)dynTicketData->vendingPrice, ba_amount.data(), std::min(ba_amount.size(),8)); - memcpy((char*)dynTicketData->parkingEnd, codec->fromUnicode(parkingEndQDateTime.toString("hh:mm")).data(), 8); - memcpy((char*)dynTicketData->currentTime, codec->fromUnicode(currentDateTime.toString("hh:mm")).data(), 8); - memcpy((char*)dynTicketData->currentDate, codec->fromUnicode(currentDateTime.toString("dd.MM.yy")).data(), 8); + QByteArray ba_parkingEndTime = codec->fromUnicode(parkingEndDateTime.toString("hh:mm")); + memcpy((char*)dynTicketData->parkingEndTime, ba_parkingEndTime.data(), std::min(ba_parkingEndTime.size(),8)); + + QByteArray ba_parkingEndDate = codec->fromUnicode(parkingEndDateTime.toString("dd.MM.yy")); + memcpy((char*)dynTicketData->parkingEndDate, ba_parkingEndDate.data(), std::min(ba_parkingEndDate.size(),8)); + + QByteArray ba_currentDate = codec->fromUnicode(currentDateTime.toString("dd.MM.yy")); + memcpy((char*)dynTicketData->currentDate, ba_currentDate.data(), std::min(ba_currentDate.size(),8)); + + + // DEBUG + /* + uint8_t* buf = dynTicketData->licensePlate; + int length = 64; + for (int i = 0; i < length; ++i) { + fprintf(stderr, "%d %02x %c\n", i, buf[i], buf[i]); + } + fprintf(stderr, "\n"); + */ // DEBUG qCritical() << "ATBDeviceControllerPlugin::requestPrintTicket()";