Commit c50beef02d5f1d7f7d6ae252284c6bc1eefe8cc6

Authored by 고영탁
1 parent cf0ca80f62
Exists in master and in 2 other branches fhd, fhd-demo

에러 처리 루틴 및 에러 처리 팝업 추가

부품 사용 통계 기능 추가
app/gui/oven_control/engineermenuwindow.cpp
... ... @@ -6,6 +6,11 @@ engineermenuwindow::engineermenuwindow(QWidget *parent) :
6 6 ui(new Ui::engineermenuwindow)
7 7 {
8 8 ui->setupUi(this);
  9 +
  10 + //ui->clockContainer->setParent(ui->upperStack);
  11 + //setAttribute(Qt::WA_DeleteOnClose);
  12 +
  13 + connect(ui->backButton, SIGNAL(released()), this, SLOT(deleteLater()));
9 14 }
10 15  
11 16 engineermenuwindow::~engineermenuwindow()
... ...
app/gui/oven_control/engineermenuwindow.ui
... ... @@ -18,6 +18,9 @@
18 18 #bottomBar { background-image: url(:/images/bottom_bar/background.png); }</string>
19 19 </property>
20 20 <widget class="QWidget" name="centralwidget">
  21 + <property name="styleSheet">
  22 + <string notr="true"/>
  23 + </property>
21 24 <widget class="QStackedWidget" name="upperStack">
22 25 <property name="geometry">
23 26 <rect>
... ... @@ -228,9 +231,12 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }&lt;/str
228 231 </font>
229 232 </property>
230 233 <property name="styleSheet">
231   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
232   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
233   -QPushButton { text-align: left;}</string>
  234 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  235 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }
  236 +QPushButton { text-align: left;}
  237 +
  238 +
  239 +</string>
234 240 </property>
235 241 <property name="text">
236 242 <string> 교정</string>
... ... @@ -395,8 +401,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
395 401 </font>
396 402 </property>
397 403 <property name="styleSheet">
398   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
399   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
  404 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  405 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }
400 406 QPushButton { text-align: left;}</string>
401 407 </property>
402 408 <property name="text">
... ... @@ -562,8 +568,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
562 568 </font>
563 569 </property>
564 570 <property name="styleSheet">
565   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
566   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
  571 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  572 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }
567 573 QPushButton { text-align: left;}</string>
568 574 </property>
569 575 <property name="text">
... ... @@ -729,8 +735,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
729 735 </font>
730 736 </property>
731 737 <property name="styleSheet">
732   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
733   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
  738 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  739 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }
734 740 QPushButton { text-align: left;}</string>
735 741 </property>
736 742 <property name="text">
... ... @@ -896,9 +902,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
896 902 </font>
897 903 </property>
898 904 <property name="styleSheet">
899   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
900   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
901   -QPushButton { text-align: left;}</string>
  905 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  906 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }QPushButton { text-align: left;}</string>
902 907 </property>
903 908 <property name="text">
904 909 <string> 실시간데이터</string>
... ... @@ -1063,9 +1068,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
1063 1068 </font>
1064 1069 </property>
1065 1070 <property name="styleSheet">
1066   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
1067   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
1068   -QPushButton { text-align: left;}</string>
  1071 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  1072 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }QPushButton { text-align: left;}</string>
1069 1073 </property>
1070 1074 <property name="text">
1071 1075 <string> 작동시간</string>
... ... @@ -1230,8 +1234,8 @@ QPushButton { text-align: left;}&lt;/string&gt;
1230 1234 </font>
1231 1235 </property>
1232 1236 <property name="styleSheet">
1233   - <string notr="true">QPushButton { border-image: url(:/images/config/service/100_fav_pannel.png); }
1234   -QPushButton:pressed { border-image: url(:/images/config/service/100_fav_pannel_ov.png); }
  1237 + <string notr="true">QPushButton { border-image: url(:/images/config/pannel.png); }
  1238 +QPushButton:pressed { border-image: url(:/images/config/pannel_ov.png); }
1235 1239 QPushButton { text-align: left;}</string>
1236 1240 </property>
1237 1241 <property name="text">
... ...
app/gui/oven_control/errorpopupdlg.cpp
... ... @@ -0,0 +1,24 @@
  1 +#include "errorpopupdlg.h"
  2 +#include "ui_errorpopupdlg.h"
  3 +
  4 +errorPopupDlg::errorPopupDlg(QWidget *parent, const QString &MsgDesc) :
  5 + QDialog(parent),
  6 + ui(new Ui::errorPopupDlg)
  7 +{
  8 + ui->setupUi(this);
  9 + this->setAttribute(Qt::WA_TranslucentBackground);
  10 + this->setWindowFlags(Qt::FramelessWindowHint);
  11 +
  12 + ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint);
  13 + ui->ctrlWarnDescription->setText(MsgDesc);
  14 +}
  15 +
  16 +errorPopupDlg::~errorPopupDlg()
  17 +{
  18 + delete ui;
  19 +}
  20 +
  21 +void errorPopupDlg::on_ctrlOkBtn_released()
  22 +{
  23 + deleteLater();
  24 +}
... ...
app/gui/oven_control/errorpopupdlg.h
... ... @@ -0,0 +1,25 @@
  1 +#ifndef ERRORPOPUPDLG_H
  2 +#define ERRORPOPUPDLG_H
  3 +
  4 +#include <QDialog>
  5 +
  6 +namespace Ui {
  7 +class errorPopupDlg;
  8 +}
  9 +
  10 +class errorPopupDlg : public QDialog
  11 +{
  12 + Q_OBJECT
  13 +
  14 +public:
  15 + explicit errorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0);
  16 + ~errorPopupDlg();
  17 +
  18 +private slots:
  19 + void on_ctrlOkBtn_released();
  20 +
  21 +private:
  22 + Ui::errorPopupDlg *ui;
  23 +};
  24 +
  25 +#endif // ERRORPOPUPDLG_H
