Blame view

app/gui/oven_control/realtimesensorwindow.cpp 6.53 KB
9146b87b4   고영탁   엔코더 작업 진행중
1
  #include <QKeyEvent>
6a965b9f1   고영탁   엔지니어 모드 2차 구현
2
3
4
  #include "realtimesensorwindow.h"
  #include "ui_realtimesensorwindow.h"
  #include "ovenstatics.h"
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
5
6
  #include "stringer.h"
  #include "QDateTime"
66e60ceb5   김태훈   모든 버튼에 음향 효과 추가
7
  #include "soundplayer.h"
c03c0ecca   고영탁   메뉴얼 보기 기능 추가
8
  #include "manualviewerdlg.h"
6a965b9f1   고영탁   엔지니어 모드 2차 구현
9
14a73498f   김태훈   소스 코드 정리
10
  RealtimeSensorWindow::RealtimeSensorWindow(QWidget *parent) :
6a965b9f1   고영탁   엔지니어 모드 2차 구현
11
      QMainWindow(parent),
14a73498f   김태훈   소스 코드 정리
12
      ui(new Ui::RealtimeSensorWindow)
6a965b9f1   고영탁   엔지니어 모드 2차 구현
13
  {
42410a75c   김태훈   오타 수정
14
      OvenStatistics* ovs = OvenStatistics::getInstance();
6a965b9f1   고영탁   엔지니어 모드 2차 구현
15
      int i = 0;
eea7d3d59   김태훈   Segmentation Faul...
16
6a965b9f1   고영탁   엔지니어 모드 2차 구현
17
      ui->setupUi(this);
eea7d3d59   김태훈   Segmentation Faul...
18
19
      ui->clockContainer->setParent(ui->upperStack);
      setAttribute(Qt::WA_DeleteOnClose);
66e60ceb5   김태훈   모든 버튼에 음향 효과 추가
20
21
      foreach (QPushButton *button, findChildren<QPushButton *>())
          connect(button, &QPushButton::pressed, SoundPlayer::playClick);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
22
23
24
25
26
27
28
29
30
      m_arrLbState[0][0] = ui->m_ctrlLbListState_1_1;
      m_arrLbState[0][1] = ui->m_ctrlLbListState_1_2;
      m_arrLbState[0][2] = ui->m_ctrlLbListState_1_3;
      m_arrLbState[0][3] = ui->m_ctrlLbListState_1_4;
      m_arrLbState[0][4] = ui->m_ctrlLbListState_1_5;
      m_arrLbState[0][5] = ui->m_ctrlLbListState_1_6;
      m_arrLbState[0][6] = ui->m_ctrlLbListState_1_7;
      m_arrLbState[0][7] = ui->m_ctrlLbListState_1_8;
      m_arrLbState[0][8] = ui->m_ctrlLbListState_1_9;
eb617c902   고영탁   고객사 수정 요청
31
      m_arrLbState[0][9] = ui->m_ctrlLbListState_1_10;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
32
33
34
35
36
37
38
39
40
41
  
      m_arrLbState[1][0] = ui->m_ctrlLbListState_2_1;
      m_arrLbState[1][1] = ui->m_ctrlLbListState_2_2;
      m_arrLbState[1][2] = ui->m_ctrlLbListState_2_3;
      m_arrLbState[1][3] = ui->m_ctrlLbListState_2_4;
      m_arrLbState[1][4] = ui->m_ctrlLbListState_2_5;
      m_arrLbState[1][5] = ui->m_ctrlLbListState_2_6;
      m_arrLbState[1][6] = ui->m_ctrlLbListState_2_7;
      m_arrLbState[1][7] = ui->m_ctrlLbListState_2_8;
      m_arrLbState[1][8] = ui->m_ctrlLbListState_2_9;
eb617c902   고영탁   고객사 수정 요청
42
      m_arrLbState[1][9] = ui->m_ctrlLbListState_2_10;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
43
44
45
46
47
48
49
50
51
52
  
      m_arrLbState[2][0] = ui->m_ctrlLbListState_3_1;
      m_arrLbState[2][1] = ui->m_ctrlLbListState_3_2;
      m_arrLbState[2][2] = ui->m_ctrlLbListState_3_3;
      m_arrLbState[2][3] = ui->m_ctrlLbListState_3_4;
      m_arrLbState[2][4] = ui->m_ctrlLbListState_3_5;
      m_arrLbState[2][5] = ui->m_ctrlLbListState_3_6;
      m_arrLbState[2][6] = ui->m_ctrlLbListState_3_7;
      m_arrLbState[2][7] = ui->m_ctrlLbListState_3_8;
      m_arrLbState[2][8] = ui->m_ctrlLbListState_3_9;
eb617c902   고영탁   고객사 수정 요청
53
      m_arrLbState[2][9] = ui->m_ctrlLbListState_3_10;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
54
55
56
57
58
59
60
61
62
63
  
      m_arrLbState[3][0] = ui->m_ctrlLbListState_4_1;
      m_arrLbState[3][1] = ui->m_ctrlLbListState_4_2;
      m_arrLbState[3][2] = ui->m_ctrlLbListState_4_3;
      m_arrLbState[3][3] = ui->m_ctrlLbListState_4_4;
      m_arrLbState[3][4] = ui->m_ctrlLbListState_4_5;
      m_arrLbState[3][5] = ui->m_ctrlLbListState_4_6;
      m_arrLbState[3][6] = ui->m_ctrlLbListState_4_7;
      m_arrLbState[3][7] = ui->m_ctrlLbListState_4_8;
      m_arrLbState[3][8] = ui->m_ctrlLbListState_4_9;
eb617c902   고영탁   고객사 수정 요청
64
      m_arrLbState[3][9] = ui->m_ctrlLbListState_4_10;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
65
66
  
      for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){
14a73498f   김태훈   소스 코드 정리
67
          m_arrSensorItems[i] = &(ovs->srvdata->sensor_log.values[m_arrSensorItemIdxs[i]]);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
68
69
      }
      reloadUi();
