QuakeGod
2024-12-24 61deef5cdf96cbfdd6ad45be49e80d597c00ca65
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
 
#pragma once
 
#include "../MyLib/StaticEx.h"
// CMTerm1CommDevView 窗体视图
class CMTerm1CommDevView : public CFormView
{
    DECLARE_DYNCREATE(CMTerm1CommDevView)
// 构造
public:
protected:
    CMTerm1CommDevView();           // 动态创建所使用的受保护的构造函数
    virtual ~CMTerm1CommDevView();
 
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_MTerm1CommDevView2    };
#endif
/*
#ifdef _DEBUG
    virtual void AssertValid() const;
    CMTerm1Doc* CMTerm1CommDevView::GetDocument() const
    {
        return reinterpret_cast<CMTerm1Doc*>(m_pDocument);
    }
 
#ifndef _WIN32_WCE
    virtual void Dump(CDumpContext& dc) const;
#endif
#endif
*/
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    DECLARE_MESSAGE_MAP()
public:
    CMFCStatusBar * m_pStatusBar;
    enum StatusBarIndicators {
        idxMachineType = 0,
        idxProgPos = 1,
        idxOnline = 2,
        idxRunning = 3,
        idxMonitor = 4,
        idxAddress = 5,
        idxInfoDisp = 6,
    };
    COLORREF OnlineColor = RGB(0, 255, 255);
    COLORREF ProgColor = RGB(0, 255, 0);
    COLORREF RunningColor = RGB(0, 255, 0);
    COLORREF MonitorColor = RGB(0, 255, 255);
    COLORREF AddressColor = RGB(0, 255, 255);
 
    virtual void OnInitialUpdate();
 