... ...
app/gui/oven_control/errorpopupdlg.ui
... ... @@ -0,0 +1,139 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>errorPopupDlg</class>
  4 + <widget class="QDialog" name="errorPopupDlg">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>900</width>
  10 + <height>1600</height>
  11 + </rect>
  12 + </property>
  13 + <property name="windowTitle">
  14 + <string>Dialog</string>
  15 + </property>
  16 + <property name="styleSheet">
  17 + <string notr="true">#centralwidget { background-image: url(:/images/background/popup/503.png);
  18 +border-color: rgb(255,255,255);
  19 +border-width: 2px;
  20 +border-style: solid;}</string>
  21 + </property>
  22 + <widget class="QWidget" name="centralwidget" native="true">
  23 + <property name="geometry">
  24 + <rect>
  25 + <x>0</x>
  26 + <y>510</y>
  27 + <width>900</width>
  28 + <height>503</height>
  29 + </rect>
  30 + </property>
  31 + <property name="styleSheet">
  32 + <string notr="true"/>
  33 + </property>
  34 + <widget class="QPushButton" name="ctrlOkBtn">
  35 + <property name="geometry">
  36 + <rect>
  37 + <x>374</x>
  38 + <y>370</y>
  39 + <width>152</width>
  40 + <height>70</height>
  41 + </rect>
  42 + </property>
  43 + <property name="sizePolicy">
  44 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  45 + <horstretch>0</horstretch>
  46 + <verstretch>0</verstretch>
  47 + </sizepolicy>
  48 + </property>
  49 + <property name="font">
  50 + <font>
  51 + <pointsize>10</pointsize>
  52 + <weight>75</weight>
  53 + <bold>true</bold>
  54 + </font>
  55 + </property>
  56 + <property name="styleSheet">
  57 + <string notr="true">QPushButton {border-image: url(:/images/button/152.png);}
  58 +QPushButton::pressed {border-image: url(:/images/button/152_ov.png);}
  59 +QPushButton { text-align:center;}</string>
  60 + </property>
  61 + <property name="text">
  62 + <string>확 인</string>
  63 + </property>
  64 + </widget>
  65 + <widget class="QLabel" name="ctrlWarnDescription">
  66 + <property name="geometry">
  67 + <rect>
  68 + <x>0</x>
  69 + <y>120</y>
  70 + <width>901</width>
  71 + <height>201</height>
  72 + </rect>
  73 + </property>
  74 + <property name="font">
  75 + <font>
  76 + <pointsize>12</pointsize>
  77 + <weight>75</weight>
  78 + <bold>true</bold>
  79 + </font>
  80 + </property>
  81 + <property name="styleSheet">
  82 + <string notr="true">color: rgb(255, 255, 255);</string>
  83 + </property>
  84 + <property name="text">
  85 + <string>TextLabel</string>
  86 + </property>
  87 + <property name="alignment">
  88 + <set>Qt::AlignCenter</set>
  89 + </property>
  90 + </widget>
  91 + <widget class="QLabel" name="label">
  92 + <property name="geometry">
  93 + <rect>
  94 + <x>40</x>
  95 + <y>5</y>
  96 + <width>861</width>
  97 + <height>51</height>
  98 + </rect>
  99 + </property>
  100 + <property name="font">
  101 + <font>
  102 + <pointsize>16</pointsize>
  103 + <weight>75</weight>
  104 + <bold>true</bold>
  105 + </font>
  106 + </property>
  107 + <property name="styleSheet">
  108 + <string notr="true">color: rgb(255, 255, 255);</string>
  109 + </property>
  110 + <property name="text">
  111 + <string>경 고</string>
  112 + </property>
  113 + <property name="alignment">
  114 + <set>Qt::AlignCenter</set>
  115 + </property>
  116 + </widget>
  117 + <widget class="QLabel" name="label_3">
  118 + <property name="geometry">
  119 + <rect>
  120 + <x>350</x>
  121 + <y>6</y>
  122 + <width>61</width>
  123 + <height>51</height>
  124 + </rect>
  125 + </property>
  126 + <property name="text">
  127 + <string/>
  128 + </property>
  129 + <property name="pixmap">
  130 + <pixmap resource="resources.qrc">:/images/symbol/warning.png</pixmap>
  131 + </property>
  132 + </widget>
  133 + </widget>
  134 + </widget>
  135 + <resources>
  136 + <include location="resources.qrc"/>
  137 + </resources>
  138 + <connections/>
  139 +</ui>
... ...
app/gui/oven_control/oven_control.pro
... ... @@ -50,7 +50,8 @@ SOURCES += main.cpp\
50 50 cookbook.cpp \
51 51 define.cpp \
52 52 autocook.cpp \
53   - keepwarmpopup.cpp
  53 + keepwarmpopup.cpp \
  54 + errorpopupdlg.cpp
54 55  
55 56 HEADERS += mainwindow.h \
56 57 cook.h \
... ... @@ -89,7 +90,8 @@ HEADERS += mainwindow.h \
89 90 cookbook.h \
90 91 define.h \
91 92 autocook.h \
92   - keepwarmpopup.h
  93 + keepwarmpopup.h \
  94 + errorpopupdlg.h
93 95  
94 96 FORMS += mainwindow.ui \
95 97 manualcookwindow.ui \
... ... @@ -109,12 +111,11 @@ FORMS += mainwindow.ui \
109 111 cooldownpopup.ui \
110 112 engineermenuwindow.ui \
111 113 popupwindow.ui \
112   - keepwarmpopup.ui
  114 + keepwarmpopup.ui \
  115 + errorpopupdlg.ui
113 116  
114 117 RESOURCES += \
115 118 resources.qrc
116 119  
117 120 target.path = /falinux/dev
118 121 INSTALLS += target
119   -
120   -DISTFILES +=
... ...
app/gui/oven_control/ovenstatics.cpp
1 1 #include "ovenstatics.h"
2 2 #include <QtDebug>
  3 +#include <QApplication>
  4 +#include <QTimer>
3 5 #include "mainwindow.h"
4 6 #include "ovencontroller.h"
5 7 #include "popupwindow.h"
  8 +#include "engineermenuwindow.h"
  9 +#include "errorpopupdlg.h"
