-
Notifications
You must be signed in to change notification settings - Fork 0
/
AmrDisplay.h
176 lines (141 loc) · 3.96 KB
/
AmrDisplay.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/*----------------------------------------------------------------------------*/
/* AmrDisplay --- AmrDisplay.h
**
** ansonn.wang@foxmail.com
**
**
*-----------------------------------------------------------------------------*/
#ifndef __AMR_DISPLAY_H
#define __AMR_DISPLAY_H
#include "AmrDlgBase.h"
#include "AmrDlgWelcome.h"
#include "AmrDlgMain.h"
#include "AmrDlgDevInfo.h"
#include "AmrDlgDate.h"
#include "AmrDlgLedCtrl.h"
#include "AmrDlgSysSetting.h"
#include "AmrDlgUartCtrl.h"
#include "ExcDlgWelcome.h"
#include "ExcDlgMain.h"
#include "ExcDlgPowerHave.h"
#include "ExcDlgPowerNo.h"
#include "ExcDlgPowerTotal.h"
#include "ExcDlgTelemetry.h"
#include <iconv.h>
#include <net/if.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <math.h>
/*---------------------------------------------------------------------------*/
/* 两种模式
*/
enum {
amr_mode,
exc_mode
};
/*---------------------------------------------------------------------------*/
/* 模拟数据格式
*/
struct power_point{
int type;
char volt[8];
char curr[8];
char degree[8];
char power[12];
char rower[12];
};
/*---------------------------------------------------------------------------*/
/* 模拟数据格式
*/
struct data_frame{
struct power_point a;
struct power_point b;
struct power_point c;
char active_power[12];
char reactive_power[12];
char power_count[12];
char rower_count[12];
char re_power_count[12];
char re_rower_count[12];
};
/*---------------------------------------------------------------------------*/
/* AmrDisplay类,
*/
class AmrDisplay {
public:
AmrDisplay(unsigned int fd);
~AmrDisplay();
void DisplayRun(void);
void DsiplaySetWelcome(void);
/* 集中控制器所有页面,这些类均继承与AmrDlgBase */
AmrDlgWelcome m_DlgWelcome;
AmrDlgMain m_AmrDlgMain;
AmrDlgDevInfo m_AmrDlgDevInfo;
AmrDlgDate m_AmrDlgDate;
AmrDlgLedCtrl m_AmrDlgLedCtrl;
AmrDlgSysSetting m_AmrDlgSysSetting;
AmrDlgUartCtrl m_AmrDlgUartCtrl;
/* 交变控制器所有页面,这些类均继承与AmrDlgBase */
ExcDlgWelcome m_ExcDlgWelcome;
ExcDlgMain m_ExcDlgMain;
ExcDlgPowerHave m_ExcDlgPowerHave;
ExcDlgPowerNo m_ExcDlgPowerNo;
ExcDlgPowerTotal m_ExcDlgPowerTotal;
ExcDlgTelemetry m_ExcDlgTelemetry;
/* 当前模式: amr_mode, exc_mode */
int m_Mode;
/* 指向基类的指针,所有UI页面均继承与该基类
** 依据改基类指针体现多态。
*/
AmrDlgBase *CurDlg;
int disp_fd;
int IdleCounter;
int ExcDataCapCount;
int AmrDataCapCount;
int AmrTick;
int SignalValue;
/* 保存系统参数相关 */
char ipaddr[50];
char m_date[50]; //2008-05-23
char m_time[50]; //01:01:01
char m_ExcCapTime[50];
/* 数据相关 */
const int voltage;
const int current;
const double PI;
double power_count;
double rower_count;
#define FILE_CHINESE_16_NAME "/home/HZK16"
#define FILE_CHINESE_12_NAME "/home/HZK12"
#define FILE_ASCII_16_NAME "/home/ASC16"
#define FILE_ASCII_12_NAME "/home/ASC12"
#define VOLT_FLUCT (5)
#define CURR_FLUCT (15)
/* 从字库文件中读取数据 */
unsigned int FileReadOffset(unsigned int hfile, unsigned long offset,
unsigned char * pbuffer, unsigned int size);
/* 字库转换为点阵 */
unsigned int ZKDisplayConvert(char *pdata ,
unsigned char font ,
unsigned char *pbuffer);
int GetLocalIp(void);
int SetLocalIp(void);
int SetDateTime(void);
int GetDateTime(void);
int GetExcDataTime(void);
void SetExcMode() { m_Mode = exc_mode; CurDlg = &m_ExcDlgWelcome; }
int GetMode() { return m_Mode; }
void SetMode(int NMode) { m_Mode = NMode; }
int GetExcData(struct data_frame *cur);
int str_align(char *buf, int length);
int PrintExcData(struct data_frame * cur);
void ClearExcPowerData() { power_count = 0.0; rower_count = 0.0; }
void ReportExcDate(void);
void ReportAmrDate(void);
unsigned int AmrData[4];
struct data_frame gExcDate;
};
typedef void *(* IconvOpen)(const char*, const char *);
typedef size_t (* Iconv)(iconv_t, char **, size_t*, char **, size_t*);
#endif