#include "win07_coin.h" T_win07::T_win07(hwinf *HWaccess, QWidget *parent) : QWidget(parent) { this->HWaccess = HWaccess; myLayout = new QGridLayout; QFont myTabFont; // Überschrift myTabFont.setPixelSize(PIXELSIZE_LABEL); QLabel *LAB_HEAD = new QLabel("Cash Devices"); LAB_HEAD->setFont(myTabFont); myLayout->addWidget(LAB_HEAD, 0,0); QLabel *Led_empty = new QLabel(" "); myLayout->addWidget(Led_empty, 0,2); myLayout->addWidget(Led_empty, 0,5); myLayout->addWidget(Led_empty, 6,0); myLayout->addWidget(Led_empty, 8,0); QLabel *ShutLab3 = new QLabel(tr(" MDB Bus")); ShutLab3->setFont(myTabFont); myLayout->addWidget(ShutLab3, 1,0); QLabel *ShutLab4 = new QLabel(tr("Coin Blocker")); ShutLab4->setFont(myTabFont); myLayout->addWidget(ShutLab4, 1,3); QLabel *ShutLab5 = new QLabel(tr("Coin Escrow")); ShutLab5->setFont(myTabFont); myLayout->addWidget(ShutLab5, 1,6); myTabFont.setPixelSize(PIXELSIZE_BUTTONS); shut_PB1 = new QPushButton(" MDB\nPower"); shut_PB1->setCheckable(true); // true = toggle button shut_PB1->setAutoDefault(true); // beim start ein (weil mdb Spannung default EIN ist) shut_PB1->setFont(myTabFont); myLayout->addWidget(shut_PB1, 2,0); connect(shut_PB1, SIGNAL(clicked()), this, SLOT(pbMdbPow())); myTabFont.setPixelSize(PIXELSIZE_LABEL); labMdbPowDev = new QLabel("dev"); labMdbPowDev->setFrameStyle(QFrame::Box | QFrame::Sunken); labMdbPowDev->setLineWidth(3); // 1,2,3 labMdbPowDev->setMaximumWidth(60); labMdbPowDev->setStyleSheet("background-color: white"); // white red green labMdbPowDev->setFont(myTabFont); myLayout->addWidget(labMdbPowDev, 2,1); QLabel *ShutLab30 = new QLabel(tr(" MDB 5V\nalways on")); ShutLab30->setFont(myTabFont); myLayout->addWidget(ShutLab30, 3,0); labMdbPowBus = new QLabel("bus"); labMdbPowBus->setFrameStyle(QFrame::Box | QFrame::Sunken); labMdbPowBus->setLineWidth(3); // 1,2,3 labMdbPowBus->setMaximumWidth(60); labMdbPowBus->setStyleSheet("background-color: white"); // white red green labMdbPowBus->setFont(myTabFont); myLayout->addWidget(labMdbPowBus, 3,1); myTabFont.setPixelSize(PIXELSIZE_BUTTONS); shut_PB2 = new QPushButton(" MDB wake\n out"); shut_PB2->setCheckable(true); // true = toggle button shut_PB2->setAutoDefault(true); // beim start ein shut_PB2->setFont(myTabFont); myLayout->addWidget(shut_PB2, 4,0); connect(shut_PB2, SIGNAL(clicked()), this, SLOT(pbMdbWak())); myTabFont.setPixelSize(PIXELSIZE_LABEL); labMdbWakIn = new QLabel("wake\n In"); labMdbWakIn->setFrameStyle(QFrame::Box | QFrame::Sunken); labMdbWakIn->setLineWidth(3); // 1,2,3 labMdbWakIn->setMaximumWidth(60); //labMdbWakIn->setMaximumHeight(60); labMdbWakIn->setStyleSheet("background-color: white"); // white red green labMdbWakIn->setFont(myTabFont); myLayout->addWidget(labMdbWakIn, 4,1); /* motor dauerlauf nicht nötig rejMot_PB5 = new QPushButton(" reject motor:"); rejMot_PB5->setCheckable(true); // true = toggle button rejMot_PB5->setAutoDefault(false); // beim start aus rejMot_PB5->setStyleSheet("background-color: white"); rejMot_PB5->setFont(myTabFont); myLayout->addWidget(rejMot_PB5, 5,1); connect(rejMot_PB5, SIGNAL(clicked()), this, SLOT(PB5clicked())); */ QLabel *empty2 = new QLabel(" "); empty2->setFont(myTabFont); myLayout->addWidget(empty2, 5,0); QLabel *rej_label = new QLabel("reject motor"); rej_label->setFont(myTabFont); myLayout->addWidget(rej_label, 6,0); myTabFont.setPixelSize(PIXELSIZE_BUTTONS); QPushButton *rejMot_PB6 = new QPushButton(" Turn"); rejMot_PB6->setCheckable(false); // true = toggle button rejMot_PB6->setAutoDefault(false); // beim start aus rejMot_PB6->setFont(myTabFont); myLayout->addWidget(rejMot_PB6, 7,0); connect(rejMot_PB6, SIGNAL(clicked()), this, SLOT(pbRejectTurn())); myTabFont.setPixelSize(PIXELSIZE_LABEL); labRejSw = new QLabel(" "); labRejSw->setFrameStyle(QFrame::Box | QFrame::Sunken); labRejSw->setLineWidth(3); // 1,2,3 labRejSw->setMaximumWidth(60); labRejSw->setMaximumHeight(40); labRejSw->setStyleSheet("background-color: white"); // white red green labRejSw->setFont(myTabFont); myLayout->addWidget(labRejSw, 7,1); // 2. Spalte // read Coin-Attached-Input labBlockFree = new QLabel(" - "); labBlockFree->setFrameStyle(QFrame::Box | QFrame::Sunken); labBlockFree->setLineWidth(3); // 1,2,3 labBlockFree->setMaximumWidth(80); labBlockFree->setMaximumHeight(40); labBlockFree->setStyleSheet("background-color: white"); labBlockFree->setFont(myTabFont); myLayout->addWidget(labBlockFree, 2,3); // readback Slot is Open (right from uC-output) labSlotPower = new QLabel(""); labSlotPower->setFrameStyle(QFrame::Box | QFrame::Sunken); labSlotPower->setLineWidth(3); // 1,2,3 labSlotPower->setMaximumWidth(25); labSlotPower->setMaximumHeight(25); labSlotPower->setStyleSheet("background-color: white"); labSlotPower->setFont(myTabFont); myLayout->addWidget(labSlotPower, 3,4); // coin blocker myTabFont.setPixelSize(PIXELSIZE_BUTTONS); Led_PB17 = new QPushButton("Open Slot\n"); Led_PB17->setCheckable(true); // true = toggle button Led_PB17->setAutoDefault(false); // beim start aus Led_PB17->setFont(myTabFont); myLayout->addWidget(Led_PB17, 3,3); connect(Led_PB17, SIGNAL(clicked()), this, SLOT(pbShutOpen())); // Coin Blocker: open for 3s QPushButton *Led_PB27 = new QPushButton("Open for 3s\n"); Led_PB27->setCheckable(false); // true = toggle button Led_PB27->setAutoDefault(false); // beim start aus Led_PB27->setFont(myTabFont); myLayout->addWidget(Led_PB27, 4,3); connect(Led_PB27, SIGNAL(clicked()), this, SLOT(pbShut3s())); /* nicht nötig QPushButton *Led_PB28 = new QPushButton("\nOpen 4 Coin\n"); Led_PB28->setCheckable(true); // true = toggle button Led_PB28->setAutoDefault(false); // beim start aus Led_PB28->setFont(myTabFont); myLayout->addWidget(Led_PB28, 4,3); connect(Led_PB28, SIGNAL(clicked()), this, SLOT(PB28clicked())); */ pb_ledas = new QPushButton("LED issue"); pb_ledas->setCheckable(true); // true = toggle button pb_ledas->setAutoDefault(false); // beim start aus pb_ledas->setFont(myTabFont); myLayout->addWidget(pb_ledas, 7,3); connect(pb_ledas, SIGNAL(clicked()), this, SLOT(pbLEDclicked())); // coin Escrow, 3. Spalte myTabFont.setPixelSize(PIXELSIZE_LABEL); labEscrowSw = new QLabel(" switch"); labEscrowSw->setFrameStyle(QFrame::Box | QFrame::Sunken); labEscrowSw->setLineWidth(3); // 1,2,3 labEscrowSw->setStyleSheet("background-color: white"); labEscrowSw->setFont(myTabFont); myLayout->addWidget(labEscrowSw, 2,6); /* nicht nötig Led_PB18 = new QPushButton("\nOpen Take"); Led_PB18->setCheckable(true); // true = toggle button Led_PB18->setAutoDefault(false); // beim start aus Led_PB18->setFont(myTabFont); myLayout->addWidget(Led_PB18, 3,6); connect(Led_PB18, SIGNAL(clicked()), this, SLOT(PB18clicked())); Led_PB19 = new QPushButton("\nOpen Give"); Led_PB19->setCheckable(true); // true = toggle button Led_PB19->setAutoDefault(false); // beim start aus Led_PB19->setFont(myTabFont); myLayout->addWidget(Led_PB19, 4,6); connect(Led_PB19, SIGNAL(clicked()), this, SLOT(PB19clicked())); */ // Coin Escrow Level2: open flap for 1s myTabFont.setPixelSize(PIXELSIZE_BUTTONS); QPushButton *Led_PB30 = new QPushButton("\n Take Coins"); Led_PB30->setCheckable(false); // true = toggle button Led_PB30->setAutoDefault(false); // beim start aus Led_PB30->setMinimumHeight(50); Led_PB30->setFont(myTabFont); myLayout->addWidget(Led_PB30, 3,6); connect(Led_PB30, SIGNAL(clicked()), this, SLOT(pbEscrowTake())); // Coin Escrow Level2: open flap for 1s QPushButton *Led_PB31 = new QPushButton("\nReturn Coins"); Led_PB31->setCheckable(false); // true = toggle button Led_PB31->setAutoDefault(false); // beim start aus Led_PB31->setMinimumHeight(50); Led_PB31->setFont(myTabFont); myLayout->addWidget(Led_PB31, 4,6); connect(Led_PB31, SIGNAL(clicked()), this, SLOT(pbEscrowRet())); // Barrier myTabFont.setPixelSize(PIXELSIZE_LABEL); QLabel *lab_barr = new QLabel("Barrier"); lab_barr->setFont(myTabFont); myLayout->addWidget(lab_barr, 6,6); myTabFont.setPixelSize(PIXELSIZE_BUTTONS); pb_relay = new QPushButton("Relais\nBarrier"); pb_relay->setCheckable(true); // true = toggle button pb_relay->setAutoDefault(false); // beim start aus pb_relay->setFont(myTabFont); myLayout->addWidget(pb_relay, 7,6); connect(pb_relay, SIGNAL(clicked()), this, SLOT(pbRELclicked())); // Barrier INPUTs: myTabFont.setPixelSize(PIXELSIZE_LABEL); labBarOk = new QLabel(" OK "); labBarOk->setFrameStyle(QFrame::Box | QFrame::Sunken); labBarOk->setLineWidth(3); // 1,2,3 labBarOk->setMaximumWidth(80); labBarOk->setMaximumHeight(40); labBarOk->setStyleSheet("background-color: white"); labBarOk->setFont(myTabFont); myLayout->addWidget(labBarOk, 6,8); labBarOpen = new QLabel(" open"); labBarOpen->setFrameStyle(QFrame::Box | QFrame::Sunken); labBarOpen->setLineWidth(3); // 1,2,3 labBarOpen->setMaximumWidth(80); labBarOpen->setMaximumHeight(40); labBarOpen->setStyleSheet("background-color: white"); labBarOpen->setFont(myTabFont); myLayout->addWidget(labBarOpen, 7,8); setLayout(myLayout); myNextStep=0; myStep=0; myTO = new QTimer(); myTO->setSingleShot(true); myTO->start(2000); HWaccess->mdb_switchPower(1); } T_win07::~T_win07() { close(); } void T_win07::Nav_back(void) { myNextStep=WCS_WIN07BAK; } void T_win07::Nav_home(void) { myNextStep=WCS_WIN07MID; } void T_win07::Nav_next(void) { myNextStep=WCS_WIN07FWD; } bool T_win07::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_ON | SWITCH_NEXT_ON; myNextStep=0; return false; } bool T_win07::working(uint16_t *nextScreen, uint8_t *useNavi) { // 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" *nextScreen=0; // 0=no change *useNavi=0; /* */ // U_device: if (HWaccess->mdb_deviceVoltageOK()) // MDB12V labMdbPowDev->setStyleSheet("background-color: green"); // white red green else labMdbPowDev->setStyleSheet("background-color: white"); // white red green if (HWaccess->mdb_busVoltageOk()) // =MDB-Bus-Pwr (5V), wird im DC auf 1 gehalten labMdbPowBus->setStyleSheet("background-color: yellow"); // white red green else labMdbPowBus->setStyleSheet("background-color: white"); // white red green if (HWaccess->mdb_WakeINisActive()) labMdbWakIn->setStyleSheet("background-color: yellow"); // white red green else labMdbWakIn->setStyleSheet("background-color: white"); // white red green if (HWaccess->cash_getRejectMotorHomePos()) labRejSw->setStyleSheet("background-color: green"); else labRejSw->setStyleSheet("background-color: white"); // readback Coin Slot is Open (right from uC-output) if (HWaccess->coin_shutterIsOpen()) labSlotPower->setStyleSheet("background-color: green"); else labSlotPower->setStyleSheet("background-color: white"); // read Coin-Attached-Input if (HWaccess->coid_isAttached()) { labBlockFree->setText("COIN"); labBlockFree->setStyleSheet("background-color: green"); } else { labBlockFree->setText("FREE"); labBlockFree->setStyleSheet("background-color: white"); } // Coin Escrow Flap is Open if (HWaccess->coin_escrowIsOpen()) // retval: 1:return flap is open 2:take flap is open 0:closed labEscrowSw->setStyleSheet("background-color: green"); else labEscrowSw->setStyleSheet("background-color: white"); // read OptoCouplers: if (HWaccess->bar_optoIn1isOn()) labBarOk->setStyleSheet("background-color: yellow"); else labBarOk->setStyleSheet("background-color: white"); if (HWaccess->bar_optoIn2isOn()) labBarOpen->setStyleSheet("background-color: yellow"); else labBarOpen->setStyleSheet("background-color: white"); /* if (myStep==0) { myTO->start(); // restart } else if (myStep==1) { if (!myTO->isActive()) { // time out } } else if (myStep==2) { } else if (myStep==3) { } else if (myStep==4) { } else if (myStep==5) { } else if (myStep==6) { } else if (myStep==7) { } else { } */ if (myNextStep) { *nextScreen=myNextStep; myNextStep=0; } return false; } void T_win07::pbMdbPow(void) { if (shut_PB1->isChecked()) HWaccess->mdb_switchPower(1); else HWaccess->mdb_switchPower(0); } void T_win07::pbMdbWak(void) { if (shut_PB2->isChecked()) HWaccess->mdb_switchWake(1); else HWaccess->mdb_switchWake(0); } void T_win07::pbRejectTurn(void) { HWaccess->coin_rejectCoins(); } void T_win07::pbShutOpen(void) { if (Led_PB17->isChecked()) { //qDebug()<<"main app 1"; HWaccess->shut_move(1); } else { //qDebug()<<"main app 0"; HWaccess->shut_move(0); } } void T_win07::pbShut3s(void) { // coin shutter, open for shutter-time HWaccess->shut_sendOpeningTime(3000); HWaccess->shut_openOnce(); } void T_win07::pbLEDclicked(void) { if (pb_ledas->isChecked()) HWaccess->led_switchLedPaper(1,0,0); else HWaccess->led_switchLedPaper(0,0,0); } void T_win07::pbEscrowTake(void) { HWaccess->esc_takeMoney(); } void T_win07::pbEscrowRet(void) { HWaccess->esc_returnMoney(); } void T_win07::pbRELclicked(void) { // Relay (Barrier) if (pb_relay->isChecked()) HWaccess->bar_OpenBarrier(1); else HWaccess->bar_OpenBarrier(0); }