6 10  
7 11 OvenStatics* OvenStatics::p_singtonInstance=NULL;
8 12  
... ... @@ -16,6 +20,9 @@ OvenStatics* OvenStatics::getInstance(QObject *parent, UdpHandler* udp, Oven* ov
16 20 MainWindow* mw = (MainWindow*)parent;
17 21 connect(mw->pcombiButton, SIGNAL(clicked()),p_singtonInstance, SLOT(onDataChanged()));
18 22 connect(p_singtonInstance->udp , SIGNAL(changed()), p_singtonInstance, SLOT(onDataChanged()));
  23 + QTimer *timer = new QTimer(p_singtonInstance);
  24 + connect(timer, SIGNAL(timeout()),p_singtonInstance,SLOT(oneSecTimerFired()));
  25 + timer->start(1000); //1000ms fired
19 26 }
20 27 return p_singtonInstance;
21 28 }
... ... @@ -30,6 +37,9 @@ OvenStatics::OvenStatics(QObject* parent) :QObject(parent)
30 37 {
31 38 curdoorstate = false;
32 39 curSysErrorState = 0;
  40 + curCommErrorState = 0;
  41 + curSensorErrorState = 0;
  42 + bDataRefreshed = false;
33 43 srvdatas = new servicedatas();
34 44 srvdatas->loadServiceDatas();
35 45 }
... ... @@ -43,12 +53,15 @@ void OvenStatics::onDataChanged()
43 53 {
44 54 error_item *item;
45 55 time_t ltime=0;
  56 + uint16_t errstatetemp;
46 57 qDebug() << "statics event fired";
47 58 return;
48 59 udp->fillControl(control);
49 60 udp->fillData(state);
  61 + bDataRefreshed = true;
50 62 time(&ltime);
51 63  
  64 +
52 65 if(oven->cooking() && control.system){
53 66 if(state.door_state ==1 && curdoorstate==0){
54 67 //door error
... ... @@ -58,66 +71,327 @@ void OvenStatics::onDataChanged()
58 71 item->last_fried = ltime;
59 72 }
60 73 curdoorstate = state.door_state;
61   - if(state.system_error!=0 && state.system_error != curSysErrorState){
62   - processSystemError(state.system_error,ltime);
63   - }
64   - curSysErrorState = state.system_error;
65 74 }
66 75  
  76 + if(state.system_error!=0 && state.system_error != curSysErrorState){
  77 + processSystemError( state.system_error,ltime);
  78 + }
  79 + curSysErrorState = state.system_error;
  80 +
  81 + errstatetemp = state.reserved2f;
  82 + if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
  83 + processCommError( errstatetemp,ltime );
  84 + }
  85 + curCommErrorState = errstatetemp;
  86 +
  87 + errstatetemp = state.reserved30;
  88 + if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){
  89 + processCommError( errstatetemp,ltime );
  90 + }
  91 + curSensorErrorState = errstatetemp;
  92 +
  93 +
  94 +}
  95 +
  96 +void OvenStatics::processSensorError(uint16_t errflag, time_t ltime){
  97 + error_item *item;
  98 + QString strMsg = "";
  99 + uint8_t state;
  100 + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
  101 + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
  102 + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  103 + else state = SYS_ON_COOK_OFF;
  104 +
  105 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){
  106 + item = &(srvdatas->err_log.items.inner_temp_fail);
  107 + strMsg = tr("내부 온도 이상 발생");
  108 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,ltime);
  109 + }
  110 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){
  111 + item = &(srvdatas->err_log.items.qunching_temp_fail);
  112 + strMsg = tr("퀀칭 온도 이상 발생");
  113 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,ltime);
  114 + }
  115 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){
  116 + //Reserved allerrornoe 설정
  117 + item = &(srvdatas->err_log.items.qunching_temp_fail);
  118 + strMsg = tr("퀀칭 온도 이상 발생");
  119 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,ltime);
  120 + }
  121 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){
  122 + item = &(srvdatas->err_log.items.wall_temp1_fail);
  123 + strMsg = tr("벽면 온도 이상 발생");
  124 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,ltime);
  125 + }
  126 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){
  127 + item = &(srvdatas->err_log.items.steam_gen_temp_fail);
  128 + strMsg = tr("스팀제네레이터 온도 이상 발생");
  129 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,ltime);
  130 + }
  131 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){
  132 + item = &(srvdatas->err_log.items.meatprove_temp1_fail);
  133 + strMsg = tr("미트프로브 온도 이상 발생");
  134 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,ltime);
  135 + }
  136 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){
  137 + //Reseved
  138 + item = &(srvdatas->err_log.items.meatprove_temp2_fail);
  139 + strMsg = tr("미트프로브2 온도 이상 발생");
  140 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg,ltime);
  141 + }
  142 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){
  143 + //Reserved
  144 + item = &(srvdatas->err_log.items.meatprove_temp3_fail);
  145 + strMsg = tr("미트프로브3 온도 이상 발생");
  146 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,ltime);
  147 + }
  148 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){
  149 + //Reserved
  150 + item = &(srvdatas->err_log.items.meatprove_temp4_fail);
  151 + strMsg = tr("미트프로브4 온도 이상 발생");
  152 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,ltime);
  153 + }
  154 + if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){
  155 + item = &(srvdatas->err_log.items.pcb_temp_fail);
  156 + strMsg = tr("PCB 온도 이상 발생");
  157 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,ltime);
  158 + }
  159 +}
  160 +
  161 +void OvenStatics::processCommError(uint16_t errflag, time_t ltime){
  162 + error_item *item;
  163 + QString strMsg = "";
  164 + uint8_t state;
  165 + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
  166 + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
  167 + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  168 + else state = SYS_ON_COOK_OFF;
  169 +
  170 + if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){
  171 + item = &(srvdatas->err_log.items.upper_pan_fail);
  172 + strMsg = tr("상부 송풍기 이상 발생");
  173 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,ltime);
  174 + }
  175 + if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){
  176 + item = &(srvdatas->err_log.items.lower_pan_fail);
  177 + strMsg = tr("하부 송풍기 이상 발생");
  178 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime);
  179 + }
  180 + if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){
  181 + item = &(srvdatas->err_log.items.steam_pan_fail);
  182 + strMsg = tr("스팀 송풍기 이상 발생");
  183 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,ltime);
  184 + }
  185 + if(errflag & MAKE_MASK(COMM_ERR_LOWERPAN)){
  186 + item = &(srvdatas->err_log.items.lower_motor_fail);
  187 + strMsg = tr("상부 모터 컨트롤러 이상 발생");
  188 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime);
  189 + }
  190 + if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){
  191 + item = &(srvdatas->err_log.items.upper_motor_fail);
  192 + strMsg = tr("상부 모터 컨트롤러 이상 발생");
  193 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,ltime);
  194 + }