//    CStatusBar m_wndStatusBar;
//    CToolBar m_wndToolBar;
//    CImageList m_ColorTreeImages;
//    CTreeCtrl m_treectrl1;
 
    typedef struct tagWLStat
    {
        union {
            uint32_t Status;                            //状态
            struct {
                uint32_t bMasterSent : 1;
                uint32_t bMasterRecved : 1;
            };
        };
        uint16_t curStat;                        //当前状态
        uint16_t runStep;                        //工作步骤
        uint16_t RunStat;                        //运行状态
        uint16_t ErrStat;                        //错误状态
        uint32_t RF_Freq;                        //运行频率
        uint16_t nTimeOnAir;
        uint16_t DeviceAddr;
 
        uint8_t NetWorkAddr;
 
        uint8_t Tx_Power;            // dBm        5 - 22 dBm
        uint8_t LoraBandWidth;        //        [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved ] 
        uint8_t LoRaFactor;                //        [SF5 .. SF 12]
        uint8_t LoRaCodingRate;        //        [1 : 4/5,  2: 4/6,  3:  4/7,    4:  4/8 ]
 
        uint8_t LoRaPreambleLen;            // 2 - 12
 
        uint8_t bEnableAddr;
        uint8_t bEnableEncrypt;
        uint8_t bEnableRelay;
        uint8_t bAutoReSend;        //自动重发
        uint8_t nCurClient;
        uint8_t nSeq;
 
        uint32_t sentCount;                    //发送计数
        uint32_t recvCount;                    //接收计数
        uint32_t lastSendtime;            //上次发送时间
        uint32_t lastSenttime;            //上次发送出时间
        uint32_t lastRecvtime;            //上次启动接收时间
        uint32_t lastRecvdtime;            //上次接收时间
        uint32_t lastActTime;            //上次动作时间
        uint32_t lastAckTime;            //上次应答时间
        uint32_t lastErrTime;                //上次错误时间
        uint32_t latancy;                        //延迟
        uint32_t cycleTime;                    //循环时间
        uint16_t LostPackets;                //丢包计数
        uint16_t CtnLstPkts;                //连续丢包计数
        uint16_t MaxCtnLstPkts;            //最大连续丢包计数
        uint16_t TXErr;                    //发送错误计数
        uint16_t RXErr;                    //接收错误计数
        uint16_t CRCErr;                 //CRC错误计数
        uint16_t PktErr;                //包错误    ;
        uint16_t ChnErr;                //频道错误;
        uint16_t nErrChn;                //错误的频道号;
        uint16_t CADDoneCount;            //CAD 完成次数
        uint16_t CADOkCount;                //CAD 是次数
        uint16_t CADNgCount;                //CAD 否次数
        uint16_t CADTimeOut;                //CAD 超时次数        
        uint16_t StepErr1;                    //步骤错误1
        uint16_t StepErr2;                    //步骤错误2
        uint16_t Err1Count;                    //微闪报警次数
        uint16_t Err2Count;                    //大闪报警次数
        uint16_t Err3Count;                    //严重丢失信号次数
        int8_t RSSI;                                //信号强度
        int8_t SNR;                                //信噪比
        int8_t tRSSI;                            //对方信号强度
        int8_t tSNR;                            //对方信噪比
        uint32_t targetSentCount;            //对方发送数量
        uint32_t targetRecvdCount;        //对方接受数量
 
    }stWLRunStat, * pstWLRunStat;
 
 
    typedef struct tagWLStatV12
    {
        union {
            uint32_t Status;                            //状态
            struct {
                uint32_t bMasterSent : 1;
                uint32_t bMasterRecved : 1;
            };
        }; 
        uint16_t curStat;                        //当前状态
        uint16_t runStep;                        //工作步骤
        uint16_t RunStat;                        //运行状态
        uint16_t ErrStat;                        //错误状态
        uint32_t RF_Freq;                        //运行频率
        uint32_t nTimeOnAir;
        uint32_t sentCount;                    //发送计数
        uint32_t recvCount;                    //接收计数
        uint32_t lastSendtime;            //上次发送时间
        uint32_t lastSenttime;            //上次发送出时间
        uint32_t lastRecvtime;            //上次启动接收时间
        uint32_t lastRecvdtime;            //上次接收时间
        uint32_t lastActTime;                //上次动作时间
        uint32_t lastAckTime;                //上次应答时间
        uint32_t lastErrTime;                //上次错误时间
        uint32_t latancy;                        //延迟
        uint32_t cycleTime;                    //循环时间
        uint16_t LostPackets;                //丢包计数
        uint16_t CtnLstPkts;                //连续丢包计数
        uint16_t MaxCtnLstPkts;            //最大连续丢包计数
        uint16_t TXErr;                            //发送错误计数
        uint16_t RXErr;                            //接收错误计数
        uint16_t CRCErr;                         //CRC错误计数
        uint16_t ChnErr;                        //频道错误
        uint16_t PktErr;                        //包错误
        uint16_t CADDoneCount;            //CAD 完成次数
        uint16_t StepErr1;                    //步骤错误1
        uint16_t StepErr2;                    //步骤错误2
        uint16_t Err1Count;                    //微闪报警次数
        uint16_t Err2Count;                    //大闪报警次数
        uint16_t Err3Count;                    //严重丢失信号次数
        int8_t RSSI;                                //信号强度
        int8_t SNR;                                //信噪比
        int8_t tRSSI;                            //对方信号强度
        int8_t tSNR;                            //对方信噪比
        uint32_t targetSentCount;            //对方发送数量
        uint32_t targetRecvdCount;        //对方接受数量
 
    }stWLRunStatV12, *pstWLRunStatV12;
 
    typedef struct tagWLStatV1
    {
        union {
            uint32_t Status;                            //状态
            struct {
                uint32_t bMasterSent : 1;
                uint32_t bMasterRecved : 1;
            };
        };
        uint16_t curStat;                        //当前状态
        uint16_t runStep;                        //工作步骤
        uint16_t RunStat;                        //运行状态
        uint16_t ErrStat;                        //错误状态
//        uint32_t RF_Freq;                        //运行频率
//        uint32_t nTimeOnAir;
        uint32_t sentCount;                    //发送计数
        uint32_t recvCount;                    //接收计数
        uint32_t lastSendtime;            //上次发送时间
        uint32_t lastSenttime;            //上次发送出时间
        uint32_t lastRecvtime;            //上次启动接收时间
        uint32_t lastRecvdtime;            //上次接收时间
        uint32_t lastActTime;                //上次动作时间
        uint32_t lastAckTime;                //上次应答时间
        uint32_t lastErrTime;                //上次错误时间
        uint32_t latancy;                        //延迟
        uint32_t cycleTime;                    //循环时间
        uint16_t LostPackets;                //丢包计数
        uint16_t CtnLstPkts;                //连续丢包计数
        uint16_t MaxCtnLstPkts;            //最大连续丢包计数
        uint16_t TXErr;                            //发送错误计数
        uint16_t RXErr;                            //接收错误计数
        uint16_t CRCErr;                         //CRC错误计数
//        uint16_t ChnErr;                        //频道错误
//        uint16_t PktErr;                        //包错误
        uint16_t CADDoneCount;            //CAD 完成次数
        uint16_t StepErr1;                    //步骤错误1
        uint16_t StepErr2;                    //步骤错误2
        uint16_t Err1Count;                    //微闪报警次数
        uint16_t Err2Count;                    //大闪报警次数
        uint16_t Err3Count;                    //严重丢失信号次数
        int8_t RSSI;                                //信号强度
        int8_t SNR;                                //信噪比
        int8_t tRSSI;                            //对方信号强度
        int8_t tSNR;                            //对方信噪比
        uint32_t targetSentCount;            //对方发送数量
        uint32_t targetRecvdCount;        //对方接受数量
 
    }stWLRunStatV1, * pstWLRunStatV1;
 
    CString KWRunStatToString(pstWLRunStat pWLRunStat1);
    CString KWRunStatToString(pstWLRunStatV1 pWLRunStat1);
    CString KWRunStatToString(pstWLRunStatV12 pWLRunStat1);
 
    afx_msg void OnClose();
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD_PTR dwData);
    void FindComPort();
 
    int BInited;
    int m_bResourceOpened;
    int m_bPause;
 
    CString sComSelStr;
    CString sBaudSelStr;
    DWORD dComNum;
    volatile int MyThreadProc1ToRun = 0;
    volatile int MyThreadProc1Running = 0;
 
 
    CRect MainClientRect;
    CRect LeftRect;
    CRect RightRect;
 
    CRect ItemRect;
    CRect OrgButtonRect;
    CRect ButtonRect;
    CRect PicRect;
    CRect PicRectUp;
    CRect PicRectDown;
 
    CRect LogRect;
 
    int calLayerOuts();
    int DisplayParams();
    int GetParams();
    int DelayInit();
 
    int LoadResourceList();
    int SaveResourceList();
 
 
    int LoadModel();
    int SaveModel();
 
    int OpenResource(CStringA ResourceStr);
    int CloseResource();
 
    int SaveData(CString sFilePathName);
    int LoadData(CString sFilePathName);
 
    int MonitorPLC();
 
    int UpdateDataDisplay();
 
