-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathwcomm.h
More file actions
174 lines (148 loc) · 3.63 KB
/
Copy pathwcomm.h
File metadata and controls
174 lines (148 loc) · 3.63 KB
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
#ifndef _WCOMM_H
#define _WCOMM_H
#include <windows.h>
/// Enhanced DCB stucture with encapsulated API functions.
struct WDCB : public DCB
{
/// Initialize data members using device state.
BOOL Get(HANDLE hComm)
{
return GetCommState(hComm, this);
}
/// Initialize device using data members.
BOOL Set(HANDLE hComm)
{
return SetCommState(hComm, this);
}
/// Convert pointer to DCB.
WDCB(DCB &dcb)
{
*(DCB*)this = dcb;
}
/// Fills data members using MODE command line style parameter string.
BOOL Build(LPCTSTR lpDef)
{
ZeroMemory(this, sizeof *this);
DCBlength = sizeof(DCB); // Init length member
return BuildCommDCB(lpDef, this);
}
/// Empty stucture constructor.
WDCB()
{
ZeroMemory(this, sizeof *this);
DCBlength = sizeof(DCB); // Init length member
}
/// Construct or assign from MODE command line style parameter string.
WDCB(LPCTSTR lpDef)
{
Build(lpDef);
}
/// Construct or assign from handle to open device.
WDCB(HANDLE hComm)
{
Get(hComm);
}
};
/// Enhanced COMMPROP stucture with encapsulated API functions.
struct WCommProp : public COMMPROP
{
/// Initialize data members using device properties.
BOOL Get(HANDLE hComm)
{
ZeroMemory(this, sizeof *this);
return GetCommProperties(hComm, this);
}
/// Converts pointer to COMMPROP.
WCommProp(COMMPROP &cp)
{
*(COMMPROP*)this = cp;
}
/// Empty stucture constructor.
WCommProp()
{
ZeroMemory(this, sizeof *this);
}
/// Construct or assign from handle to open device.
WCommProp(HANDLE hComm)
{
Get(hComm);
}
};
/// Enhanced COMMTIMEOUTS stucture with encapsulated API functions.
struct WCommTimeouts : public COMMTIMEOUTS
{
/// Initialize data members using device state.
BOOL Get(HANDLE hComm)
{
return GetCommTimeouts(hComm, this);
}
/// Initialize device using data members.
BOOL Set(HANDLE hComm)
{
return SetCommTimeouts(hComm, this);
}
/// Constructs from COMMCONFIG.
WCommTimeouts(COMMTIMEOUTS &ct)
{
*(COMMTIMEOUTS*)this = ct;
}
/// Constructs or assigns from file handle.
WCommTimeouts(HANDLE hComm)
{
Get(hComm);
}
/// Empty constructor.
WCommTimeouts()
{
ZeroMemory(this, sizeof *this);
}
};
/// Enhanced COMMCONFIG stucture with encapsulated API functions.
struct WCommConfig : public COMMCONFIG
{
/// Initialize data members using device state.
BOOL Get(HANDLE hComm)
{
ZeroMemory(this, sizeof *this);
dwSize = sizeof(COMMCONFIG);
return GetCommConfig(hComm, this, &dwSize);
}
/// Initialize device using data members.
BOOL Set(HANDLE hComm)
{
return SetCommConfig(hComm, this, sizeof(COMMCONFIG));
}
/// Initialize data members using default settings of device name.
BOOL Get(LPCTSTR lpszName)
{
ZeroMemory(this, sizeof *this);
dwSize = sizeof(COMMCONFIG);
return GetDefaultCommConfig(lpszName, this, &dwSize);
}
/// Initialize device defaults (by name) using data members.
BOOL Set(LPCTSTR lpszName)
{
return SetDefaultCommConfig(lpszName, this, sizeof(COMMCONFIG));
}
/// Construct from COMMCONFIG
WCommConfig(COMMCONFIG &cc)
{
*(COMMCONFIG*)this = cc;
}
/// Empty stucture constructor
WCommConfig()
{
ZeroMemory(this, sizeof *this);
}
/// Construct or assign from handle to open device.
WCommConfig(HANDLE hComm)
{
Get(hComm);
}
/// Construct or assign from name of device.
WCommConfig(LPCTSTR lpszName)
{
Get(lpszName);
}
};
#endif