67 195 }
68 196  
69 197 void OvenStatics::processSystemError(uint16_t errflag,time_t ltime){
70 198 error_item *item;
71   - if( errflag & SYS_ERR_FIRE_TRIGGER1){
  199 + QString strMsg = "";
  200 + uint8_t state;
  201 + if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
  202 + else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
  203 + else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  204 + else state = SYS_ON_COOK_OFF;
  205 +
  206 + if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){
72 207 //버너 컨트롤러 1 착화 이상
73 208 item = &(srvdatas->err_log.items.upper_fire_fail);
74   - item->fired_cnt+=1;
75   - if(item->first_fired == 0) item->first_fired = ltime;
76   - item->last_fried = ltime;
  209 + strMsg = tr("상부 버너 착하가 되지 않습니다.");
  210 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,ltime);
77 211 }
78   - if(errflag & SYS_ERR_FIRE_TRIGGER2){
  212 + if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){
79 213 //버너 컨트롤러 2 착화 이상
80 214 item = &(srvdatas->err_log.items.lower_fire_fail);
81   - item->fired_cnt+=1;
82   - if(item->first_fired == 0) item->first_fired = ltime;
83   - item->last_fried = ltime;
  215 + strMsg = tr("하부 버너 착하가 되지 않습니다.");
  216 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,ltime);
84 217 }
85 218 if(errflag & SYS_ERR_FIRE_TRIGGER3){
86 219 item = &(srvdatas->err_log.items.steam_fire_fail);
87   - item->fired_cnt+=1;
88   - if(item->first_fired == 0) item->first_fired = ltime;
89   - item->last_fried = ltime;
  220 + strMsg = tr("스팀 버너 착하가 되지 않습니다.");
  221 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,ltime);
90 222 }
91   - if(errflag & SYS_ERR_OVNE_TEMP_ALARM){
  223 + if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){
92 224 item = &(srvdatas->err_log.items.inner_temp_high_alarm);
93   - item->fired_cnt+=1;
94   - if(item->first_fired == 0) item->first_fired = ltime;
95   - item->last_fried = ltime;
  225 + strMsg = tr("내부 온도 과열 발생.");
  226 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,ltime);
96 227 }
97   - if(errflag & SYS_ERR_QUN_TEMP_ALARM){
98   - //퀀칭 온도 센서 과열 -> 에러 항목 없으며 통신이상과 동일 처리
99   - item = &(srvdatas->err_log.items.qunching_temp_fail);
100   - item->fired_cnt+=1;
101   - if(item->first_fired == 0) item->first_fired = ltime;
102   - item->last_fried = ltime;
  228 + if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){
  229 + //퀀칭 온도 센서 과열
  230 + item = &(srvdatas->err_log.items.qunching_temp_high_alarm);
  231 + strMsg = tr("퀀칭 온도 센서 이상 발생.");
  232 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,ltime);
103 233 }
104   - if(errflag & SYS_ERR_CENTER_TEMP_ALARM){
105   - item = &(srvdatas->err_log.items.meat_prove_temp1_fail);
106   - item->fired_cnt+=1;
107   - if(item->first_fired == 0) item->first_fired = ltime;
108   - item->last_fried = ltime;
  234 + if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){
  235 + //중심 온도 과열
  236 + item = &(srvdatas->err_log.items.meatprove_temp1_high_alarm);
  237 + strMsg = tr("미트프로브 온도 센서 이상 발생.");
  238 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,ltime);
109 239 }
110   - if(errflag & SYS_ERR_WALL_TEMP_ALARM){
111   - item = &(srvdatas->err_log.items.wall_temp1_fail);
112   - item->fired_cnt+=1;
113   - if(item->first_fired == 0) item->first_fired = ltime;
114   - item->last_fried = ltime;
  240 + if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){
  241 + item = &(srvdatas->err_log.items.wall_temp1_high_alarm);
  242 + strMsg = tr("벽면 온도 센서 이상 발생.");
  243 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WALL_TEMP_ALARM],strMsg,ltime);
  244 + }
  245 + if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){
  246 + //급수 이상 -> 유량 센서 이상
  247 + item = &(srvdatas->err_log.items.water_level_sensor_fail);
  248 + strMsg = tr("급수가 되지 않습니다.");
  249 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,ltime);
