Commit c50beef02d5f1d7f7d6ae252284c6bc1eefe8cc6
1 parent
cf0ca80f62
Exists in
master
and in
2 other branches
에러 처리 루틴 및 에러 처리 팝업 추가
부품 사용 통계 기능 추가
Showing
13 changed files
with
808 additions
and
100 deletions
Show diff stats
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); }</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;}</string> |
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;}</string> |
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;}</string> |
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;}</string> |
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;}</string> |
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;}</string> |
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(<ime); |
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 | }; | ... | ... |