public:
    static UINT MyJumper1(LPVOID pParam);
    DWORD WINAPI MyThreadProc1(LPVOID pParam);
 
    bool m_bOnline = false;
    bool m_bRunning = false;
    bool m_bMonitoring = false;
 
 
    // Combo Com port select
    CComboBox m_combo_comport;
    // Combo Com Baud select
    CComboBox m_combo_com_baud;
    afx_msg void OnBnClickedButtonStart();
    afx_msg void OnBnClickedButtonStop();
    afx_msg void OnBnClickedButtonClrscr();
    afx_msg void OnBnClickedButtonSend();
    CEdit m_edit_display;
    // Combo Input
    CComboBox m_combo_input;
 
    afx_msg void OnCbnEditchangeComboInput();
    afx_msg void OnCbnSelchangeComboRes();
    afx_msg void OnBnClickedButtonDo();
    afx_msg void OnCbnSelchangeComboCmdType();
    afx_msg void OnCbnSelchangeComboDcount();
    afx_msg void OnBnClickedButtonStartBulkTest();
    afx_msg void OnBnClickedButtonStopBulkTest();
    afx_msg void OnMenuDownload();
    afx_msg void OnMenuUpload();
    afx_msg void OnMenuOnline();
    afx_msg void OnMenuOffline();
    afx_msg void OnMenuMonitor();
    afx_msg void OnMenuRun();
    afx_msg void OnUpdateMenuRun(CCmdUI *pCmdUI);
    afx_msg void OnUpdateMenuMonitor(CCmdUI *pCmdUI);
    afx_msg void OnUpdateMenuOffline(CCmdUI *pCmdUI);
    afx_msg void OnUpdateMenuOnline(CCmdUI *pCmdUI);
    CEdit m_edit_mon1;
    CEdit m_edit_mon2;
    afx_msg void OnMenuCommset();
    afx_msg void OnMenuSysregSet();
    afx_msg void OnMenuStatusShow();
    afx_msg void OnMenuInfoDisplay();
    afx_msg void OnMenuCoilMon();
    afx_msg void OnMenuDataMon();
    afx_msg void OnMenuCommTool();
    afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
    afx_msg void OnBnClickedButtonClearStat();
    int Clear_COM_Stats();
    afx_msg void OnBnClickedButtonRead();
    afx_msg void OnBnClickedButtonConnect();
    afx_msg void OnMenuEventLog();
    afx_msg void OnMenuCommTest();
    afx_msg void OnMenuForceIo();
    afx_msg void OnMenuDatetime();
    CStaticEx m_static_connect;
    afx_msg void OnBnClickedButtonDisconnect();
    afx_msg void OnBnClickedButton11();
    afx_msg void OnBnClickedButton12();
    afx_msg void OnBnClickedButton13();
 
    afx_msg void OnBnClickedButton31();
    afx_msg void OnBnClickedButton2();
    afx_msg void OnBnClickedButton3();
    int UpdateLEDDisplay();
    int UpdateStatusBar(int nIndex);
    afx_msg void OnBnClickedButton5();
    afx_msg void OnBnClickedButton9();
    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
};