3f5f5d4ce   고영탁   디버깅 요청 사항 적용
70
71
72
      timer = new QTimer(this);
      connect(timer, SIGNAL(timeout()),this,SLOT(oneSecTimerFired()));
      timer->start(1000); //1000ms fired
6a965b9f1   고영탁   엔지니어 모드 2차 구현
73
  }
14a73498f   김태훈   소스 코드 정리
74
  RealtimeSensorWindow::~RealtimeSensorWindow()
6a965b9f1   고영탁   엔지니어 모드 2차 구현
75
  {
6a965b9f1   고영탁   엔지니어 모드 2차 구현
76
  }
14a73498f   김태훈   소스 코드 정리
77
  void RealtimeSensorWindow::on_backButton_clicked()
6a965b9f1   고영탁   엔지니어 모드 2차 구현
78
  {
eea7d3d59   김태훈   Segmentation Faul...
79
      close();
6a965b9f1   고영탁   엔지니어 모드 2차 구현
80
81
82
83
  }
  
  uint16_t i_temp1,i_temp2;
  type_temp temp_temp;
14a73498f   김태훈   소스 코드 정리
84
  void RealtimeSensorWindow::reloadUi(void){
6a965b9f1   고영탁   엔지니어 모드 2차 구현
85
      QString strTemp="";
6a965b9f1   고영탁   엔지니어 모드 2차 구현
86
      int i = 0;
42410a75c   김태훈   오타 수정
87
      OvenStatistics* ovs = OvenStatistics::getInstance();
6a965b9f1   고영탁   엔지니어 모드 2차 구현
88
89
90
91
92
93
94
      if(ovs!= NULL){
          for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){
              i_temp1 = i;
              i_temp2 = ovs->getSensorTypeByIdx(m_arrSensorItemIdxs[i]);
              temp_temp = ovs->getCurSensorValueByIdx(m_arrSensorItemIdxs[i]);
  
              if(ovs->getSensorTypeByIdx(m_arrSensorItemIdxs[i]) == 2 )
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
95
                      strTemp = Stringer::temperature(ovs->getCurSensorValueByIdx(m_arrSensorItemIdxs[i]).itemp/10);// strTemp.sprintf("%d℃",ovs->getCurSensorValueByIdx(m_arrSensorItemIdxs[i]).itemp/10);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
96
              else if(ovs->getSensorTypeByIdx(m_arrSensorItemIdxs[i]) == 1 )
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
97
98
                      strTemp = Stringer::temperature(ovs->getCurSensorValueByIdx(m_arrSensorItemIdxs[i]).utemp);
              else  strTemp = Stringer::temperature(ovs->getCurSensorValueByIdx(m_arrSensorItemIdxs[i]).itemp);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
99
100
101
102
103
              m_arrLbState[0][i]->setText(strTemp);
          }
  
          for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){
              if(ovs->getSensorTypeByIdx(m_arrSensorItemIdxs[i]) == 2 )
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
104
                      strTemp = Stringer::temperature(m_arrSensorItems[i]->high_temp.itemp/10);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
105
              else if(ovs->getSensorTypeByIdx(m_arrSensorItemIdxs[i]) == 1)
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
106
107
                      strTemp = Stringer::temperature(m_arrSensorItems[i]->high_temp.utemp);
              else  strTemp= Stringer::temperature(m_arrSensorItems[i]->high_temp.itemp);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
108
109
110
111
              m_arrLbState[1][i]->setText(strTemp);
          }
  
          for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
