APservice/win03_time.cpp

351 lines
11 KiB
C++
Executable File

#include "win03_time.h"
struct Trtc_DateTime localTime;
/*
{
uint8_t rtc_hour;
uint8_t rtc_min;
uint8_t rtc_sec;
uint8_t rtc_dayOfMonth;
uint8_t rtc_month;
uint8_t rtc_year;
uint8_t rtc_dayOfWeek;
};
*/
T_win03::T_win03(hwinf *HWaccess, QWidget *parent) : QWidget(parent)
{
this->HWaccess = HWaccess;
myLayout = new QGridLayout;
QFont myTabFont;
myTabFont.setPixelSize(PIXELSIZE_LABEL);
lab1 =new QLabel(tr("Date / Time"));
lab1->setFont(myTabFont);
myLayout->addWidget(lab1,1,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
lab2 =new QLabel(tr(" "));
lab2->setFont(myTabFont);
myLayout->addWidget(lab2,2,0);
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab4 =new QLabel(tr("DeviceController"));
lab4->setFont(myTabFont);
myLayout->addWidget(lab4,4,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
labDate =new QLabel(tr("-"));
labDate->setFont(myTabFont);
myLayout->addWidget(labDate,4,1);
labTime =new QLabel(tr("-"));
labTime->setFont(myTabFont);
myLayout->addWidget(labTime,4,2);
myTabFont.setPixelSize(PIXELSIZE_BUTTONS);
butSetSysTime = new QPushButton("-->PTU");
butSetSysTime->setFont(myTabFont);
myLayout->addWidget(butSetSysTime,4,3);
connect(butSetSysTime, SIGNAL(clicked()), this, SLOT(ButtonTime2sysClicked()));
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab10 =new QLabel(" ");
myLayout->addWidget(lab10,5,0);
QLabel *lab6 =new QLabel(tr("PTU5 / System"));
lab6->setFont(myTabFont);
myLayout->addWidget(lab6,6,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
labSysDate =new QLabel(tr("-"));
labSysDate->setFont(myTabFont);
myLayout->addWidget(labSysDate,6,1);
labSysTime =new QLabel(tr("-"));
labSysTime->setFont(myTabFont);
myLayout->addWidget(labSysTime,6,2);
systTime = new QTime();
systDate = new QDate();
myTabFont.setPixelSize(PIXELSIZE_BUTTONS);
butSetDCTime = new QPushButton("-->DC");
butSetDCTime->setFont(myTabFont);
myLayout->addWidget(butSetDCTime,6,3);
connect(butSetDCTime, SIGNAL(clicked()), this, SLOT(ButtonTime2dcClicked()));
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab11 =new QLabel(" ");
myLayout->addWidget(lab11,7,0);
QLabel *lab14 =new QLabel("set date/time");
lab14->setFont(myTabFont);
myLayout->addWidget(lab14,8,0);
myTabFont.setPixelSize(22);
chgDate = new QDateEdit();
chgDate->setFont(myTabFont);
chgDate->setMinimumHeight(50);
myLayout->addWidget(chgDate,8,1);
chgTime = new QTimeEdit();
chgTime->setFont(myTabFont);
chgTime->setDisplayFormat("HH:mm:ss");
chgTime->setMinimumHeight(50);
myLayout->addWidget(chgTime,8,2);
myTabFont.setPixelSize(PIXELSIZE_BUTTONS);
butSetManual = new QPushButton("-->DC");
butSetManual->setFont(myTabFont);
myLayout->addWidget(butSetManual,8,3);
connect(butSetManual, SIGNAL(clicked()), this, SLOT(ButtonSetTimeClicked()));
QLabel *lab12 =new QLabel(" ");
myLayout->addWidget(lab12,9,0);
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab16 =new QLabel("DC HW Version:");
lab16->setFont(myTabFont);
myLayout->addWidget(lab16,12,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
hwVersion1 =new QLabel(" ");
hwVersion1->setFont(myTabFont);
myLayout->addWidget(hwVersion1,12,1);
hwVersion2 =new QLabel(" ");
hwVersion2->setFont(myTabFont);
myLayout->addWidget(hwVersion2,12,2);
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab17 =new QLabel("DC SW Version:");
lab17->setFont(myTabFont);
myLayout->addWidget(lab17,13,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
swVersion =new QLabel(" ");
swVersion->setFont(myTabFont);
myLayout->addWidget(swVersion,13,1);
myTabFont.setPixelSize(PIXELSIZE_LABEL);
QLabel *lab7 =new QLabel(tr("Battery:"));
lab7->setFont(myTabFont);
myLayout->addWidget(lab7,20,0);
myTabFont.setPixelSize(PIXELSIZE_DATA);
labVolt =new QLabel(tr("-"));
labVolt->setFont(myTabFont);
myLayout->addWidget(labVolt,20,1);
labCelsius =new QLabel(tr("-"));
labCelsius->setFont(myTabFont);
myLayout->addWidget(labCelsius,20,2);
setLayout(myLayout);
myNextStep=0;
myStep=0;
myTO = new QTimer();
myTO->setSingleShot(true);
myTO->start(2000);
}
T_win03::~T_win03()
{
close();
}
void T_win03::Nav_back(void)
{
myNextStep=WCS_WIN03BAK;
}
void T_win03::Nav_home(void)
{
myNextStep=WCS_WIN03MID;
}
void T_win03::Nav_next(void)
{
myNextStep=WCS_WIN03FWD;
// qDebug()<<"fenster1 nav next pressed "<< myNextStep;
}
void T_win03::ButtonTime2sysClicked(void)
{
HWaccess->rtc_getDateTime(&localTime);
if (tslib_plausiChkTime(localTime.rtc_hour, localTime.rtc_min, localTime.rtc_sec) &&
tslib_plausiChkDate(localTime.rtc_year, localTime.rtc_month, localTime.rtc_dayOfMonth))
{
QTime(localTime.rtc_hour, localTime.rtc_min, localTime.rtc_sec);
QDate(localTime.rtc_year, localTime.rtc_month, localTime.rtc_dayOfMonth);
//qDebug()<<"send date/time to PTU ";
//qDebug()<<"date: " << localTime.rtc_year << localTime.rtc_month << localTime.rtc_dayOfMonth << localTime.rtc_dayOfWeek ;
//qDebug()<<"time: " << localTime.rtc_hour << localTime.rtc_min << localTime.rtc_sec;
}
}
void T_win03::ButtonTime2dcClicked(void)
{
localTime.rtc_hour = systTime->currentTime().hour();
localTime.rtc_min = systTime->currentTime().minute();
localTime.rtc_sec = systTime->currentTime().second();
localTime.rtc_year = uint8_t(systDate->currentDate().year()%100);
localTime.rtc_month= systDate->currentDate().month();
localTime.rtc_dayOfMonth= systDate->currentDate().day();
//localTime.rtc_dayOfWeek = swl_weekday(systDate->currentDate().year(), systDate->currentDate().month(), systDate->currentDate().day());
localTime.rtc_dayOfWeek = systDate->currentDate().dayOfWeek(); // oder so
HWaccess->rtc_setTimeDateDirect(&localTime);
//qDebug()<<"send date/time to DC ";
//qDebug()<<"date: " << localTime.rtc_year << localTime.rtc_month << localTime.rtc_dayOfMonth << localTime.rtc_dayOfWeek ;
//qDebug()<<"time: " << localTime.rtc_hour << localTime.rtc_min << localTime.rtc_sec;
}
void T_win03::ButtonSetTimeClicked(void)
{
QDate myDate;
QTime myTime;
myDate=chgDate->date();
myTime=chgTime->time();
//qDebug()<<"date: " <<myDate<<" myTime: "<<myTime;
localTime.rtc_hour = myTime.hour();
localTime.rtc_min = myTime.minute();
localTime.rtc_sec = myTime.second();
localTime.rtc_year = uint8_t(myDate.year()%100);
localTime.rtc_month= myDate.month();
localTime.rtc_dayOfMonth= myDate.day();
localTime.rtc_dayOfWeek = myDate.dayOfWeek();
HWaccess->rtc_setTimeDateDirect(&localTime);
//qDebug()<<"send manual date/time to DC ";
//qDebug()<<"date: " << localTime.rtc_year << localTime.rtc_month << localTime.rtc_dayOfMonth << localTime.rtc_dayOfWeek ;
//qDebug()<<"time: " << localTime.rtc_hour << localTime.rtc_min << localTime.rtc_sec;
}
bool T_win03::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_win03::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"
uint8_t nn; //, yl, yh;
char cbuf34[34];
uint8_t buf[64];
uint16_t uitmp;
QString myStr, tmpStr;
int ii, pp=0;
*nextScreen=0; // 0=no change
*useNavi=0;
HWaccess->rtc_getDateTime(&localTime);
if (tslib_plausiChkTime(localTime.rtc_hour, localTime.rtc_min, localTime.rtc_sec) &&
tslib_plausiChkDate(localTime.rtc_year, localTime.rtc_month, localTime.rtc_dayOfMonth))
{
for (nn=0; nn<20; nn++)
cbuf34[nn]=0;
GetTimeString(localTime.rtc_hour, localTime.rtc_min, localTime.rtc_sec, 0, 1, buf);
//void GetTimeString(uint8_t hours, uint8_t minutes, uint8_t seconds, uint8_t System12h, uint8_t ShowSec, uint8_t *buf);
for (nn=0; nn<12; nn++)
cbuf34[nn]=buf[nn];
labTime->setText(cbuf34);
for (nn=0; nn<20; nn++)
cbuf34[nn]=0;
GetDateString(localTime.rtc_dayOfMonth, localTime.rtc_month, 0x20, localTime.rtc_year,0, 0, buf);
// void GetDateString(uint8_t day, uint8_t month, uint8_t yearhigh, uint8_t yearlow, uint8_t format, uint8_t sep, uint8_t *buf);
for (nn=0; nn<12; nn++)
cbuf34[nn]=buf[nn];
labDate->setText(cbuf34);
}
for (nn=0; nn<20; nn++)
cbuf34[nn]=0;
GetTimeString(systTime->currentTime().hour(), \
systTime->currentTime().minute(), \
systTime->currentTime().second(), 0, 1, buf);
for (nn=0; nn<12; nn++)
cbuf34[nn]=buf[nn];
labSysTime->setText(cbuf34);
for (nn=0; nn<20; nn++)
cbuf34[nn]=0;
uitmp= systDate->currentDate().year();
tmpStr.clear();
tmpStr.append(QString::number(uitmp));
GetDateString( systDate->currentDate().day(), \
systDate->currentDate().month(), 0, 0, 0, 0, buf);
for (nn=0; nn<12; nn++)
cbuf34[nn]=buf[nn];
cbuf34[6]=tmpStr.at(0).toLatin1();
cbuf34[7]=tmpStr.at(1).toLatin1();
cbuf34[8]=tmpStr.at(2).toLatin1();
cbuf34[9]=tmpStr.at(3).toLatin1();
labSysDate->setText(cbuf34);
// hwVersion1->setText(HWaccess->dc_getHWversion() );
// in 2 Teile zerlegen weil sonst 2.Spalte zu breit
tmpStr.clear();
tmpStr = HWaccess->dc_getHWversion();
for (ii=0; ii<tmpStr.length(); ii++) if (tmpStr.at(ii)==' ') {pp=ii; break; }
// tmpStr.truncate(pp); geht auch, dann muss man tmpStr aber nochmal neu laden
myStr=tmpStr.left(pp);
hwVersion1->setText(myStr);
myStr=tmpStr.right(pp+1);
hwVersion2->setText(myStr);
swVersion->setText(HWaccess->dc_getSWversion() );
labVolt->setText( HWaccess->dc_getVoltagStr());
labCelsius->setText( HWaccess->dc_getTemperaturStr());
if (myNextStep)
{
//qDebug()<<"fenster1 working: "<< myNextStep;
*nextScreen=myNextStep;
myNextStep=0;
}
return false;
}