8c2952457
김태훈
응용 프로그램 추가
|
1
2
3
4
5
6
|
#ifndef UDPHANDLER_H
#define UDPHANDLER_H
#include <QObject>
#include <QUdpSocket>
#include <QByteArray>
|
bae371454
김태훈
485 통신 오류 검출 루틴
|
7
|
#include <QTimer>
|
8c2952457
김태훈
응용 프로그램 추가
|
8
|
|
cf0ca80f6
김태훈
app_oven_control를...
|
9
|
#include "../../app-prime-modbus/include/all_share.h"
|
8c2952457
김태훈
응용 프로그램 추가
|
10
11
12
13
14
15
16
|
class UdpHandler : public QObject
{
Q_OBJECT
oven_control_t control;
oven_state_t state;
|
538041ab9
김태훈
소스 코드 구조 개선
|
17
|
static UdpHandler *instance;
|
8c2952457
김태훈
응용 프로그램 추가
|
18
|
public:
|
538041ab9
김태훈
소스 코드 구조 개선
|
19
20
21
22
23
24
25
26
27
28
|
static UdpHandler *getInstance() {
if (instance == 0)
{
UdpHandler *u = new UdpHandler;
if (u->init())
instance = u;
}
return instance;
}
|
8c2952457
김태훈
응용 프로그램 추가
|
29
|
bool init();
|
0964351ba
고영탁
스팀 과열 에러 발생 시 SSV...
|
30
|
void set_steam_high_sv_onoff(bool onoff);
|
8c2952457
김태훈
응용 프로그램 추가
|
31
|
|
6e338d03f
김태훈
연소가스동작 추가
|
32
33
|
const oven_control_t &getControl() { return control; }
const oven_state_t &getData() { return state; }
|
8c2952457
김태훈
응용 프로그램 추가
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
bool burner1() { return (state.onoff_state1 & 0x0001) != 0; }
bool burner2() { return (state.onoff_state1 & 0x0002) != 0; }
bool burner3() { return (state.onoff_state1 & 0x0004) != 0; }
bool burnerFan1() { return (state.onoff_state1 & 0x0008) != 0; }
bool burnerFan2() { return (state.onoff_state1 & 0x0010) != 0; }
bool burnerFan3() { return (state.onoff_state1 & 0x0020) != 0; }
bool convection1() { return (state.onoff_state1 & 0x0040) != 0; }
bool convection2() { return (state.onoff_state1 & 0x0080) != 0; }
bool dv() { return (state.onoff_state2 & 0x0001) != 0; }
bool cfan() { return (state.onoff_state2 & 0x0002) != 0; }
bool wsv() { return (state.onoff_state2 & 0x0004) != 0; }
bool qnv() { return (state.onoff_state2 & 0x0008) != 0; }
bool ssv() { return (state.onoff_state2 & 0x0010) != 0; }
bool snv() { return (state.onoff_state2 & 0x0020) != 0; }
bool hl() { return (state.onoff_state2 & 0x0040) != 0; }
bool dp() { return (state.onoff_state2 & 0x0080) != 0; }
bool ssp() { return (state.onoff_state2 & 0x0100) != 0; }
bool unp() { return (state.onoff_state2 & 0x0200) != 0; }
bool hdm() { return (state.onoff_state2 & 0x0400) != 0; }
|
418839ec6
김태훈
프로토콜에서 추가된 부분 반영
|
55
|
bool sgnv() { return (state.onoff_state2 & 0x0800) != 0; }
|
39fec1254
김태훈
요청 사항 반영
|
56
57
58
59
60
61
62
63
64
|
bool inv() { return (state.onoff_state2 & 0x1000) !=0; }
// 3: H, 2: Error, 1: C, 0: L
int waterLevel() {
return ((state.water_level & 0x08) >> 2)
| ((state.water_level & 0x10) >> 4);
}
int heater() { return (state.onoff_relay_load2 & 0x0F); }
|
8c2952457
김태훈
응용 프로그램 추가
|
65
|
|
5f017a9d7
김태훈
요청 사항 반영
|
66
67
68
69
|
bool burnerState(int num) {
switch (num)
{
case 1:
|
89f2ce87a
김태훈
버그 수정
|
70
|
return (state.burner1_state & 0x08) != 0;
|
5f017a9d7
김태훈
요청 사항 반영
|
71
|
case 2:
|
89f2ce87a
김태훈
버그 수정
|
72
|
return (state.burner2_state & 0x08) != 0;
|
5f017a9d7
김태훈
요청 사항 반영
|
73
|
case 3:
|
89f2ce87a
김태훈
버그 수정
|
74
|
return (state.burner3_state & 0x08) != 0;
|
5f017a9d7
김태훈
요청 사항 반영
|
75
76
77
78
|
default:
return false;
}
}
|
8c2952457
김태훈
응용 프로그램 추가
|
79
80
|
signals:
void changed();
|
bae371454
김태훈
485 통신 오류 검출 루틴
|
81
82
|
void timeout();
void recovered();
|
8c2952457
김태훈
응용 프로그램 추가
|
83
84
85
86
87
88
89
90
91
|
public slots:
void turnOn(int target);
void turnOff(int target);
void set(int target, int value);
void fillControl(oven_control_t &container);
void fillData(oven_state_t &container);
private:
|
538041ab9
김태훈
소스 코드 구조 개선
|
92
|
explicit UdpHandler(QObject *parent = 0);
|
8c2952457
김태훈
응용 프로그램 추가
|
93
94
95
96
97
|
void processDatagram(QByteArray &datagram);
void processControl(oven_control_t *control);
void processState(oven_state_t *state);
QUdpSocket *sock;
|
bae371454
김태훈
485 통신 오류 검출 루틴
|
98
99
|
QTimer emitTimeoutTimer;
bool emitted;
|
0964351ba
고영탁
스팀 과열 에러 발생 시 SSV...
|
100
|
bool m_steamhighctr_enabled;
|
8c2952457
김태훈
응용 프로그램 추가
|
101
102
103
104
|
private slots:
void readPendingDatagrams();
void sendCommand(int cmd, int target, int value);
|
8c2952457
김태훈
응용 프로그램 추가
|
105
|
|
bae371454
김태훈
485 통신 오류 검출 루틴
|
106
|
void emitTimeout();
|
8c2952457
김태훈
응용 프로그램 추가
|
107
108
109
|
};
#endif // UDPHANDLER_H
|