1 | // Connection.cpp: implementation of the CConnection class.
|
---|
2 | //
|
---|
3 | //////////////////////////////////////////////////////////////////////
|
---|
4 |
|
---|
5 | #include "stdafx.h"
|
---|
6 | #include "Connection.h"
|
---|
7 |
|
---|
8 | #ifdef _DEBUG
|
---|
9 | #undef THIS_FILE
|
---|
10 | static char THIS_FILE[]=__FILE__;
|
---|
11 | #define new DEBUG_NEW
|
---|
12 | #endif
|
---|
13 |
|
---|
14 | //////////////////////////////////////////////////////////////////////
|
---|
15 | // Construction/Destruction
|
---|
16 | //////////////////////////////////////////////////////////////////////
|
---|
17 |
|
---|
18 | IMPLEMENT_DYNAMIC( CConnection , CObject)
|
---|
19 |
|
---|
20 |
|
---|
21 | CConnection::CConnection()
|
---|
22 | {
|
---|
23 | m_pModbus=NULL;
|
---|
24 | }
|
---|
25 |
|
---|
26 | CConnection::~CConnection()
|
---|
27 | {
|
---|
28 |
|
---|
29 |
|
---|
30 | }
|
---|
31 |
|
---|
32 |
|
---|
33 | CConnection::CConnection(WORD wType , LPCTSTR sKey)
|
---|
34 | {
|
---|
35 | m_sKey = sKey;
|
---|
36 | m_wType = wType;
|
---|
37 |
|
---|
38 | switch (wType) {
|
---|
39 |
|
---|
40 | case AUTO:
|
---|
41 | m_pModbus= new CAutoModbus();
|
---|
42 | break;
|
---|
43 | case REMOTE:
|
---|
44 | m_pModbus= new CRemoteModbus();
|
---|
45 | break;
|
---|
46 | default:
|
---|
47 | ASSERT(FALSE); //Type Error
|
---|
48 | }
|
---|
49 |
|
---|
50 | }
|
---|
51 |
|
---|
52 | CConnection::CConnection(const CConnection& rConnection)
|
---|
53 | {
|
---|
54 | m_pModbus = rConnection.m_pModbus;
|
---|
55 | m_sKey = rConnection.m_sKey;
|
---|
56 | m_wType = rConnection.m_wType;
|
---|
57 |
|
---|
58 | }
|
---|
59 |
|
---|
60 |
|
---|
61 | CAutoModbus* CConnection::AutoPtr()
|
---|
62 | {
|
---|
63 | if (AUTO==m_wType) {
|
---|
64 | return (CAutoModbus*)m_pModbus;
|
---|
65 | }
|
---|
66 | else {
|
---|
67 | ASSERT(FALSE);//Type Error
|
---|
68 | return NULL;
|
---|
69 | }
|
---|
70 | }
|
---|
71 |
|
---|
72 | CRemoteModbus* CConnection::RemotePtr()
|
---|
73 | {
|
---|
74 | if (REMOTE==m_wType) {
|
---|
75 | return (CRemoteModbus*)m_pModbus;
|
---|
76 | }
|
---|
77 | else {
|
---|
78 | ASSERT(FALSE);//Type Error
|
---|
79 | return NULL;
|
---|
80 | }
|
---|
81 |
|
---|
82 | }
|
---|
83 |
|
---|
84 | void CConnection::Delete()
|
---|
85 | {
|
---|
86 |
|
---|
87 | if (m_pModbus!=NULL) {
|
---|
88 | switch (m_wType) {
|
---|
89 |
|
---|
90 | case AUTO:
|
---|
91 | delete AutoPtr();
|
---|
92 | break;
|
---|
93 | case REMOTE:
|
---|
94 | delete RemotePtr();
|
---|
95 | break;
|
---|
96 | default:
|
---|
97 | ASSERT(FALSE); //Type Error
|
---|
98 | }
|
---|
99 | }
|
---|
100 |
|
---|
101 | delete this;
|
---|
102 | }
|
---|
103 |
|
---|
104 |
|
---|
105 | CString CConnection::DcomServer()
|
---|
106 | {
|
---|
107 | return m_sDcomServer;
|
---|
108 | }
|
---|
109 |
|
---|
110 | void CConnection::DcomServer(LPCTSTR szDcomServer)
|
---|
111 | {
|
---|
112 | m_sDcomServer=szDcomServer;
|
---|
113 | }
|
---|
114 |
|
---|
115 | CString CConnection::Key() {
|
---|
116 | return m_sKey;
|
---|
117 | }
|
---|
118 |
|
---|
119 | WORD CConnection::Type() {
|
---|
120 |
|
---|
121 | return m_wType;
|
---|
122 |
|
---|
123 | }
|
---|
124 |
|
---|
125 |
|
---|
126 | void CConnection::Serialize( CArchive& archive )
|
---|
127 | {
|
---|
128 | // call base class function first
|
---|
129 | // base class is CObject in this case
|
---|
130 | CObject::Serialize( archive );
|
---|
131 |
|
---|
132 |
|
---|
133 | // now do the stuff for our specific class
|
---|
134 | if( archive.IsStoring() ){
|
---|
135 | archive <<m_sDcomServer;
|
---|
136 | }
|
---|
137 | else {
|
---|
138 | archive >>m_sDcomServer;
|
---|
139 | }
|
---|
140 |
|
---|
141 | switch(Type()) {
|
---|
142 | case AUTO:
|
---|
143 | AutoPtr()->Serialize(archive);
|
---|
144 | break;
|
---|
145 | case REMOTE:
|
---|
146 | RemotePtr()->Serialize(archive);
|
---|
147 | break;
|
---|
148 | }
|
---|
149 |
|
---|
150 | } |
---|