Commit cefd483e4066e4ba94dbaede9080b21ed5161e1b
1 parent
c12e09d9ad
Exists in
master
and in
2 other branches
에러 수정
- 시간 오표시 에러 수정(로컬 타임 적용) - 팝업 표시 알고리즘 수정(Modal -> Modaless)
Showing
4 changed files
with
76 additions
and
20 deletions
Show diff stats
app/gui/oven_control/historylistwindow.cpp
@@ -97,10 +97,10 @@ void HistoryListWindow::reloadDataset(void){ | @@ -97,10 +97,10 @@ void HistoryListWindow::reloadDataset(void){ | ||
97 | item = err_items[m_nCurDpStartPos+i]; | 97 | item = err_items[m_nCurDpStartPos+i]; |
98 | m_ctrlErrBtns[i]->setText(strTemp); | 98 | m_ctrlErrBtns[i]->setText(strTemp); |
99 | m_ctrlCountLabels[i] ->setText(strTemp.sprintf("%d",item->fired_cnt)); | 99 | m_ctrlCountLabels[i] ->setText(strTemp.sprintf("%d",item->fired_cnt)); |
100 | - timeptr = gmtime(&(item->first_fired)); | 100 | + timeptr = localtime(&(item->first_fired)); |
101 | strftime(strTime,64,"%y-%m-%d %H:%M:%S",timeptr); | 101 | strftime(strTime,64,"%y-%m-%d %H:%M:%S",timeptr); |
102 | m_ctrlFirstTimeLabels[i]->setText(strTime); | 102 | m_ctrlFirstTimeLabels[i]->setText(strTime); |
103 | - timeptr = gmtime(&(item->last_fried)); | 103 | + timeptr = localtime(&(item->last_fried)); |
104 | strftime(strTime,64,"%y-%m-%d %H:%M:%S",timeptr); | 104 | strftime(strTime,64,"%y-%m-%d %H:%M:%S",timeptr); |
105 | m_ctrlLastTimeLabels[i]->setText(strTime); | 105 | m_ctrlLastTimeLabels[i]->setText(strTime); |
106 | } | 106 | } |
app/gui/oven_control/ovenstatics.cpp
@@ -41,6 +41,9 @@ OvenStatistics::OvenStatistics(QObject* parent) :QObject(parent) | @@ -41,6 +41,9 @@ OvenStatistics::OvenStatistics(QObject* parent) :QObject(parent) | ||
41 | curSensorErrorState = 0; | 41 | curSensorErrorState = 0; |
42 | bDataRefreshed = false; | 42 | bDataRefreshed = false; |
43 | realdata.d32 = 0; | 43 | realdata.d32 = 0; |
44 | + m_bPopupShow = false; | ||
45 | + m_nLastPopupidx = MAX_ERROR_TYPE_CNT; | ||
46 | + | ||
44 | 47 | ||
45 | for(i=0;i<MAX_LOG_SENSOR;i++){ | 48 | for(i=0;i<MAX_LOG_SENSOR;i++){ |
46 | curSensorValue[i].utemp = 0; | 49 | curSensorValue[i].utemp = 0; |
@@ -242,7 +245,7 @@ void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){ | @@ -242,7 +245,7 @@ void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){ | ||
242 | if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){ | 245 | if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){ |
243 | item = &(srvdata->err_log.items.steam_fire_fail); | 246 | item = &(srvdata->err_log.items.steam_fire_fail); |
244 | strMsg = tr("스팀 버너 착하가 되지 않습니다."); | 247 | strMsg = tr("스팀 버너 착하가 되지 않습니다."); |
245 | - strMsg = tr("스팀 버너 착하 이상 발생"); | 248 | + strTitle = tr("스팀 버너 착하 이상 발생"); |
246 | processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime); | 249 | processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime); |
247 | } | 250 | } |
248 | if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){ | 251 | if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){ |
@@ -491,8 +494,8 @@ void OvenStatistics::oneSecTimerFired(void){ | @@ -491,8 +494,8 @@ void OvenStatistics::oneSecTimerFired(void){ | ||
491 | } | 494 | } |
492 | 495 | ||
493 | void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){ | 496 | void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){ |
494 | - | ||
495 | - qDebug() << (int) (item - &(srvdata->err_log.values[0])) << "ERROR Fired!"; | 497 | + uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0])); |
498 | + qDebug() << (uint32_t) (item - &(srvdata->err_log.values[0])) << "ERROR Fired!"; | ||
496 | if(m_pLastErrItem == item ){ | 499 | if(m_pLastErrItem == item ){ |
497 | srvdata->err_log.items.repeat_error.fired_cnt =item->fired_cnt; | 500 | srvdata->err_log.items.repeat_error.fired_cnt =item->fired_cnt; |
498 | srvdata->err_log.items.repeat_error.first_fired = item->first_fired; | 501 | srvdata->err_log.items.repeat_error.first_fired = item->first_fired; |
@@ -505,13 +508,41 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, | @@ -505,13 +508,41 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, | ||
505 | if(item->first_fired == 0) item->first_fired = ltime; | 508 | if(item->first_fired == 0) item->first_fired = ltime; |
506 | item->last_fried = ltime; | 509 | item->last_fried = ltime; |
507 | } | 510 | } |
511 | + | ||
512 | + if(errtype > error_type_clrsplit){ | ||
513 | + //에러 클리어 명령 송신 | ||
514 | + if(errtype == error_type_engclr){ | ||
515 | + //확인 후 송신 | ||
516 | + bNeedErrorClear = true; | ||
517 | + } | ||
518 | + else{ | ||
519 | + //에러클리어 메시지 즉시 송신 | ||
520 | + //udp->set(TG_ERROR_CLEAR,0xCECE); | ||
521 | + bNeedErrorClear=true; | ||
522 | + } | ||
523 | + } | ||
524 | + | ||
508 | switch(errtype){ | 525 | switch(errtype){ |
509 | case error_type_onlypop: | 526 | case error_type_onlypop: |
510 | case error_type_popclr: | 527 | case error_type_popclr: |
511 | case error_type_popnonclr: | 528 | case error_type_popnonclr: |
512 | { | 529 | { |
513 | - ErrorPopupDlg *dlg = new ErrorPopupDlg(QApplication::activeWindow(),MsgDesc,MsgTitle); | ||
514 | - dlg->exec(); | 530 | + if(m_bPopupShow==false){ |
531 | + m_bPopupShow = true; | ||
532 | + ErrorPopupDlg *dlg = new ErrorPopupDlg(QApplication::activeWindow(),MsgDesc,MsgTitle); | ||
533 | + connect(dlg,SIGNAL(destroyed(QObject*)),this, SLOT(onErrorPopupClosed())); | ||
534 | + dlg->showFullScreen(); | ||
535 | + m_nLastPopupidx = erridx; | ||
536 | + } | ||
537 | + else{ | ||
538 | + if(erridx != m_nLastPopupidx && m_mapPopupList.contains(erridx) ==false){ | ||
539 | + popup_list_item popitem; | ||
540 | + popitem.bNeedClear = bNeedErrorClear; | ||
541 | + popitem.strDesc = MsgDesc; | ||
542 | + popitem.strTitle = MsgTitle; | ||
543 | + m_mapPopupList.insert(erridx,popitem); | ||
544 | + } | ||
545 | + } | ||
515 | break; | 546 | break; |
516 | } | 547 | } |
517 | case error_type_engclr: | 548 | case error_type_engclr: |
@@ -525,18 +556,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, | @@ -525,18 +556,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, | ||
525 | default: | 556 | default: |
526 | break; | 557 | break; |
527 | } | 558 | } |
528 | - if(errtype > error_type_clrsplit){ | ||
529 | - //에러 클리어 명령 송신 | ||
530 | - qDebug() << "send error clear command"; | ||
531 | - if(errtype == error_type_engclr){ | ||
532 | - //확인 후 송신 | ||
533 | - bNeedErrorClear = true; | ||
534 | - } | ||
535 | - else{ | ||
536 | - //에러클리어 메시지 즉시 송신 | ||
537 | - udp->set(TG_ERROR_CLEAR,0xCECE); | ||
538 | - } | ||
539 | - } | 559 | + |
540 | 560 | ||
541 | } | 561 | } |
542 | 562 | ||
@@ -552,3 +572,26 @@ uint8_t OvenStatistics::getSensorTypeByIdx(uint16_t idx){ | @@ -552,3 +572,26 @@ uint8_t OvenStatistics::getSensorTypeByIdx(uint16_t idx){ | ||
552 | type_temp OvenStatistics::getCurSensorValueByIdx(uint16_t idx){ | 572 | type_temp OvenStatistics::getCurSensorValueByIdx(uint16_t idx){ |
553 | return curSensorValue[idx]; | 573 | return curSensorValue[idx]; |
554 | } | 574 | } |
575 | + | ||
576 | +void OvenStatistics::onErrorPopupClosed(void){ | ||
577 | + qDebug() << "Error Popup Closed!"; | ||
578 | + if(bNeedErrorClear) { | ||
579 | + qDebug() << "send error clear command"; | ||
580 | + bNeedErrorClear = false; | ||
581 | + udp->set(TG_ERROR_CLEAR,0xCECE); | ||
582 | + } | ||
583 | + if(m_mapPopupList.isEmpty()==false){ | ||
584 | + popup_list_item item; | ||
585 | + item = m_mapPopupList.first(); | ||
586 | + m_nLastPopupidx = m_mapPopupList.firstKey(); | ||
587 | + bNeedErrorClear = item.bNeedClear; | ||
588 | + ErrorPopupDlg *dlg = new ErrorPopupDlg(QApplication::activeWindow(),item.strDesc,item.strTitle); | ||
589 | + m_mapPopupList.remove(m_nLastPopupidx); | ||
590 | + connect(dlg,SIGNAL(destroyed(QObject*)),this, SLOT(onErrorPopupClosed())); | ||
591 | + dlg->showFullScreen(); | ||
592 | + } | ||
593 | + else{ | ||
594 | + m_bPopupShow = false; | ||
595 | + m_nLastPopupidx = MAX_ERROR_TYPE_CNT; | ||
596 | + } | ||
597 | +} |
app/gui/oven_control/ovenstatics.h
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | 3 | ||
4 | #include <QObject> | 4 | #include <QObject> |
5 | #include <time.h> | 5 | #include <time.h> |
6 | +#include <qmap.h> | ||
6 | #include "../../app-prime-modbus/include/all_share.h" | 7 | #include "../../app-prime-modbus/include/all_share.h" |
7 | #include "udphandler.h" | 8 | #include "udphandler.h" |
8 | #include "oven.h" | 9 | #include "oven.h" |
@@ -160,6 +161,12 @@ typedef union | @@ -160,6 +161,12 @@ typedef union | ||
160 | }b; | 161 | }b; |
161 | }realtime_data; | 162 | }realtime_data; |
162 | 163 | ||
164 | +typedef struct _popup_list_item{ | ||
165 | + QString strTitle; | ||
166 | + QString strDesc; | ||
167 | + bool bNeedClear; | ||
168 | +}popup_list_item; | ||
169 | + | ||
163 | class OvenStatistics : public QObject | 170 | class OvenStatistics : public QObject |
164 | { | 171 | { |
165 | Q_OBJECT | 172 | Q_OBJECT |
@@ -219,6 +226,10 @@ private: | @@ -219,6 +226,10 @@ private: | ||
219 | oven_control_t control; | 226 | oven_control_t control; |
220 | oven_state_t state; | 227 | oven_state_t state; |
221 | error_item* m_pLastErrItem; | 228 | error_item* m_pLastErrItem; |
229 | + QMap<uint32_t, popup_list_item> m_mapPopupList; | ||
230 | + uint32_t m_nLastPopupidx; | ||
231 | + bool m_bPopupShow; | ||
232 | + | ||
222 | 233 | ||
223 | 234 | ||
224 | 235 | ||
@@ -229,6 +240,7 @@ private: | @@ -229,6 +240,7 @@ private: | ||
229 | bool bNeedErrorClear; | 240 | bool bNeedErrorClear; |
230 | bool bDataRefreshed; | 241 | bool bDataRefreshed; |
231 | realtime_data realdata; | 242 | realtime_data realdata; |
243 | + | ||
232 | explicit OvenStatistics(QObject* parent); | 244 | explicit OvenStatistics(QObject* parent); |
233 | ~OvenStatistics(); | 245 | ~OvenStatistics(); |
234 | void processSystemError(uint16_t errflag,time_t ltime); | 246 | void processSystemError(uint16_t errflag,time_t ltime); |
@@ -240,6 +252,7 @@ private: | @@ -240,6 +252,7 @@ private: | ||
240 | public slots: | 252 | public slots: |
241 | void onDataChanged(); | 253 | void onDataChanged(); |
242 | void oneSecTimerFired(void); | 254 | void oneSecTimerFired(void); |
255 | + void onErrorPopupClosed(void); | ||
243 | }; | 256 | }; |
244 | 257 | ||
245 | #endif // OVENSTATICS_H | 258 | #endif // OVENSTATICS_H |
app/gui/oven_control/realtimesensorwindow.cpp
@@ -106,7 +106,7 @@ void RealtimeSensorWindow::reloadUi(void){ | @@ -106,7 +106,7 @@ void RealtimeSensorWindow::reloadUi(void){ | ||
106 | 106 | ||
107 | for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){ | 107 | for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){ |
108 | if(m_arrSensorItems[i]->last_high_time !=0){ | 108 | if(m_arrSensorItems[i]->last_high_time !=0){ |
109 | - timeptr = gmtime(&(m_arrSensorItems[i]->last_high_time)); | 109 | + timeptr = localtime(&(m_arrSensorItems[i]->last_high_time)); |
110 | strftime(strTime,64,"%y-%m-%d\n%H:%M:%S",timeptr); | 110 | strftime(strTime,64,"%y-%m-%d\n%H:%M:%S",timeptr); |
111 | m_arrLbState[3][i]->setText(strTime); | 111 | m_arrLbState[3][i]->setText(strTime); |
112 | } | 112 | } |