115 250 }
116   - if(errflag & SYS_ERR_WATER_SPLY_FAIL){
117   - //급수 이상 -> 수위 센서 이상으로 통일
  251 + if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){
  252 + //급수 이상 -> 수위 센서 이상
118 253 item = &(srvdatas->err_log.items.water_level_sensor_fail);
  254 + strMsg = tr("급수가 되지 않습니다.");
  255 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,ltime);
  256 + }
  257 +}
  258 +
  259 +
  260 +
  261 +
  262 +bool OvenStatics::getNeedErrorClear(){
  263 + return bNeedErrorClear;
  264 +}
  265 +
  266 +void OvenStatics::clearNeedErrorClear(){
  267 + //에러클리어 송신 후 flag clear
  268 + bNeedErrorClear = false;
  269 +}
  270 +
  271 +void OvenStatics::oneSecTimerFired(void){
  272 + if(bDataRefreshed) bDataRefreshed= false;
  273 + else{
  274 + udp->fillControl(control);
  275 + udp->fillData(state);
  276 + }
  277 + //가열부 시간 측정
  278 + if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){
  279 + srvdatas->use_log.items.steam_heat +=1;
  280 + }
  281 + if( (state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER | LOAD_STATE1_LOWER_FAN))!=0){
  282 + srvdatas->use_log.items.dry_heat+=1;
  283 + if(state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER)){
  284 + srvdatas->use_log.items.upper_heat +=1;
  285 + }
  286 + if((state.onoff_state2 & LOAD_STATE1_LOWER_BUNNER)!=0){
  287 + srvdatas->use_log.items.lower_heat +=1;
  288 + }
  289 + }
  290 + //모드 시간 계산
  291 + if(state.cooking_mode !=0){
  292 + if(state.cooking_humidity==0){
  293 + //건열 모드
  294 + srvdatas->use_log.items.cook_dry_mode+=1;
  295 + }
  296 + else if(state.cooking_humidity ==100){
  297 + //스팀모드
  298 + srvdatas->use_log.items.cook_steam_mode+=1;
  299 + }
  300 + else srvdatas->use_log.items.cook_combi_mode+=1;
  301 + }
  302 + if(state.cleaning_mode !=0){
  303 + switch (state.cleaning_mode) {
  304 + case (uint16_t)wash_mode_nocleanser:
  305 + srvdatas->use_log.items.wash_mode_nocleanser+=1;
  306 + break;
  307 + case (uint16_t)wash_mode_simple:
  308 + srvdatas->use_log.items.wash_mode_simple+=1;
  309 + break;
  310 + case (uint16_t)wash_mode_standard:
  311 + srvdatas->use_log.items.wash_mode_standard+=1;
  312 + break;
  313 + case (uint16_t)wash_mode_strong:
  314 + srvdatas->use_log.items.wash_mode_strong+=1;
  315 + break;
  316 + case (uint16_t)wash_mode_highspeed:
  317 + srvdatas->use_log.items.wash_mode_speed+=1;
  318 + break;
  319 + default:
  320 + break;
  321 + }
  322 + }
  323 + if(control.cooldown ==1){
  324 + srvdatas->use_log.items.cooldown_mode+=1;
  325 + }
  326 + //부품
  327 + if(state.door_state ==1){
  328 + srvdatas->use_log.items.door_open+=1;
  329 + }
  330 + if(state.onoff_state2 !=0){
  331 + if( (state.onoff_state2 & LOAD_STATE2_DV)!=0){
  332 + srvdatas->use_log.items.dv_open+=1;
  333 + }
  334 + if((state.onoff_state2 & LOAD_STATE2_SSV)!=0){
  335 + srvdatas->use_log.items.ssv_open+=1;
  336 + }
  337 + if((state.onoff_state2 & LOAD_STATE2_QNV)!=0){
  338 + srvdatas->use_log.items.qnv_open+=1;
  339 + }
  340 + if((state.onoff_state2 & LOAD_STATE2_SNV)!=0){
  341 + srvdatas->use_log.items.snv_open+=1;
  342 + }
  343 + if((state.onoff_state2 & LOAD_STATE2_SSP)!=0){
  344 + srvdatas->use_log.items.ssp_open+=1;
  345 + }
  346 + if((state.onoff_state2 & LOAD_STATE2_HDM)!=0){
  347 + srvdatas->use_log.items.hdm_open+=1;
  348 + }
  349 + if((state.onoff_state2 & LOAD_STATE2_DP)!=0){
  350 + srvdatas->use_log.items.dp_open+=1;
  351 + }
  352 + if((state.onoff_state2 & LOAD_STATE2_UNP) !=0){
  353 + srvdatas->use_log.items.unp_open+=1;
  354 + }
  355 + }
  356 +}
  357 +
  358 +void OvenStatics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, time_t ltime){
  359 +
  360 + if(errtype >= error_type_onlychk){
119 361 item->fired_cnt+=1;
120 362 if(item->first_fired == 0) item->first_fired = ltime;
121 363 item->last_fried = ltime;
122 364 }
  365 + switch(errtype){
  366 + case error_type_onlypop:
  367 + case error_type_popclr:
  368 + case error_type_popnonclr:
  369 + {
  370 + errorPopupDlg *dlg = new errorPopupDlg(QApplication::activeWindow(),MsgDesc);
  371 + dlg->exec();
  372 + break;
  373 + }
  374 + case error_type_engclr:
  375 + case error_type_engnonclr:
  376 + case error_type_onlyeng:
  377 + {
  378 + engineermenuwindow *w = new engineermenuwindow(QApplication::activeWindow());
  379 + w->showFullScreen();
  380 + break;
  381 + }
  382 + default:
  383 + break;
  384 + }
  385 + if(errtype > error_type_clrsplit){
  386 + //에러 클리어 명령 송신
  387 + qDebug() << "send error clear command";
  388 + if(errtype == error_type_engclr){
  389 + //확인 후 송신
  390 + bNeedErrorClear = true;
  391 + }
  392 + else{
  393 + //에러클리어 메시지 즉시 송신
  394 + }
  395 + }
  396 +
123 397 }
... ...
app/gui/oven_control/ovenstatics.h
... ... @@ -8,17 +8,124 @@
8 8 #include "oven.h"
9 9 #include "servicedatas.h"
10 10  
  11 +#define SYS_STATE_MAX 4
11 12  
12   -#define SYS_ERR_FIRE_TRIGGER1 0x0001
13   -#define SYS_ERR_FIRE_TRIGGER2 0x0002
14   -#define SYS_ERR_FIRE_TRIGGER3 0x0004
15   -#define SYS_ERR_OVNE_TEMP_ALARM 0x0008
16   -#define SYS_ERR_QUN_TEMP_ALARM 0x0010
17   -#define SYS_ERR_CENTER_TEMP_ALARM 0x0020
18   -#define SYS_ERR_WALL_TEMP_ALARM 0x0040
19   -#define SYS_ERR_WATER_SPLY_FAIL 0x0080
20 13  
  14 +#define SYS_ERR_MAX 10
