488 lines
14 KiB
C++
Executable File
488 lines
14 KiB
C++
Executable File
#include "win02_home.h"
|
|
#include "globVars.h"
|
|
|
|
//#define BUTTONCOLOR "background-color: rgb(150,250,150)"
|
|
#define zeile1PB 10
|
|
#define zeile2PB 11
|
|
#define BUTTON_HEIGHT 50
|
|
|
|
extern void exitServiceModule(void);
|
|
|
|
|
|
T_win02::T_win02(hwinf *HWaccess, QWidget *parent) : QWidget(parent)
|
|
{
|
|
this->HWaccess = HWaccess;
|
|
|
|
myLayout = new QGridLayout;
|
|
|
|
QFont myTabFont;
|
|
myTabFont.setPixelSize(PIXELSIZE_LABEL);
|
|
|
|
QLabel *lab1 =new QLabel(tr("Service Main"));
|
|
lab1->setFont(myTabFont);
|
|
myLayout->addWidget(lab1,1,0);
|
|
|
|
QLabel *lab2 =new QLabel(tr("MachineNr:"));
|
|
lab2->setFont(myTabFont);
|
|
myLayout->addWidget(lab2,2,0);
|
|
|
|
QLabel *lab3 =new QLabel(tr("Borough,zone:"));
|
|
lab3->setFont(myTabFont);
|
|
myLayout->addWidget(lab3,3,0);
|
|
|
|
QLabel *lab4 =new QLabel(tr("Location:"));
|
|
lab4->setFont(myTabFont);
|
|
myLayout->addWidget(lab4,4,0);
|
|
|
|
QLabel *lab16 =new QLabel("DC Unique ID:");
|
|
lab16->setFont(myTabFont);
|
|
myLayout->addWidget(lab16,5,0);
|
|
|
|
// Anzeige: DC-connection
|
|
labState =new QLabel(tr("------------")); // datenverkehr läuft
|
|
labState->setFont(myTabFont);
|
|
labState->setFrameStyle(1);
|
|
myLayout->addWidget(labState,1,4);
|
|
|
|
myTabFont.setPixelSize(PIXELSIZE_DATA);
|
|
|
|
labMaNu1 =new QLabel(tr(" --- "));
|
|
labMaNu1->setFont(myTabFont);
|
|
myLayout->addWidget(labMaNu1,2,1);
|
|
|
|
labMaNu2 =new QLabel(tr(" --- "));
|
|
labMaNu2->setFont(myTabFont);
|
|
myLayout->addWidget(labMaNu2,2,2);
|
|
|
|
labBez =new QLabel(tr("-"));
|
|
labBez->setFont(myTabFont);
|
|
myLayout->addWidget(labBez,3,1);
|
|
|
|
labZone =new QLabel(tr("-"));
|
|
labZone->setFont(myTabFont);
|
|
myLayout->addWidget(labZone,3,2);
|
|
|
|
|
|
labLoc1 =new QLabel(tr("-"));
|
|
labLoc1->setFont(myTabFont);
|
|
myLayout->addWidget(labLoc1,4,1);
|
|
|
|
labLoc2 =new QLabel(tr("-"));
|
|
labLoc2->setFont(myTabFont);
|
|
myLayout->addWidget(labLoc2,4,2);
|
|
|
|
// pt_loc = new QPlainTextEdit();
|
|
// pt_loc->setFont(myTabFont);
|
|
// myLayout->addWidget(pt_loc,4,1);
|
|
|
|
labUID =new QLabel("-");
|
|
labUID->setFont(myTabFont);
|
|
myLayout->addWidget(labUID,5,1);
|
|
|
|
/*
|
|
movingTest = new QLabel();
|
|
movingTest->setFont(myTabFont);
|
|
myLayout->addWidget(movingTest,5,3);
|
|
//
|
|
*/
|
|
|
|
|
|
myTabFont.setPixelSize(PIXELSIZE_BUTTONS);
|
|
|
|
pb1 = new QPushButton(WIN02_LABEL_SHORT01);
|
|
pb1->setCheckable(false); // true = toggle button
|
|
pb1->setAutoDefault(false); // beim start aus
|
|
pb1->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb1->setFont(myTabFont);
|
|
pb1->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb1,zeile1PB,0);
|
|
connect(pb1, SIGNAL(clicked()), this, SLOT(ButtonPb1Clicked()));
|
|
|
|
pb2 = new QPushButton(WIN02_LABEL_SHORT02);
|
|
pb2->setCheckable(false); // true = toggle button
|
|
pb2->setAutoDefault(false); // beim start aus
|
|
pb2->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb2->setFont(myTabFont);
|
|
pb2->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb2,zeile1PB,1);
|
|
connect(pb2, SIGNAL(clicked()), this, SLOT(ButtonPb2Clicked()));
|
|
|
|
pb3 = new QPushButton(WIN02_LABEL_SHORT03);
|
|
pb3->setCheckable(false); // true = toggle button
|
|
pb3->setAutoDefault(false); // beim start aus
|
|
pb3->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb3->setFont(myTabFont);
|
|
pb3->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb3,zeile1PB,2);
|
|
connect(pb3, SIGNAL(clicked()), this, SLOT(ButtonPb3Clicked()));
|
|
|
|
pb4 = new QPushButton(WIN02_LABEL_SHORT04);
|
|
pb4->setCheckable(false); // true = toggle button
|
|
pb4->setAutoDefault(false); // beim start aus
|
|
pb4->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb4->setFont(myTabFont);
|
|
pb4->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb4,zeile1PB,3);
|
|
connect(pb4, SIGNAL(clicked()), this, SLOT(ButtonPb4Clicked()));
|
|
|
|
pb5 = new QPushButton(WIN02_LABEL_SHORT05);
|
|
pb5->setCheckable(false); // true = toggle button
|
|
pb5->setAutoDefault(false); // beim start aus
|
|
pb5->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb5->setFont(myTabFont);
|
|
pb5->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb5,zeile1PB,4);
|
|
connect(pb5, SIGNAL(clicked()), this, SLOT(ButtonPb5Clicked()));
|
|
|
|
pb6 = new QPushButton(WIN02_LABEL_SHORT06);
|
|
pb6->setCheckable(false); // true = toggle button
|
|
pb6->setAutoDefault(false); // beim start aus
|
|
pb6->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb6->setFont(myTabFont);
|
|
pb6->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb6,zeile2PB,0);
|
|
connect(pb6, SIGNAL(clicked()), this, SLOT(ButtonPb6Clicked()));
|
|
|
|
pb7 = new QPushButton(WIN02_LABEL_SHORT07);
|
|
pb7->setCheckable(false); // true = toggle button
|
|
pb7->setAutoDefault(false); // beim start aus
|
|
pb7->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb7->setFont(myTabFont);
|
|
pb7->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb7,zeile2PB,1);
|
|
connect(pb7, SIGNAL(clicked()), this, SLOT(ButtonPb7Clicked()));
|
|
|
|
pb8 = new QPushButton(WIN02_LABEL_SHORT08);
|
|
pb8->setCheckable(false); // true = toggle button
|
|
pb8->setAutoDefault(false); // beim start aus
|
|
pb8->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb8->setFont(myTabFont);
|
|
pb8->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb8,zeile2PB,2);
|
|
connect(pb8, SIGNAL(clicked()), this, SLOT(ButtonPb8Clicked()));
|
|
|
|
pb9 = new QPushButton(WIN02_LABEL_SHORT09);
|
|
pb9->setCheckable(false); // true = toggle button
|
|
pb9->setAutoDefault(false); // beim start aus
|
|
pb9->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb9->setFont(myTabFont);
|
|
pb9->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb9,zeile2PB,3);
|
|
connect(pb9, SIGNAL(clicked()), this, SLOT(ButtonPb9Clicked()));
|
|
|
|
pb10 = new QPushButton(WIN02_LABEL_SHORT10);
|
|
pb10->setCheckable(false); // true = toggle button
|
|
pb10->setAutoDefault(false); // beim start aus
|
|
pb10->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb10->setFont(myTabFont);
|
|
pb10->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb10,zeile2PB,4);
|
|
connect(pb10, SIGNAL(clicked()), this, SLOT(ButtonPb10Clicked()));
|
|
|
|
pb11 = new QPushButton("Exit Service");
|
|
pb11->setCheckable(false); // true = toggle button
|
|
pb11->setAutoDefault(false); // beim start aus
|
|
pb11->setMinimumHeight(BUTTON_HEIGHT);
|
|
pb11->setFont(myTabFont);
|
|
pb11->setStyleSheet(BUTTONCOLOR);
|
|
myLayout->addWidget(pb11,5,4);
|
|
connect(pb11, SIGNAL(clicked()), this, SLOT(ButtonPb11Clicked()));
|
|
|
|
QLabel *lab5 =new QLabel(tr(" "));
|
|
lab5->setFont(myTabFont);
|
|
myLayout->addWidget(lab5,6,0);
|
|
|
|
|
|
// Autosend:
|
|
AutSendButton = new QPushButton(tr("&Automatic\n reading")); // &A --> also keycode Alt-A possible
|
|
myLayout->addWidget(AutSendButton,3,4);
|
|
AutSendButton->setCheckable(true); // true = toggle button
|
|
AutSendButton->setAutoDefault(true); // beim start aus
|
|
AutSendButton->setMinimumHeight(50);
|
|
connect(AutSendButton, SIGNAL(clicked()), this, SLOT(callAutoSend()));
|
|
|
|
|
|
// new 4.6.2024: wake DC
|
|
AutSendButton = new QPushButton(tr("&Automatic\n reading")); // &A --> also keycode Alt-A possible
|
|
myLayout->addWidget(AutSendButton,3,4);
|
|
AutSendButton->setCheckable(true); // true = toggle button
|
|
AutSendButton->setAutoDefault(true); // beim start aus
|
|
AutSendButton->setMinimumHeight(50);
|
|
connect(AutSendButton, SIGNAL(clicked()), this, SLOT(callAutoSend()));
|
|
|
|
|
|
systTime = new QTime();
|
|
systDate = new QDate();
|
|
|
|
setLayout(myLayout);
|
|
myNextStep=0;
|
|
myStep=0;
|
|
|
|
myTO = new QTimer();
|
|
myTO->setSingleShot(true);
|
|
myTO->start(2000);
|
|
/*
|
|
moveTestStr.clear();
|
|
moveTestStr.append("1234567890abcdefgh");
|
|
movingTest->setText(moveTestStr);
|
|
*/
|
|
|
|
// lese Datei ../APserviceConfig.csv und speichere die Parameter global ab
|
|
QByteArray myBA;
|
|
int cchk, br;
|
|
|
|
myBA=datei_readFromFile(FILENAME_APSERVCONF);
|
|
cchk=csv_getEntryAsInt(myBA,1); // 2. entry = kind of coin checker
|
|
br=csv_getEntryAsInt(myBA,2); // 2. entry = kind of coin checker
|
|
globVar_SetCoinChecker(cchk);
|
|
globVar_SetBna(br);
|
|
|
|
// Test:
|
|
//int itmp=globVar_GetCoinChecker();
|
|
//if (itmp==3)
|
|
// pb10->setText("Changer");
|
|
//else
|
|
// pb10->setText(" EMP ");
|
|
|
|
}
|
|
|
|
T_win02::~T_win02()
|
|
{
|
|
close();
|
|
}
|
|
|
|
void T_win02::Nav_back(void)
|
|
{
|
|
myNextStep=WCS_WIN02BAK;
|
|
|
|
}
|
|
void T_win02::Nav_home(void)
|
|
{
|
|
// already here
|
|
myNextStep=WCS_WIN02MID;
|
|
}
|
|
void T_win02::Nav_next(void)
|
|
{
|
|
myNextStep=WCS_WIN02FWD;
|
|
}
|
|
|
|
|
|
void T_win02::ButtonPb1Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT01;
|
|
}
|
|
|
|
void T_win02::ButtonPb2Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT02;
|
|
}
|
|
|
|
void T_win02::ButtonPb3Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT03;
|
|
}
|
|
|
|
void T_win02::ButtonPb4Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT04;
|
|
}
|
|
|
|
void T_win02::ButtonPb5Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT05;
|
|
}
|
|
|
|
void T_win02::ButtonPb6Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT06;
|
|
}
|
|
|
|
void T_win02::ButtonPb7Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT07;
|
|
}
|
|
|
|
|
|
void T_win02::ButtonPb8Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT08;
|
|
}
|
|
|
|
|
|
void T_win02::ButtonPb9Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT09;
|
|
}
|
|
|
|
|
|
void T_win02::ButtonPb10Clicked(void)
|
|
{
|
|
myNextStep=WCS_WIN02SHORT10;
|
|
|
|
}
|
|
|
|
void T_win02::ButtonPb11Clicked(void) // Leave app (quit)
|
|
{
|
|
emit quitMyApp();
|
|
}
|
|
|
|
|
|
void T_win02::callAutoSend()
|
|
{
|
|
if (AutSendButton->isChecked())
|
|
{
|
|
HWaccess->dc_autoRequest(1);
|
|
} else
|
|
{
|
|
HWaccess->dc_autoRequest(0);
|
|
}
|
|
|
|
}
|
|
|
|
// ptu_switchWake(true);
|
|
|
|
|
|
bool T_win02::work_ini(uint16_t *nextScreen, uint8_t *useNavi)
|
|
{
|
|
// one state of the vending/operating FSM
|
|
// called ONE time after selecting this state (initialization)
|
|
// useNavi=0: no change
|
|
// bit0,1: enable/disable button "next"
|
|
// bit2,3: enable/disable button "home"
|
|
// bit4,5: enable/disable button "back"
|
|
|
|
*nextScreen=0; // needed 0=no change
|
|
//*useNavi=SWITCH_BACK_ON | SWITCH_HOME_OFF | SWITCH_NEXT_ON; just for master
|
|
*useNavi=SWITCH_BACK_ON | SWITCH_HOME_OFF | SWITCH_NEXT_ON;
|
|
|
|
myNextStep=0;
|
|
return false;
|
|
}
|
|
|
|
|
|
bool T_win02::working(uint16_t *nextScreen, uint8_t *useNavi, bool isBLup)
|
|
{
|
|
// one state of the vending/operating FSM
|
|
// called cyclic until this state changes intentionally to another state
|
|
// display informations for human operator, react on operators inputs or wait for payment media
|
|
|
|
// useNavi=0: no change
|
|
// bit0,1: enable/disable button "next"
|
|
// bit2,3: enable/disable button "home"
|
|
// bit4,5: enable/disable button "back"
|
|
uint8_t len, buf[64]; //, locBuf[32];
|
|
uint16_t cunu, manu, borough, zone, alias; //, uitmp;
|
|
|
|
|
|
QString myStr, tmpStr, locationStr;
|
|
//static int ctr;
|
|
uint8_t nn, uctmp; //, yl, yh;
|
|
//static int cyclCtr;
|
|
QByteArray myBA;
|
|
|
|
|
|
*nextScreen=0; // 0=no change
|
|
*useNavi=0;
|
|
|
|
if (myNextStep)
|
|
{
|
|
//qDebug()<<"fenster1 working: "<< myNextStep;
|
|
*nextScreen=myNextStep;
|
|
myNextStep=0;
|
|
return false;
|
|
}
|
|
|
|
tmpStr.clear();
|
|
|
|
// update values:
|
|
if (HWaccess->bl_isUp()==1)
|
|
//if (isBLup)
|
|
{
|
|
labState->setText(" DC2 Bootloader");
|
|
labState->setStyleSheet(COLOR_RED);
|
|
|
|
} else
|
|
if (HWaccess->sys_areDCdataValid())
|
|
{
|
|
labState->setText(" DC2 connected "); // datenverkehr läuft
|
|
labState->setStyleSheet(COLORGREEN);
|
|
} else
|
|
{
|
|
labState->setText(" no connection\n to DC ");
|
|
labState->setStyleSheet(COLORYELLOW);
|
|
//qDebug()<<"lost connection to DC";
|
|
}
|
|
|
|
HWaccess->readback_machineIDdata(&len, buf);
|
|
cunu=uchar2uint(buf[1], buf[0]); // binary, decimal
|
|
manu=uchar2uint(buf[3], buf[2]);
|
|
borough=uchar2uint(buf[5], buf[4]);
|
|
zone=uchar2uint(buf[7], buf[6]);
|
|
alias=uchar2uint(buf[9], buf[8]);
|
|
|
|
myStr.clear();
|
|
for (nn=0; nn<16; nn++)
|
|
{
|
|
uctmp=buf[nn+10];
|
|
if (uctmp>=32)
|
|
myStr+=QChar(uctmp);
|
|
}
|
|
labLoc1->setText(myStr);
|
|
|
|
myStr.clear();
|
|
for (nn=0; nn<16; nn++)
|
|
{
|
|
uctmp=buf[nn+26];
|
|
if (uctmp>=32)
|
|
myStr+=QChar(uctmp);
|
|
}
|
|
labLoc2->setText(myStr);
|
|
|
|
if (cunu>0 && manu>0)
|
|
{
|
|
myStr.clear();
|
|
myStr.append(QString::number(cunu));
|
|
myStr.append("-");
|
|
myStr.append(QString::number(manu));
|
|
labMaNu1->setText(myStr);
|
|
|
|
myStr.clear();
|
|
myStr.append(QString::number(alias));
|
|
labMaNu2->setText(myStr);
|
|
}
|
|
|
|
labUID->setText( HWaccess->dc_getUIDstr());
|
|
if (borough>0 || zone>0) // at least one
|
|
{
|
|
myStr.clear();
|
|
myStr.append(QString::number(borough));
|
|
labBez->setText(myStr);
|
|
|
|
myStr.clear();
|
|
myStr.append(QString::number(zone));
|
|
labZone->setText(myStr);
|
|
}
|
|
|
|
if (HWaccess->dc_isAutoRequestOn())
|
|
{
|
|
AutSendButton->setStyleSheet(COLORGREEN);
|
|
} else
|
|
AutSendButton->setStyleSheet(COLORWHITE);
|
|
|
|
|
|
/* just a test:
|
|
if (++cyclCtr>10)
|
|
{
|
|
cyclCtr=0;
|
|
int LL=moveTestStr.length()-1;
|
|
moveTestStr=moveTestStr.right(LL); // move left by one
|
|
moveTestStr.append("-");
|
|
movingTest->clear();
|
|
movingTest->setText(moveTestStr);
|
|
myBA.truncate(1);
|
|
}
|
|
*/
|
|
return false;
|
|
}
|
|
|