112
              strTemp = Stringer::temperature(m_arrCriticalValue[i]);
6a965b9f1   고영탁   엔지니어 모드 2차 구현
113
114
115
116
117
118
              m_arrLbState[2][i]->setText(strTemp);
          }
  
  
          for(i=0;i<REALSENSOR_CONTROL_LIST_ITEM_MAX;i++){
              if(m_arrSensorItems[i]->last_high_time !=0){
00fd78596   고영탁   설정 기능 구현(엔지니어링 모드...
119
120
121
122
123
                  QDateTime dt_tm;
                  dt_tm.setTime_t(m_arrSensorItems[i]->last_high_time);
                  //timeptr = localtime(&(m_arrSensorItems[i]->last_high_time));
                  //strftime(strTime,64,"%y-%m-%d
  %H:%M:%S",timeptr);
0faa32511   김태훈   컴파일 경고 제거 및 리팩토링
124
                  m_arrLbState[3][i]->setText(Stringer::dateTime(dt_tm));
6a965b9f1   고영탁   엔지니어 모드 2차 구현
125
126
127
128
129
130
131
132
133
134
135
136
              }
              else{
                  m_arrLbState[3][i]->setText("-");
              }
          }
  
  
  
  
      }
  
  }
3f5f5d4ce   고영탁   디버깅 요청 사항 적용
137
138
139
140
  
  void RealtimeSensorWindow::oneSecTimerFired(void){
      reloadUi();
  }
9146b87b4   고영탁   엔코더 작업 진행중
141
142
143
144
145
  
  void RealtimeSensorWindow::keyPressEvent(QKeyEvent *event)
  {
      switch (event->key())
      {
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
146
      case 0x01000032:    // Turn left
9146b87b4   고영탁   엔코더 작업 진행중
147
148
149
150
          focusPreviousChild();
          break;
      case 0x01000031:    // Push
          break;
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
151
      case 0x01000030:    // Turn right
9146b87b4   고영탁   엔코더 작업 진행중
152
153
154
155
156
157
158
159
160
          focusNextChild();
          break;
      }
  }
  
  void RealtimeSensorWindow::keyReleaseEvent(QKeyEvent *event)
  {
      switch (event->key())
      {
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
161
      case 0x01000032:    // Turn left
9146b87b4   고영탁   엔코더 작업 진행중
162
163
164
165
166
167
168
169
170
171
          focusPreviousChild();
          break;
      case 0x01000031:    // Push
      {
          QPushButton *btn = qobject_cast<QPushButton*>(focusWidget());
          if(btn != NULL){
              btn->click();
          }
          break;
      }
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
172
      case 0x01000030:    // Turn right
9146b87b4   고영탁   엔코더 작업 진행중
173
174
175
176
          focusNextChild();
          break;
      }
  }
91480de3c   고영탁   센서 실시간 데이터 리셋 기능 추가
177
178
179
180
181
182
183
  
  void RealtimeSensorWindow::on_resetButton_clicked()
  {
      OvenStatistics* ovs = OvenStatistics::getInstance();
      ovs->resetSensorHistory();
      reloadUi();
  }
c03c0ecca   고영탁   메뉴얼 보기 기능 추가
184
185
186
187
188
189
190
  
  void RealtimeSensorWindow::on_helpButton_clicked()
  {
      ManualViewerDlg* dlg = new ManualViewerDlg(this);
      dlg->showFullScreen();
      dlg->raise();
  }