forked from eltima-software/RS232-Data-Logger
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommPort.h
More file actions
127 lines (101 loc) · 2.8 KB
/
CommPort.h
File metadata and controls
127 lines (101 loc) · 2.8 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
#pragma once
// CCommPort command target
enum
{
EvenParity = 2,
MarkParity = 3,
NoParity = 0,
OddParity = 1,
SpaceParity = 4
};
enum
{
OneStopBit = 0,
OneFiveStopBits = 1,
TwoStopBits = 2
};
enum
{
NoFlowControl,
XonXoffFlowControl,
Hardware
};
class CCommPort : public CObject
{
protected:
HANDLE m_hComm;
HANDLE m_hThread;
HANDLE m_hEventTerminate;
volatile LONG lReqTerminate; //
static DWORD WINAPI EventHandler ( LPVOID lpParam );
public:
enum
{
COMM_SET_EVNT_MASK_ERROR = 1,
COMM_WAIT_FOR_EVENT_ERROR = 2
};
public:
// êîíñòðóêòîðû - äåñòðóêòîðû
CCommPort();
CCommPort( const CString& sPortname );
virtual ~CCommPort();
// èíèöèàëèçàöèÿ ïîðòà è äð.
BOOL Open ( CString sPortName, DWORD dwBaudRate = CBR_19200, BYTE bDataBits = 8, BYTE stopbit = OneStopBit,
BYTE parity = NoParity, BYTE fc = NoFlowControl );
BOOL Open ( CString sPortName, CString sConfig );
static BOOL TestOpen( CString );
void Close();
BOOL IsOpen() const { return m_hComm != INVALID_HANDLE_VALUE; };
operator HANDLE() const { return m_hComm; };
// ïîëó÷èòü íàáîð ïîðòîâ
static DWORD GetAvailablePorts ( CStringList* portList );
// ÷òåíèå çàïèñü
// àñèíõðîííàÿ
virtual DWORD Read ( LPVOID lpBuf, DWORD dwCount );
virtual DWORD Write(LPCVOID lpBuf, DWORD dwCount );
// Êîíôèãóðàöèÿ ïîðòà
BOOL GetConfig( COMMCONFIG& config);
BOOL SetConfig( COMMCONFIG& config);
BOOL SetState ( LPDCB dcb);
BOOL GetState ( LPDCB dcb);
// ÒàéìÀóòû
BOOL SetTimeouts( LPCOMMTIMEOUTS lpCommTimeouts );
BOOL GetTimeouts( LPCOMMTIMEOUTS lpCommTimeouts );
// ðàáîòà ñ áóôôåðàìè
BOOL Purge ( DWORD dwFlags );
BOOL ClearWriteQueue ();
BOOL ClearReadQueue ();
BOOL AbortAllRead ();
BOOL AbortAllWrite ();
BOOL Flush ();
// óïðàâëåíèå ïåðåäà÷åé
BOOL TransmitChar( char cChar );
BOOL SetBreak();
BOOL ClearBreak();
BOOL EscapeFunction( DWORD dwFunc );
BOOL ClearError( LPDWORD lpErrors, LPCOMSTAT lpStat);
BOOL GetModemStatus( LPDWORD lpModemStat );
BOOL GetProperties( LPCOMMPROP lpCommProp );
BOOL SetBaudrate ( DWORD dwBaudRate );
DWORD GetBaudrate ( );
BOOL SetDataBits ( BYTE bDataBits );
BYTE GetDataBits ( );
BOOL SetParity ( BYTE Parity );
BOOL GetParity ( BYTE& Parity );
BOOL SetStopBits ( BYTE StopBits );
BOOL GetStopBits ( BYTE &StopBits );
BOOL SetFlowControl( BYTE fc );
// mask events
BOOL SetMask ( DWORD dwMask );
BOOL GetMask ( DWORD& dwMask );
virtual void OnBreak();
virtual void OnCTS ( BOOL fCTS );
virtual void OnDSR ( BOOL fDSR );
virtual void OnERR ( DWORD dwError );
virtual void OnRing( BOOL fRing );
virtual void OnRlsd( BOOL fLSD );
virtual void OnRxChar( DWORD dwCount );
virtual void OnRxFlag();
virtual void OnTxEmpty();
virtual void OnEventError ( DWORD dwErrCode );
};