From c50beef02d5f1d7f7d6ae252284c6bc1eefe8cc6 Mon Sep 17 00:00:00 2001 From: byloveletter Date: Thu, 13 Apr 2017 10:41:43 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EB=B0=8F=20=EC=97=90=EB=9F=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=ED=8C=9D=EC=97=85=20=EC=B6=94=EA=B0=80=20=EB=B6=80?= =?UTF-8?q?=ED=92=88=20=EC=82=AC=EC=9A=A9=20=ED=86=B5=EA=B3=84=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/engineermenuwindow.cpp | 5 + app/gui/oven_control/engineermenuwindow.ui | 38 +-- app/gui/oven_control/errorpopupdlg.cpp | 24 ++ app/gui/oven_control/errorpopupdlg.h | 25 ++ app/gui/oven_control/errorpopupdlg.ui | 139 +++++++++++ app/gui/oven_control/oven_control.pro | 11 +- app/gui/oven_control/ovenstatics.cpp | 348 +++++++++++++++++++++++++--- app/gui/oven_control/ovenstatics.h | 168 +++++++++++++- app/gui/oven_control/popupwindow.cpp | 10 +- app/gui/oven_control/popupwindow.h | 5 +- app/gui/oven_control/popupwindow.ui | 69 ++++-- app/gui/oven_control/servicedatas.cpp | 4 + app/gui/oven_control/servicedatas.h | 62 +++-- 13 files changed, 808 insertions(+), 100 deletions(-) create mode 100644 app/gui/oven_control/errorpopupdlg.cpp create mode 100644 app/gui/oven_control/errorpopupdlg.h create mode 100644 app/gui/oven_control/errorpopupdlg.ui diff --git a/app/gui/oven_control/engineermenuwindow.cpp b/app/gui/oven_control/engineermenuwindow.cpp index 83ccfa7..7a73ed3 100644 --- a/app/gui/oven_control/engineermenuwindow.cpp +++ b/app/gui/oven_control/engineermenuwindow.cpp @@ -6,6 +6,11 @@ engineermenuwindow::engineermenuwindow(QWidget *parent) : ui(new Ui::engineermenuwindow) { ui->setupUi(this); + + //ui->clockContainer->setParent(ui->upperStack); + //setAttribute(Qt::WA_DeleteOnClose); + + connect(ui->backButton, SIGNAL(released()), this, SLOT(deleteLater())); } engineermenuwindow::~engineermenuwindow() diff --git a/app/gui/oven_control/engineermenuwindow.ui b/app/gui/oven_control/engineermenuwindow.ui index 46e4c1a..7d27fab 100644 --- a/app/gui/oven_control/engineermenuwindow.ui +++ b/app/gui/oven_control/engineermenuwindow.ui @@ -18,6 +18,9 @@ #bottomBar { background-image: url(:/images/bottom_bar/background.png); } + + + @@ -228,9 +231,12 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); } - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } -QPushButton { text-align: left;} + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); } +QPushButton { text-align: left;} + + + 교정 @@ -395,8 +401,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); } QPushButton { text-align: left;} @@ -562,8 +568,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); } QPushButton { text-align: left;} @@ -729,8 +735,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); } QPushButton { text-align: left;} @@ -896,9 +902,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } -QPushButton { text-align: left;} + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }QPushButton { text-align: left;} 실시간데이터 @@ -1063,9 +1068,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } -QPushButton { text-align: left;} + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }QPushButton { text-align: left;} 작동시간 @@ -1230,8 +1234,8 @@ QPushButton { text-align: left;} - QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); } -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); } + QPushButton { border-image: url(:/images/config/pannel.png); } +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); } QPushButton { text-align: left;} diff --git a/app/gui/oven_control/errorpopupdlg.cpp b/app/gui/oven_control/errorpopupdlg.cpp new file mode 100644 index 0000000..ff9f892 --- /dev/null +++ b/app/gui/oven_control/errorpopupdlg.cpp @@ -0,0 +1,24 @@ +#include "errorpopupdlg.h" +#include "ui_errorpopupdlg.h" + +errorPopupDlg::errorPopupDlg(QWidget *parent, const QString &MsgDesc) : + QDialog(parent), + ui(new Ui::errorPopupDlg) +{ + ui->setupUi(this); + this->setAttribute(Qt::WA_TranslucentBackground); + this->setWindowFlags(Qt::FramelessWindowHint); + + ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint); + ui->ctrlWarnDescription->setText(MsgDesc); +} + +errorPopupDlg::~errorPopupDlg() +{ + delete ui; +} + +void errorPopupDlg::on_ctrlOkBtn_released() +{ + deleteLater(); +} diff --git a/app/gui/oven_control/errorpopupdlg.h b/app/gui/oven_control/errorpopupdlg.h new file mode 100644 index 0000000..008f904 --- /dev/null +++ b/app/gui/oven_control/errorpopupdlg.h @@ -0,0 +1,25 @@ +#ifndef ERRORPOPUPDLG_H +#define ERRORPOPUPDLG_H + +#include + +namespace Ui { +class errorPopupDlg; +} + +class errorPopupDlg : public QDialog +{ + Q_OBJECT + +public: + explicit errorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0); + ~errorPopupDlg(); + +private slots: + void on_ctrlOkBtn_released(); + +private: + Ui::errorPopupDlg *ui; +}; + +#endif // ERRORPOPUPDLG_H diff --git a/app/gui/oven_control/errorpopupdlg.ui b/app/gui/oven_control/errorpopupdlg.ui new file mode 100644 index 0000000..7903be1 --- /dev/null +++ b/app/gui/oven_control/errorpopupdlg.ui @@ -0,0 +1,139 @@ + + + errorPopupDlg + + + + 0 + 0 + 900 + 1600 + + + + Dialog + + + #centralwidget { background-image: url(:/images/background/popup/503.png); +border-color: rgb(255,255,255); +border-width: 2px; +border-style: solid;} + + + + + 0 + 510 + 900 + 503 + + + + + + + + + 374 + 370 + 152 + 70 + + + + + 0 + 0 + + + + + 10 + 75 + true + + + + QPushButton {border-image: url(:/images/button/152.png);} +QPushButton::pressed {border-image: url(:/images/button/152_ov.png);} +QPushButton { text-align:center;} + + + 확 인 + + + + + + 0 + 120 + 901 + 201 + + + + + 12 + 75 + true + + + + color: rgb(255, 255, 255); + + + TextLabel + + + Qt::AlignCenter + + + + + + 40 + 5 + 861 + 51 + + + + + 16 + 75 + true + + + + color: rgb(255, 255, 255); + + + 경 고 + + + Qt::AlignCenter + + + + + + 350 + 6 + 61 + 51 + + + + + + + :/images/symbol/warning.png + + + + + + + + + diff --git a/app/gui/oven_control/oven_control.pro b/app/gui/oven_control/oven_control.pro index a9238f1..1f4b7ad 100644 --- a/app/gui/oven_control/oven_control.pro +++ b/app/gui/oven_control/oven_control.pro @@ -50,7 +50,8 @@ SOURCES += main.cpp\ cookbook.cpp \ define.cpp \ autocook.cpp \ - keepwarmpopup.cpp + keepwarmpopup.cpp \ + errorpopupdlg.cpp HEADERS += mainwindow.h \ cook.h \ @@ -89,7 +90,8 @@ HEADERS += mainwindow.h \ cookbook.h \ define.h \ autocook.h \ - keepwarmpopup.h + keepwarmpopup.h \ + errorpopupdlg.h FORMS += mainwindow.ui \ manualcookwindow.ui \ @@ -109,12 +111,11 @@ FORMS += mainwindow.ui \ cooldownpopup.ui \ engineermenuwindow.ui \ popupwindow.ui \ - keepwarmpopup.ui + keepwarmpopup.ui \ + errorpopupdlg.ui RESOURCES += \ resources.qrc target.path = /falinux/dev INSTALLS += target - -DISTFILES += diff --git a/app/gui/oven_control/ovenstatics.cpp b/app/gui/oven_control/ovenstatics.cpp index 92552c8..ece6e75 100644 --- a/app/gui/oven_control/ovenstatics.cpp +++ b/app/gui/oven_control/ovenstatics.cpp @@ -1,8 +1,12 @@ #include "ovenstatics.h" #include +#include +#include #include "mainwindow.h" #include "ovencontroller.h" #include "popupwindow.h" +#include "engineermenuwindow.h" +#include "errorpopupdlg.h" OvenStatics* OvenStatics::p_singtonInstance=NULL; @@ -16,6 +20,9 @@ OvenStatics* OvenStatics::getInstance(QObject *parent, UdpHandler* udp, Oven* ov MainWindow* mw = (MainWindow*)parent; connect(mw->pcombiButton, SIGNAL(clicked()),p_singtonInstance, SLOT(onDataChanged())); connect(p_singtonInstance->udp , SIGNAL(changed()), p_singtonInstance, SLOT(onDataChanged())); + QTimer *timer = new QTimer(p_singtonInstance); + connect(timer, SIGNAL(timeout()),p_singtonInstance,SLOT(oneSecTimerFired())); + timer->start(1000); //1000ms fired } return p_singtonInstance; } @@ -30,6 +37,9 @@ OvenStatics::OvenStatics(QObject* parent) :QObject(parent) { curdoorstate = false; curSysErrorState = 0; + curCommErrorState = 0; + curSensorErrorState = 0; + bDataRefreshed = false; srvdatas = new servicedatas(); srvdatas->loadServiceDatas(); } @@ -43,12 +53,15 @@ void OvenStatics::onDataChanged() { error_item *item; time_t ltime=0; + uint16_t errstatetemp; qDebug() << "statics event fired"; return; udp->fillControl(control); udp->fillData(state); + bDataRefreshed = true; time(<ime); + if(oven->cooking() && control.system){ if(state.door_state ==1 && curdoorstate==0){ //door error @@ -58,66 +71,327 @@ void OvenStatics::onDataChanged() item->last_fried = ltime; } curdoorstate = state.door_state; - if(state.system_error!=0 && state.system_error != curSysErrorState){ - processSystemError(state.system_error,ltime); - } - curSysErrorState = state.system_error; } + if(state.system_error!=0 && state.system_error != curSysErrorState){ + processSystemError( state.system_error,ltime); + } + curSysErrorState = state.system_error; + + errstatetemp = state.reserved2f; + if(errstatetemp!=0 && errstatetemp != curCommErrorState ){ + processCommError( errstatetemp,ltime ); + } + curCommErrorState = errstatetemp; + + errstatetemp = state.reserved30; + if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){ + processCommError( errstatetemp,ltime ); + } + curSensorErrorState = errstatetemp; + + +} + +void OvenStatics::processSensorError(uint16_t errflag, time_t ltime){ + error_item *item; + QString strMsg = ""; + uint8_t state; + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF; + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF; + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON; + else state = SYS_ON_COOK_OFF; + + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){ + item = &(srvdatas->err_log.items.inner_temp_fail); + strMsg = tr("내부 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){ + item = &(srvdatas->err_log.items.qunching_temp_fail); + strMsg = tr("퀀칭 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){ + //Reserved allerrornoe 설정 + item = &(srvdatas->err_log.items.qunching_temp_fail); + strMsg = tr("퀀칭 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){ + item = &(srvdatas->err_log.items.wall_temp1_fail); + strMsg = tr("벽면 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){ + item = &(srvdatas->err_log.items.steam_gen_temp_fail); + strMsg = tr("스팀제네레이터 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){ + item = &(srvdatas->err_log.items.meatprove_temp1_fail); + strMsg = tr("미트프로브 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){ + //Reseved + item = &(srvdatas->err_log.items.meatprove_temp2_fail); + strMsg = tr("미트프로브2 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){ + //Reserved + item = &(srvdatas->err_log.items.meatprove_temp3_fail); + strMsg = tr("미트프로브3 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){ + //Reserved + item = &(srvdatas->err_log.items.meatprove_temp4_fail); + strMsg = tr("미트프로브4 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,ltime); + } + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){ + item = &(srvdatas->err_log.items.pcb_temp_fail); + strMsg = tr("PCB 온도 이상 발생"); + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,ltime); + } +} + +void OvenStatics::processCommError(uint16_t errflag, time_t ltime){ + error_item *item; + QString strMsg = ""; + uint8_t state; + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF; + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF; + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON; + else state = SYS_ON_COOK_OFF; + + if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){ + item = &(srvdatas->err_log.items.upper_pan_fail); + strMsg = tr("상부 송풍기 이상 발생"); + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,ltime); + } + if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){ + item = &(srvdatas->err_log.items.lower_pan_fail); + strMsg = tr("하부 송풍기 이상 발생"); + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime); + } + if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){ + item = &(srvdatas->err_log.items.steam_pan_fail); + strMsg = tr("스팀 송풍기 이상 발생"); + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,ltime); + } + if(errflag & MAKE_MASK(COMM_ERR_LOWERPAN)){ + item = &(srvdatas->err_log.items.lower_motor_fail); + strMsg = tr("상부 모터 컨트롤러 이상 발생"); + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime); + } + if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){ + item = &(srvdatas->err_log.items.upper_motor_fail); + strMsg = tr("상부 모터 컨트롤러 이상 발생"); + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime); + } } void OvenStatics::processSystemError(uint16_t errflag,time_t ltime){ error_item *item; - if( errflag & SYS_ERR_FIRE_TRIGGER1){ + QString strMsg = ""; + uint8_t state; + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF; + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF; + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON; + else state = SYS_ON_COOK_OFF; + + if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){ //버너 컨트롤러 1 착화 이상 item = &(srvdatas->err_log.items.upper_fire_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + strMsg = tr("상부 버너 착하가 되지 않습니다."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,ltime); } - if(errflag & SYS_ERR_FIRE_TRIGGER2){ + if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){ //버너 컨트롤러 2 착화 이상 item = &(srvdatas->err_log.items.lower_fire_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + strMsg = tr("하부 버너 착하가 되지 않습니다."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,ltime); } if(errflag & SYS_ERR_FIRE_TRIGGER3){ item = &(srvdatas->err_log.items.steam_fire_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + strMsg = tr("스팀 버너 착하가 되지 않습니다."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,ltime); } - if(errflag & SYS_ERR_OVNE_TEMP_ALARM){ + if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){ item = &(srvdatas->err_log.items.inner_temp_high_alarm); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + strMsg = tr("내부 온도 과열 발생."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,ltime); } - if(errflag & SYS_ERR_QUN_TEMP_ALARM){ - //퀀칭 온도 센서 과열 -> 에러 항목 없으며 통신이상과 동일 처리 - item = &(srvdatas->err_log.items.qunching_temp_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){ + //퀀칭 온도 센서 과열 + item = &(srvdatas->err_log.items.qunching_temp_high_alarm); + strMsg = tr("퀀칭 온도 센서 이상 발생."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,ltime); } - if(errflag & SYS_ERR_CENTER_TEMP_ALARM){ - item = &(srvdatas->err_log.items.meat_prove_temp1_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){ + //중심 온도 과열 + item = &(srvdatas->err_log.items.meatprove_temp1_high_alarm); + strMsg = tr("미트프로브 온도 센서 이상 발생."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,ltime); } - if(errflag & SYS_ERR_WALL_TEMP_ALARM){ - item = &(srvdatas->err_log.items.wall_temp1_fail); - item->fired_cnt+=1; - if(item->first_fired == 0) item->first_fired = ltime; - item->last_fried = ltime; + if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){ + item = &(srvdatas->err_log.items.wall_temp1_high_alarm); + strMsg = tr("벽면 온도 센서 이상 발생."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WALL_TEMP_ALARM],strMsg,ltime); + } + if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){ + //급수 이상 -> 유량 센서 이상 + item = &(srvdatas->err_log.items.water_level_sensor_fail); + strMsg = tr("급수가 되지 않습니다."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,ltime); } - if(errflag & SYS_ERR_WATER_SPLY_FAIL){ - //급수 이상 -> 수위 센서 이상으로 통일 + if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){ + //급수 이상 -> 수위 센서 이상 item = &(srvdatas->err_log.items.water_level_sensor_fail); + strMsg = tr("급수가 되지 않습니다."); + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,ltime); + } +} + + + + +bool OvenStatics::getNeedErrorClear(){ + return bNeedErrorClear; +} + +void OvenStatics::clearNeedErrorClear(){ + //에러클리어 송신 후 flag clear + bNeedErrorClear = false; +} + +void OvenStatics::oneSecTimerFired(void){ + if(bDataRefreshed) bDataRefreshed= false; + else{ + udp->fillControl(control); + udp->fillData(state); + } + //가열부 시간 측정 + if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){ + srvdatas->use_log.items.steam_heat +=1; + } + if( (state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER | LOAD_STATE1_LOWER_FAN))!=0){ + srvdatas->use_log.items.dry_heat+=1; + if(state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER)){ + srvdatas->use_log.items.upper_heat +=1; + } + if((state.onoff_state2 & LOAD_STATE1_LOWER_BUNNER)!=0){ + srvdatas->use_log.items.lower_heat +=1; + } + } + //모드 시간 계산 + if(state.cooking_mode !=0){ + if(state.cooking_humidity==0){ + //건열 모드 + srvdatas->use_log.items.cook_dry_mode+=1; + } + else if(state.cooking_humidity ==100){ + //스팀모드 + srvdatas->use_log.items.cook_steam_mode+=1; + } + else srvdatas->use_log.items.cook_combi_mode+=1; + } + if(state.cleaning_mode !=0){ + switch (state.cleaning_mode) { + case (uint16_t)wash_mode_nocleanser: + srvdatas->use_log.items.wash_mode_nocleanser+=1; + break; + case (uint16_t)wash_mode_simple: + srvdatas->use_log.items.wash_mode_simple+=1; + break; + case (uint16_t)wash_mode_standard: + srvdatas->use_log.items.wash_mode_standard+=1; + break; + case (uint16_t)wash_mode_strong: + srvdatas->use_log.items.wash_mode_strong+=1; + break; + case (uint16_t)wash_mode_highspeed: + srvdatas->use_log.items.wash_mode_speed+=1; + break; + default: + break; + } + } + if(control.cooldown ==1){ + srvdatas->use_log.items.cooldown_mode+=1; + } + //부품 + if(state.door_state ==1){ + srvdatas->use_log.items.door_open+=1; + } + if(state.onoff_state2 !=0){ + if( (state.onoff_state2 & LOAD_STATE2_DV)!=0){ + srvdatas->use_log.items.dv_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_SSV)!=0){ + srvdatas->use_log.items.ssv_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_QNV)!=0){ + srvdatas->use_log.items.qnv_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_SNV)!=0){ + srvdatas->use_log.items.snv_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_SSP)!=0){ + srvdatas->use_log.items.ssp_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_HDM)!=0){ + srvdatas->use_log.items.hdm_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_DP)!=0){ + srvdatas->use_log.items.dp_open+=1; + } + if((state.onoff_state2 & LOAD_STATE2_UNP) !=0){ + srvdatas->use_log.items.unp_open+=1; + } + } +} + +void OvenStatics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, time_t ltime){ + + if(errtype >= error_type_onlychk){ item->fired_cnt+=1; if(item->first_fired == 0) item->first_fired = ltime; item->last_fried = ltime; } + switch(errtype){ + case error_type_onlypop: + case error_type_popclr: + case error_type_popnonclr: + { + errorPopupDlg *dlg = new errorPopupDlg(QApplication::activeWindow(),MsgDesc); + dlg->exec(); + break; + } + case error_type_engclr: + case error_type_engnonclr: + case error_type_onlyeng: + { + engineermenuwindow *w = new engineermenuwindow(QApplication::activeWindow()); + w->showFullScreen(); + break; + } + default: + break; + } + if(errtype > error_type_clrsplit){ + //에러 클리어 명령 송신 + qDebug() << "send error clear command"; + if(errtype == error_type_engclr){ + //확인 후 송신 + bNeedErrorClear = true; + } + else{ + //에러클리어 메시지 즉시 송신 + } + } + } diff --git a/app/gui/oven_control/ovenstatics.h b/app/gui/oven_control/ovenstatics.h index c710f0d..0d9e4f6 100644 --- a/app/gui/oven_control/ovenstatics.h +++ b/app/gui/oven_control/ovenstatics.h @@ -8,17 +8,124 @@ #include "oven.h" #include "servicedatas.h" +#define SYS_STATE_MAX 4 -#define SYS_ERR_FIRE_TRIGGER1 0x0001 -#define SYS_ERR_FIRE_TRIGGER2 0x0002 -#define SYS_ERR_FIRE_TRIGGER3 0x0004 -#define SYS_ERR_OVNE_TEMP_ALARM 0x0008 -#define SYS_ERR_QUN_TEMP_ALARM 0x0010 -#define SYS_ERR_CENTER_TEMP_ALARM 0x0020 -#define SYS_ERR_WALL_TEMP_ALARM 0x0040 -#define SYS_ERR_WATER_SPLY_FAIL 0x0080 +#define SYS_ERR_MAX 10 +#define SYS_ERR_MASK_ERR_CLEAR_COOKING 0x00ff +#define SYS_ERR_MASK_ERR_CLEAR_NONCOOKING 0x00ff +#define SYS_ERR_MASK_COOKING 0x00ff +#define SYS_ERR_MASK_NONCOOKING (SYS_ERR_OVNE_TEMP_ALARM) + + +#define COMM_ERR_MAX 5 + + +#define COMM_ERR_MASK_ERR_CLEAR_COOKING 0x0000 +#define COMM_ERR_MASK_ERR_CLEAR_NONCOOKING 0x0000 + +#define COMM_ERR_MASK_COOKING 0x0000 +#define COMM_ERR_MASK_NONCOOKING 0x0000 + + +#define SENSOR_ERR_MAX 10 + + +#define SENSOR_ERR_MASK_ERR_CLEAR 0x0000 +#define SENSOR_ERR_MASK_COOKING 0x0000 +#define SENSOR_ERR_MASK_NONCOOKING 0x0000 + +#define MAKE_MASK(MASK) (1< -popupWindow::popupWindow(QWidget *parent) : +popupWindow::popupWindow(QWidget *parent,const QString &MsgDesc) : QMainWindow(parent), ui(new Ui::popupWindow) { @@ -11,9 +12,16 @@ popupWindow::popupWindow(QWidget *parent) : ui->centralwidget->setAttribute(Qt::WA_TranslucentBackground); ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint); + ui->ctrlWarnDescription->setText(MsgDesc); + connect(ui->ctrlOkBtn, SIGNAL(clicked(bool)), this, SLOT(deleteLater())); } popupWindow::~popupWindow() { delete ui; } + +void popupWindow::on_ctrlOkBtn_released() +{ + qDebug() << "OK btn Released"; +} diff --git a/app/gui/oven_control/popupwindow.h b/app/gui/oven_control/popupwindow.h index a0382cc..f2b8a8b 100644 --- a/app/gui/oven_control/popupwindow.h +++ b/app/gui/oven_control/popupwindow.h @@ -12,9 +12,12 @@ class popupWindow : public QMainWindow Q_OBJECT public: - explicit popupWindow(QWidget *parent = 0); + explicit popupWindow(QWidget *parent = 0, const QString &MsgDesc=0); ~popupWindow(); +private slots: + void on_ctrlOkBtn_released(); + private: Ui::popupWindow *ui; }; diff --git a/app/gui/oven_control/popupwindow.ui b/app/gui/oven_control/popupwindow.ui index 3e1922b..f815432 100644 --- a/app/gui/oven_control/popupwindow.ui +++ b/app/gui/oven_control/popupwindow.ui @@ -20,26 +20,31 @@ - 50 + 0 500 - 800 + 900 400 - background-color: rgb(79, 79, 79); + border-color: rgb(255,255,255); +border-width: 2px; +border-style: solid; + + :/images/background/popup/503.png + - 50 + 90 510 - 801 - 41 + 761 + 51 @@ -70,7 +75,7 @@ - 10 + 12 75 true @@ -85,21 +90,57 @@ Qt::AlignCenter - + - 360 - 780 - 171 - 61 + 366 + 800 + 152 + 70 + + + + + 0 + 0 + + + + + 10 + 75 + true + + + + QPushButton {border-image: url(:/images/button/152.png);} +QPushButton::pressed {border-image: url(:/images/button/152_ov.png);} +QPushButton { text-align:center;} + + + 확 인 + + + + + + 340 + 510 + 61 + 51 - PushButton + + + + :/images/symbol/warning.png - + + + diff --git a/app/gui/oven_control/servicedatas.cpp b/app/gui/oven_control/servicedatas.cpp index e3be279..d9509ae 100644 --- a/app/gui/oven_control/servicedatas.cpp +++ b/app/gui/oven_control/servicedatas.cpp @@ -1,9 +1,13 @@ #include "string.h" #include "servicedatas.h" +#include servicedatas::servicedatas() { + qDebug()<< "Statics Data Size Report\r\n error_log size = " << sizeof(error_log) << " \r\nuse_static_log size = " << sizeof(use_statics_log); memset((void*)err_log.datas,0x00,sizeof(error_log)); + memset((void*)use_log.datas,0x00,sizeof(use_statics_log)); + } bool servicedatas::loadServiceDatas(void){ diff --git a/app/gui/oven_control/servicedatas.h b/app/gui/oven_control/servicedatas.h index a840fb3..0a193fd 100644 --- a/app/gui/oven_control/servicedatas.h +++ b/app/gui/oven_control/servicedatas.h @@ -6,7 +6,9 @@ #define STRUCT_PACK __attribute__ ((packed)) -#define MAX_ERROR_TYPE_CNT 34 +#define MAX_ERROR_TYPE_CNT 30 + +#define MAX_STATICS_CNT 23 typedef struct _error_item{ uint16_t fired_cnt; @@ -21,46 +23,74 @@ typedef union _error_log{ struct{ error_item door; error_item upper_fire_fail; - error_item upper_fire_alarm; error_item upper_pan_fail; error_item lower_fire_fail; - error_item lower_fire_alarm; error_item lower_pan_fail; error_item steam_fire_fail; - error_item steam_fire_alarm; error_item steam_pan_fail; error_item water_level_sensor_fail; error_item water_flow_sensor_fail; + error_item inner_temp_high_alarm; //B1 Sensor error_item inner_temp_fail; - error_item inner_temp_high_alarm; + error_item qunching_temp_high_alarm; //B2 Sensor error_item qunching_temp_fail; - error_item meat_prove_temp1_fail; - error_item meatprove_temp2_fail; - error_item meatprove_temp3_fail; - error_item meatprove_temp4_fail; + error_item meatprove_temp1_high_alarm; //B3 Sensor + error_item meatprove_temp1_fail; + error_item wall_temp1_high_alarm; //B4 Sensor error_item wall_temp1_fail; - error_item wall_temp2_fail; + error_item steam_gen_temp_high_alram; //B5 Sensor error_item steam_gen_temp_fail; + error_item meatprove_temp2_fail; + error_item meatprove_temp3_fail; + error_item meatprove_temp4_fail; + error_item pcb_temp_high_alarm; //PCB Temp error_item pcb_temp_fail; - error_item upper_motor_noncook_fail; - error_item upper_motor_cook_fail; - error_item lower_motor_noncook_fail; - error_item lower_motor_cook_fail; + error_item upper_motor_fail; + error_item lower_motor_fail; error_item small_motor_fail; error_item midd_motor_fail; - error_item supply_motor_fail; // Steam Generator Tank Supply Pump + error_item supply_motor_fail; // Steam Generator Tank Supply Pump error_item humidity_tamper_fail; }items; }STRUCT_PACK error_log; - +typedef union _use_statics_log{ + uint8_t datas[MAX_STATICS_CNT*4]; + uint32_t values[MAX_STATICS_CNT]; + struct{ + uint32_t steam_heat; + uint32_t dry_heat; + uint32_t upper_heat; + uint32_t lower_heat; + uint32_t cook_dry_mode; + uint32_t cook_steam_mode; + uint32_t cook_combi_mode; + uint32_t wash_mode_nocleanser; + uint32_t wash_mode_simple; + uint32_t wash_mode_standard; + uint32_t wash_mode_strong; + uint32_t wash_mode_speed; + uint32_t cooldown_mode; + uint32_t door_open; + uint32_t dv_open; + uint32_t ssv_open; + uint32_t qnv_open; + uint32_t ssp_open; + uint32_t snv_open; + uint32_t hosereel; + uint32_t hdm_open; + uint32_t dp_open; + uint32_t unp_open; + }items; +}STRUCT_PACK use_statics_log; class servicedatas { public: servicedatas(); error_log err_log; + use_statics_log use_log; bool saveServiceDatas(void); bool loadServiceDatas(void); }; -- 2.1.4