21 15  
  16 +#define SYS_ERR_MASK_ERR_CLEAR_COOKING 0x00ff
  17 +#define SYS_ERR_MASK_ERR_CLEAR_NONCOOKING 0x00ff
  18 +#define SYS_ERR_MASK_COOKING 0x00ff
  19 +#define SYS_ERR_MASK_NONCOOKING (SYS_ERR_OVNE_TEMP_ALARM)
  20 +
  21 +
  22 +#define COMM_ERR_MAX 5
  23 +
  24 +
  25 +#define COMM_ERR_MASK_ERR_CLEAR_COOKING 0x0000
  26 +#define COMM_ERR_MASK_ERR_CLEAR_NONCOOKING 0x0000
  27 +
  28 +#define COMM_ERR_MASK_COOKING 0x0000
  29 +#define COMM_ERR_MASK_NONCOOKING 0x0000
  30 +
  31 +
  32 +#define SENSOR_ERR_MAX 10
  33 +
  34 +
  35 +#define SENSOR_ERR_MASK_ERR_CLEAR 0x0000
  36 +#define SENSOR_ERR_MASK_COOKING 0x0000
  37 +#define SENSOR_ERR_MASK_NONCOOKING 0x0000
  38 +
  39 +#define MAKE_MASK(MASK) (1<<MASK)
  40 +
  41 +#define LOAD_STATE1_UPPER_BUNNER 0x0001
  42 +#define LOAD_STATE1_LOWER_BUNNER 0x0002
  43 +#define LOAD_STATE1_STEAM_BUNNER 0x0004
  44 +#define LOAD_STATE1_UPPER_FAN 0x0008
  45 +#define LOAD_STATE1_LOWER_FAN 0x0010
  46 +#define LOAD_STATE1_STEAM_FAN 0x0020
  47 +#define LOAD_STATE1_CONVEC_FAN1 0x0040
  48 +#define LOAD_STATE1_CONVEC_FAN2 0x0080
  49 +
  50 +#define LOAD_STATE2_DV 0x0001
  51 +#define LOAD_STATE2_CFAN 0x0002
  52 +#define LOAD_STATE2_WSV 0x0004
  53 +#define LOAD_STATE2_QNV 0x0008
  54 +#define LOAD_STATE2_SSV 0x0010
  55 +#define LOAD_STATE2_SNV 0x0020
  56 +#define LOAD_STATE2_ERRLED 0x0040
  57 +#define LOAD_STATE2_ATVLED 0x0080
  58 +#define LOAD_STATE2_HL 0x0100
  59 +#define LOAD_STATE2_DP 0x0200
  60 +#define LOAD_STATE2_SSP 0x0400
  61 +#define LOAD_STATE2_UNP 0x0800
  62 +#define LOAD_STATE2_HT1 0x1000
  63 +#define LOAD_STATE2_HT2 0x2000
  64 +#define LOAD_STATE2_HDM 0x4000
  65 +#define LOAD_STATE2_ST1 0x8000
  66 +
  67 +enum sys_state_type{
  68 + SYS_OFF_COOK_OFF=0,
  69 + SYS_ON_COOK_OFF=1,
  70 + SYS_ON_COOK_ON=2,
  71 + SYS_OFF_COOK_ON=3 //unnormal state
  72 +};
  73 +
  74 +enum sys_error_id{
  75 + SYS_ERR_FIRE_TRIGGER1 =0,
  76 + SYS_ERR_FIRE_TRIGGER2 ,
  77 + SYS_ERR_FIRE_TRIGGER3 ,
  78 + SYS_ERR_OVNE_TEMP_ALARM ,
  79 + SYS_ERR_QUN_TEMP_ALARM ,
  80 + SYS_ERR_CENTER_TEMP_ALARM ,
  81 + SYS_ERR_WALL_TEMP_ALARM ,
  82 + SYS_ERR_STAM_TEMP_ALARM ,
  83 + SYS_ERR_WATER_LEVEL_FAIL ,
  84 + SYS_ERR_WATER_SPLY_FAIL
  85 +};
  86 +
  87 +enum comm_err_id{
  88 + COMM_ERR_BUNNER1 =0,
  89 + COMM_ERR_BUNNER2 ,
  90 + COMM_ERR_BUNNER3 ,
  91 + COMM_ERR_UPPERFAN ,
  92 + COMM_ERR_LOWERPAN
  93 +};
  94 +
  95 +enum sensor_err_id{
  96 + SENSOR_ERR_SENSOR_1 =0,
  97 + SENSOR_ERR_SENSOR_2 ,
  98 + SENSOR_ERR_SENSOR_3 ,
  99 + SENSOR_ERR_SENSOR_4 ,
  100 + SENSOR_ERR_SENSOR_5 ,
  101 + SENSOR_ERR_SENSOR_6 ,
  102 + SENSOR_ERR_SENSOR_7 ,
  103 + SENSOR_ERR_SENSOR_8 ,
  104 + SENSOR_ERR_SENSOR_9 ,
  105 + SENSOR_ERR_SENSOR_10
  106 +};
  107 +
  108 +enum error_exe_type{
  109 + error_type_allnone=0,
  110 + error_type_onlypop,
  111 + error_type_onlyeng,
  112 + error_type_onlychk,
  113 + error_type_popnonclr,
  114 + error_type_engnonclr,
  115 + error_type_clrsplit,
  116 + error_type_chkclr,
  117 + error_type_popclr,
  118 + error_type_engclr,
  119 +};
  120 +
  121 +
  122 +enum wash_mode_type{
  123 + wash_mode_nocleanser=1,
  124 + wash_mode_simple,
  125 + wash_mode_standard,
  126 + wash_mode_strong,
  127 + wash_mode_highspeed
  128 +};
