Blame view

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