QuakeGod
2023-09-05 df03213660361b1c771f0a3f21b6ddaeaef7763a
提交 | 用户 | age
4b03ae 1 
418cb3 2 // MultiTerminal2Doc.h: CMTerm1Doc 类的接口
4b03ae 3 //
Q 4
5
6 #pragma once
418cb3 7 //#include "HvSerialPort.h"
Q 8 #include "AnsiParser.h"
9 #include "DataParser1.h"
10 #include "KDefine.h"
11 //#include "KLink.h"
12 #include "KMachine.h"
4b03ae 13
418cb3 14 #include "../KLink1/KLink.h"
Q 15
16 #pragma comment(lib,"KLink1.lib")
4b03ae 17
0ed438 18 class CMTerm1Doc : public CDocument
4b03ae 19 {
Q 20 protected: // 仅从序列化创建
0ed438 21     CMTerm1Doc() noexcept;
Q 22     DECLARE_DYNCREATE(CMTerm1Doc)
4b03ae 23
Q 24 // 特性
25 public:
418cb3 26     //通讯参数。
Q 27     CAnsiParser MyAnsiParser1;
28     CDataParser1 MyDataParser1;
29 //    KLink MyKLink1;
30     // CSerialCom MySerialCom1;
31 //    HvSerialPort myHvSerialPort1;
32     KMachine myKMachine1;
33     KLink1 MyKLink1;
34
35     union {
36         unsigned char KBDD[2048];
37         unsigned short KBDT[1024];
38         unsigned char KBDB[2048];
39     };
40
41     union {
42         unsigned char KWLD[2048];
43         unsigned short KWLT[1024];
44         unsigned char KWLB[2048];
45     };
46
47
48     bool m_bCommParamSet = false;
49     int nComPort;
50     int nBaud;
51     CStringA ComSettings;
52     bool m_bOnline = false;
53     bool m_bSimulate = false;
54     bool m_bPlcRunning = false;
55
56     double StartTime;
57     //系统配置文件
58
59     //数据存储区
60     int m_nNum=15;
61     CString m_Str;
62     CString m_sMachineType = _T("KL20N16D");;
63
64     //程序存储
65     CString ProgTxt;
66
67
68     struct stTypeNameDef
69     {
70         int nType;
71         CStringA TypeTxt;
72     };
73     static stTypeNameDef CoilTypeNameDef[];
74     static int nCoilTypeDefCount;
75
76     static stTypeNameDef DataTypeNameDef[];
77     static int nDataTypeDefCount;
78
79     stKMem KMem;
80
81     enum enParamTypes
82     {
83         KLParamCoil,
84         KLParamWord,
85         KLParamNum,
86
87     };
88     struct stOpDef
89     {
90         int nOpType1;
91         CStringA OpTxt;
92         int nParamCount;
93         int nParamType;
94         CStringA ShowTxt;
95     };
96     static stOpDef OpDef[];
97
98     static int nOpDefCount;
99     struct stParam
100     {
101         CStringA sParamStr;
102         int nParamType;
103         int nParamAddr;
104     };
105
106     struct stProg
107     {
108         int nOpType1;
109         int nBinStep;
110         int nParamCount;
111         stParam Params[3];
112         int PairTo;
113     };
114
115
116     struct stCoilAnno
117     {
118         unsigned short nType;
119         unsigned short nAddr;
120         CString sCoilName;
121         CString sAnno;
122     };
123     stCoilAnno mCoilAnnos[10000]=
124     {
125     };
126
127     int nCoilAnnoCount = 0;
128
129
130
131     enum enSection {
132         SectionNone = 0,
133         SectionSysCfg = 1,
134         SectionProg = 2,
135         SectionAnno = 3,
136         SectionCoilList = 4,
137         SectionDataList = 5,
138     };
139
140     struct stSectionDef 
141     {
142         int nSectionType;
143         CStringA SectionName;
144     };
145      stSectionDef SectionDef[5]=
146     {
147         {SectionSysCfg,"SYSCFG"},
148         {SectionProg,"PROG"},
149         {SectionAnno,"COMMENT"},
150         {SectionCoilList,"MONCOILLIST"},
151         {SectionDataList,"MONDATALIST"},
152     };
153      int nSectionDefCount = sizeof(SectionDef) / sizeof(stSectionDef);
154      int TxtToSection(CStringA txt);
155      int GetSectionTxt(int nSectionType, CStringA & txt);
156      int ScanSections();
157
158      struct stSection{
159          int nSectionType;
160          int nSectionLineNo;
161          int nLines;
162      };
163      stSection Sections[100] = { 0 };
164      int nSectionCount;
165     
166      int GetSectionPos(int nSectionType, int * nSectionLine, int * nSectionLines);
0ed438 167
4b03ae 168 // 操作
Q 169 public:
418cb3 170     int TxtToOp(CStringA optxt, int* ParamCount, int* ParamType);
Q 171     int OpToTxt(int nOp, CStringA & OpTxt);
172     int OpToShowTxt(int nOp, CStringA & OpShowTxt);
173
174     int TxtToCoilType(CStringA Typetxt, int* nCoilType, int* CoilAddr);
175     int CoilTypeToTxt(int nType, CStringA & typeTxt);
176
177     int TxtToDataType(CStringA Typetxt, int * nDataType, int* nDataAddr);
178     int DataTypeToTxt(int nType, CStringA & typeTxt);
179
180     int TransLinesToProg(const CStringArray & txtLines, int StartLine = 0, int ProgLines = -1);
181
182     int TransFileToProg(CStringA ProgTxt);
183     int TransToTxt(CStringA &ProgTxt);
184
185     int TransTxtToProg(CStringA ProgTxtA);
186     int ReadAnnoFromTxt(CStringA AnnoTxtA);
187
188     int TransProgToBin();
189     int TransBinToProg();
190
191
192     int LoadFromFile(CString sFilePathName);
193     int SaveToFile(CString sFilePathName);
194
195     stProg Progs[2048] = { 0 };
196     int ProgTrace[2048] = { 0 };
197     int m_nProgSteps = 0;
198     stBinProg1 BinProgs[2000];
199     int nBinProgSteps = 0;
200
201
202     int nScanCount = 0;
203     int GetAnno(unsigned short nType, unsigned short nAddr, CString & sAnno);
204     int SetAnno(CString sCoilName, CString sAnno);
205     int SetAnno(unsigned short nType, unsigned short nAddr, CString sCoilName, CString sAnno);
4b03ae 206
Q 207 // 重写
208 public:
209     virtual BOOL OnNewDocument();
210     virtual void Serialize(CArchive& ar);
211 #ifdef SHARED_HANDLERS
212     virtual void InitializeSearchContent();
213     virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
214 #endif // SHARED_HANDLERS
215
216 // 实现
217 public:
0ed438 218     virtual ~CMTerm1Doc();
4b03ae 219 #ifdef _DEBUG
Q 220     virtual void AssertValid() const;
221     virtual void Dump(CDumpContext& dc) const;
222 #endif
223
418cb3 224     enum UpdataHint {
Q 225         UpdateAll=0,
226         UpdateProg=1,
227         UpdateStat=2,
228     };
4b03ae 229 protected:
Q 230
231 // 生成的消息映射函数
232 protected:
233     DECLARE_MESSAGE_MAP()
234
235 #ifdef SHARED_HANDLERS
236     // 用于为搜索处理程序设置搜索内容的 Helper 函数
237     void SetSearchContent(const CString& value);
238 #endif // SHARED_HANDLERS
418cb3 239 public:
Q 240     int SetCommParam();
241     int Connect();
242     int DisConnect();
243     int SendPacket(void * pBuf, int Len);
244     int RecvPacket(void * pBuf, int Len);
245
246     CView * CMTerm1Doc::FindView(CRuntimeClass * pClass);
247
248     virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
249     virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
250     virtual void OnCloseDocument();
251
252     afx_msg void OnUploadFromPlc();
253     afx_msg void OnOnline();
254     afx_msg void OnUpdateOnline(CCmdUI *pCmdUI);
255     afx_msg void OnOffline();
256     afx_msg void OnUpdateOffline(CCmdUI *pCmdUI);
257     afx_msg void OnPlcRun();
258     afx_msg void OnUpdatePlcRun(CCmdUI *pCmdUI);
259     afx_msg void OnDownloadToPlc();
260     afx_msg void OnUpdateDownloadToPlc(CCmdUI *pCmdUI);
261     afx_msg void OnComunicationSet();
262     afx_msg void OnPlcSysregSet();
263
264     afx_msg void OnMenuViewLds();
265     afx_msg void OnMenuViewBld();
266     afx_msg void OnMenuViewBnl();
267     afx_msg void OnMenuShowConsole();
268
269     afx_msg void OnMenuCommTest();
270
271     int GetCoilValue(int nCoilType, int nCoilAddr);
272     int SetCoilValue(int nCoilType, int nCoilAddr, int nCoilValue);
273
274     int GetVarData(int nDataType, int nDataAddr);
275     int SetVarData(int nDataType, int nDataAddr, int nDataValue);
276
277
278     void OnTimer(UINT_PTR nIDEvent);
279
280     int StartPLC();
281     int StopPLC();
282
283
284     afx_msg void OnSimulate();
285     afx_msg void OnUpdateSimulate(CCmdUI *pCmdUI);
286     int DownloadToPLC();
287
288     int AddMonitorCoil(int nCoilType, int nCoilAddr, int nCount);
289     int AddMonitorData(int nDataType, int nDataAddr, int nDataCount);
290     int ClearMonitor();
291     int DoPLCMonitor(); 
292     afx_msg void OnMenuStatusShow();
293     afx_msg void OnMenuFactCfg();
294     afx_msg void OnMenuDatetimeSet();
295     afx_msg void OnMenuEventLog();
4b03ae 296 };