22 129  
23 130 class OvenStatics : public QObject
24 131 {
... ... @@ -26,9 +133,43 @@ class OvenStatics : public QObject
26 133 public:
27 134 static OvenStatics* getInstance(QObject* parent = 0,UdpHandler * udp=0, Oven* oven=0);
28 135 static void destroy();
29   -
  136 + bool getNeedErrorClear();
  137 + void clearNeedErrorClear();
30 138  
31 139 private:
  140 +
  141 + const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={
  142 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
  143 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_OFF state
  144 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
  145 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
  146 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
  147 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
  148 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
  149 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state
  150 + };
  151 +
  152 + const error_exe_type comm_err_type_def[SYS_STATE_MAX][COMM_ERR_MAX] ={\
  153 + {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF
  154 + {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_ON_COO_OFF
  155 + {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_popnonclr}, //SYS_ON_COO_ON
  156 + {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON
  157 + };
  158 +
  159 + const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={
  160 + {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
  161 + error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_OFF state
  162 + {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
  163 + error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_ON_COOK_OFF state
  164 + {error_type_onlychk,error_type_onlychk,error_type_allnone,error_type_popnonclr,error_type_popnonclr,
  165 + error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_ON_COOK_ON state
  166 + {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
  167 + error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF
  168 + };
  169 +
  170 +
  171 +
  172 +
32 173 static OvenStatics* p_singtonInstance;
33 174 UdpHandler *udp;
34 175 Oven* oven;
... ... @@ -39,11 +180,20 @@ private:
39 180  
40 181 bool curdoorstate;
41 182 uint16_t curSysErrorState;
  183 + uint16_t curCommErrorState;
  184 + uint16_t curSensorErrorState;
  185 + bool bNeedErrorClear;
  186 + bool bDataRefreshed;
42 187 explicit OvenStatics(QObject* parent);
43 188 ~OvenStatics();
44 189 void processSystemError(uint16_t errflag,time_t ltime);
  190 + void processCommError(uint16_t errflag,time_t ltime);
  191 + void processSensorError(uint16_t errflag, time_t ltime);
  192 + void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, time_t ltime);
  193 +
45 194 public slots:
46 195 void onDataChanged();
  196 + void oneSecTimerFired(void);
47 197 };
48 198  
49 199 #endif // OVENSTATICS_H
... ...
app/gui/oven_control/popupwindow.cpp
1 1 #include "popupwindow.h"
2 2 #include "ui_popupwindow.h"
  3 +#include <QtDebug>
3 4  
4   -popupWindow::popupWindow(QWidget *parent) :
  5 +popupWindow::popupWindow(QWidget *parent,const QString &MsgDesc) :
5 6 QMainWindow(parent),
6 7 ui(new Ui::popupWindow)
7 8 {
... ... @@ -11,9 +12,16 @@ popupWindow::popupWindow(QWidget *parent) :
11 12  
12 13 ui->centralwidget->setAttribute(Qt::WA_TranslucentBackground);
13 14 ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint);
  15 + ui->ctrlWarnDescription->setText(MsgDesc);
  16 + connect(ui->ctrlOkBtn, SIGNAL(clicked(bool)), this, SLOT(deleteLater()));
14 17 }
15 18  
16 19 popupWindow::~popupWindow()
17 20 {
18 21 delete ui;
19 22 }
  23 +
  24 +void popupWindow::on_ctrlOkBtn_released()
  25 +{
  26 + qDebug() << "OK btn Released";
  27 +}
... ...
app/gui/oven_control/popupwindow.h
... ... @@ -12,9 +12,12 @@ class popupWindow : public QMainWindow
12 12 Q_OBJECT
13 13  
14 14 public:
15   - explicit popupWindow(QWidget *parent = 0);
  15 + explicit popupWindow(QWidget *parent = 0, const QString &MsgDesc=0);
16 16 ~popupWindow();
17 17  
  18 +private slots:
  19 + void on_ctrlOkBtn_released();
  20 +
18 21 private:
19 22 Ui::popupWindow *ui;
20 23 };
... ...
app/gui/oven_control/popupwindow.ui
... ... @@ -20,26 +20,31 @@
20 20 <widget class="QLabel" name="label_2">
21 21 <property name="geometry">
22 22 <rect>
23   - <x>50</x>
  23 + <x>0</x>
24 24 <y>500</y>
25   - <width>800</width>
  25 + <width>900</width>
26 26 <height>400</height>
27 27 </rect>
28 28 </property>
29 29 <property name="styleSheet">
30   - <string notr="true">background-color: rgb(79, 79, 79);</string>
  30 + <string notr="true">border-color: rgb(255,255,255);
  31 +border-width: 2px;
  32 +border-style: solid;</string>
31 33 </property>
32 34 <property name="text">
33 35 <string/>
34 36 </property>
  37 + <property name="pixmap">
  38 + <pixmap resource="resources.qrc">:/images/background/popup/503.png</pixmap>
  39 + </property>
35 40 </widget>
36 41 <widget class="QLabel" name="label">
37 42 <property name="geometry">
38 43 <rect>
39   - <x>50</x>
  44 + <x>90</x>
40 45 <y>510</y>
41   - <width>801</width>
42   - <height>41</height>
  46 + <width>761</width>
  47 + <height>51</height>
43 48 </rect>
44 49 </property>
45 50 <property name="font">
... ... @@ -70,7 +75,7 @@
70 75 </property>
71 76 <property name="font">
72 77 <font>
73   - <pointsize>10</pointsize>
  78 + <pointsize>12</pointsize>
74 79 <weight>75</weight>
75 80 <bold>true</bold>
76 81 </font>
... ... @@ -85,21 +90,57 @@
85 90 <set>Qt::AlignCenter</set>
86 91 </property>
87 92 </widget>
88   - <widget class="QPushButton" name="pushButton">
  93 + <widget class="QPushButton" name="ctrlOkBtn">
89 94 <property name="geometry">
90 95 <rect>
91   - <x>360</x>
92   - <y>780</y>
93   - <width>171</width>
94   - <height>61</height>
  96 + <x>366</x>
  97 + <y>800</y>
  98 + <width>152</width>
  99 + <height>70</height>
  100 + </rect>
  101 + </property>
  102 + <property name="sizePolicy">
  103 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  104 + <horstretch>0</horstretch>
  105 + <verstretch>0</verstretch>
  106 + </sizepolicy>
  107 + </property>
  108 + <property name="font">
  109 + <font>
  110 + <pointsize>10</pointsize>
  111 + <weight>75</weight>
  112 + <bold>true</bold>
  113 + </font>
  114 + </property>
  115 + <property name="styleSheet">
  116 + <string notr="true">QPushButton {border-image: url(:/images/button/152.png);}
  117 +QPushButton::pressed {border-image: url(:/images/button/152_ov.png);}
  118 +QPushButton { text-align:center;}</string>
  119 + </property>
  120 + <property name="text">
  121 + <string>확 인</string>
  122 + </property>
  123 + </widget>
  124 + <widget class="QLabel" name="label_3">
  125 + <property name="geometry">
  126 + <rect>
  127 + <x>340</x>
  128 + <y>510</y>
  129 + <width>61</width>
  130 + <height>51</height>
95 131 </rect>
96 132 </property>
97 133 <property name="text">
98   - <string>PushButton</string>
  134 + <string/>
  135 + </property>
  136 + <property name="pixmap">
  137 + <pixmap resource="resources.qrc">:/images/symbol/warning.png</pixmap>
99 138 </property>
100 139 </widget>
101 140 </widget>
102 141 </widget>
103   - <resources/>
  142 + <resources>
  143 + <include location="resources.qrc"/>
  144 + </resources>
104 145 <connections/>
105 146 </ui>
... ...
app/gui/oven_control/servicedatas.cpp
1 1 #include "string.h"
2 2 #include "servicedatas.h"
  3 +#include <QDebug>
3 4  
4 5 servicedatas::servicedatas()
5 6 {
  7 + qDebug()<< "Statics Data Size Report\r\n error_log size = " << sizeof(error_log) << " \r\nuse_static_log size = " << sizeof(use_statics_log);
6 8 memset((void*)err_log.datas,0x00,sizeof(error_log));
  9 + memset((void*)use_log.datas,0x00,sizeof(use_statics_log));
  10 +
7 11 }
8 12  
9 13 bool servicedatas::loadServiceDatas(void){
... ...
app/gui/oven_control/servicedatas.h
... ... @@ -6,7 +6,9 @@
6 6  
7 7 #define STRUCT_PACK __attribute__ ((packed))
8 8  
9   -#define MAX_ERROR_TYPE_CNT 34
  9 +#define MAX_ERROR_TYPE_CNT 30
  10 +
  11 +#define MAX_STATICS_CNT 23
10 12  
11 13 typedef struct _error_item{
12 14 uint16_t fired_cnt;
... ... @@ -21,46 +23,74 @@ typedef union _error_log{
21 23 struct{
22 24 error_item door;
23 25 error_item upper_fire_fail;
24   - error_item upper_fire_alarm;
25 26 error_item upper_pan_fail;
26 27 error_item lower_fire_fail;
27   - error_item lower_fire_alarm;
28 28 error_item lower_pan_fail;
29 29 error_item steam_fire_fail;
30   - error_item steam_fire_alarm;
31 30 error_item steam_pan_fail;
32 31 error_item water_level_sensor_fail;
33 32 error_item water_flow_sensor_fail;
  33 + error_item inner_temp_high_alarm; //B1 Sensor
34 34 error_item inner_temp_fail;
35   - error_item inner_temp_high_alarm;
  35 + error_item qunching_temp_high_alarm; //B2 Sensor
36 36 error_item qunching_temp_fail;
37   - error_item meat_prove_temp1_fail;
38   - error_item meatprove_temp2_fail;
39   - error_item meatprove_temp3_fail;
40   - error_item meatprove_temp4_fail;
  37 + error_item meatprove_temp1_high_alarm; //B3 Sensor
  38 + error_item meatprove_temp1_fail;
  39 + error_item wall_temp1_high_alarm; //B4 Sensor
41 40 error_item wall_temp1_fail;
42   - error_item wall_temp2_fail;
  41 + error_item steam_gen_temp_high_alram; //B5 Sensor
43 42 error_item steam_gen_temp_fail;
  43 + error_item meatprove_temp2_fail;
  44 + error_item meatprove_temp3_fail;
  45 + error_item meatprove_temp4_fail;
  46 + error_item pcb_temp_high_alarm; //PCB Temp
44 47 error_item pcb_temp_fail;
45   - error_item upper_motor_noncook_fail;
46   - error_item upper_motor_cook_fail;
47   - error_item lower_motor_noncook_fail;
48   - error_item lower_motor_cook_fail;
  48 + error_item upper_motor_fail;
  49 + error_item lower_motor_fail;
49 50 error_item small_motor_fail;
50 51 error_item midd_motor_fail;
51   - error_item supply_motor_fail; // Steam Generator Tank Supply Pump
  52 + error_item supply_motor_fail; // Steam Generator Tank Supply Pump
52 53 error_item humidity_tamper_fail;
53 54 }items;
54 55 }STRUCT_PACK error_log;
55 56  
56 57  
57   -
  58 +typedef union _use_statics_log{
  59 + uint8_t datas[MAX_STATICS_CNT*4];
  60 + uint32_t values[MAX_STATICS_CNT];
  61 + struct{
  62 + uint32_t steam_heat;
  63 + uint32_t dry_heat;
  64 + uint32_t upper_heat;
  65 + uint32_t lower_heat;
  66 + uint32_t cook_dry_mode;
  67 + uint32_t cook_steam_mode;
  68 + uint32_t cook_combi_mode;
  69 + uint32_t wash_mode_nocleanser;
  70 + uint32_t wash_mode_simple;
  71 + uint32_t wash_mode_standard;
  72 + uint32_t wash_mode_strong;
  73 + uint32_t wash_mode_speed;
  74 + uint32_t cooldown_mode;
  75 + uint32_t door_open;
  76 + uint32_t dv_open;
  77 + uint32_t ssv_open;
  78 + uint32_t qnv_open;
  79 + uint32_t ssp_open;
  80 + uint32_t snv_open;
  81 + uint32_t hosereel;
  82 + uint32_t hdm_open;
  83 + uint32_t dp_open;
  84 + uint32_t unp_open;
  85 + }items;
  86 +}STRUCT_PACK use_statics_log;
58 87  
59 88 class servicedatas
60 89 {
61 90 public:
62 91 servicedatas();
63 92 error_log err_log;
  93 + use_statics_log use_log;
64 94 bool saveServiceDatas(void);
65 95 bool loadServiceDatas(void);
66 96 };
... ...