SDC C-Project CF Review 프로그램
LYW
2021-09-23 c08b701c90c8998b241c82638d5c488e03238214
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
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
#pragma once
 
#include <vector>
 
// path define
#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH            _T("D:\\DIT_Review\\DiagnosisConfig")  //210805
//#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH            _T("C:\\DIT_Review\\DiagnosisConfig")
#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_NAME            _T("AutoDiagnosisSetting.cfg")
#define REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH            _T("D:\\ResultData\\AutoDiagnosis")
#define REVIEW_AUTO_DIAGNOSIS_DATA_IMAGE_FILE_PATH        _T("D:\\ResultData\\AutoDiagnosis\\ResultImage")
#define REVIEW_AUTO_DIAGNOSIS_STANDARD_FILE_NAME        _T("AutoDiagnosisStandard.xls")
#define REVIEW_AUTO_DIAGNOSIS_RESULT_FILE_NAME            _T("AutoDiagnosisResult")
#define REVIEW_AUTO_DIAGNOSIS_RESULT_IMAGE_DATA_PATH    _T("D:\\ResultData\\AutoDiagnosis\\ResultImage")
#define REVIEW_AUTO_DIAGNOSIS_RESULT_SQUARENESS_PATH    _T("D:\\ResultData\\AutoDiagnosis\\ResultSquareness")
#define REVIEW_AUTO_DIAGNOSIS_RESULT_FLATNESS_PATH        _T("D:\\ResultData\\AutoDiagnosis\\ResultFlatness")
#define REVIEW_AUTO_DIAGNOSIS_RESULT_WSI_PATH            _T("D:\\ResultData\\AutoDiagnosis\\ResultWSI")
#define MAX_PANEL_COUNT    10
 
enum DiagnosisSignal {
    DiagnosisSignal_Auto = 0,
    DiagnosisSignal_Manual
};
 
enum DiagnosisMode {
    DiagnosisMode_All = 0,
    DiagnosisMode_Review,
    DiagnosisMode_Wsi,
    DiagnosisMode_Squareness,
    DiagnosisMode_Flatness,
    DiagnosisMode_Flatness_Manual,
    DiagnosisMode_Simulation
};
 
enum FlatnessMode { Mode_2x2 , Mode_3x3, Mode_3x4, Mode_4x5, Mode_10x10, ModeCount};
 
enum PanelPosition {
    PanelPosition_Base = 0,    
    PanelPosition_Sub,
    PanelPosition_Addition
};
 
interface IDiagnosisProcessor2Parent
{
    virtual void IDP2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...) = 0;
    // motor
    virtual void IDP2P_MotorGo(int nModuleIdx, double dPosX, double dPosY, BOOL bWaitReturn = FALSE) = 0;
    virtual BOOL IDP2P_GetMotionEnd(int nModuleIdx, int nTimeOut=-1) = 0;
    virtual BOOL IDP2P_IsGantryMotionEnd(int nModuleIdx) = 0;
    // Squareness
    virtual int IDP2P_GetSelectedModuleIndex() = 0;
    virtual int IDP2P_GetOrigionMotorDir() = 0;
    virtual BOOL IDP2P_FindPanelCenter(int nModuleIdx, double& dPixelX, double& dPixelY, CString strImageName) = 0;
    // Flatness
    virtual BOOL IDP2P_SetAFMTracking(int nModuleIdx, BOOL bOn) = 0;
    virtual BOOL IDP2P_GetAFMZPosition(int nModuleIdx, double& dValue) = 0;
    virtual BOOL IDP2P_AFMHomePosition(int nModuleIndex) = 0;
    // wsi
    virtual void IDP2P_SetWsiManualMeasure(int nModuleIdx, double dPosX, double dPosY) = 0;
    virtual void IDP2P_WsiMotorMotionEnd(int nModuleIdx, double dPosX, double dPosY) = 0;
 
    virtual BOOL IDP2P_DiagnosisSendCompleteSig()=0;
    virtual BOOL IDP2P_DiagnosisSendJudgeAlarm() = 0; //0412 AU�Ƣ�A����U ��AE�� A���Ƣ�
 
    // Dialog
    virtual BOOL IDP2P_SetDlgFlatness(int nIndex) = 0;
    virtual BOOL IDP2P_SetDialogTap(int nIndex) = 0;
    virtual void IDP2P_UpdateDialog(int nIndex = -1) = 0;
 
    virtual BOOL IDP2P_CheckManualMode() = 0;
};
 
struct SPositionData
{
    SPositionData() { Reset(); }
    ~SPositionData() { Reset(); }
 
    void Reset()
    {
        memset(this, 0x00, sizeof(SPositionData));
    }
 
    int        nIndex;
    int        nPosMode;
    int        nModuleIdx;
    BOOL    bProcsss;
 
    double    dPosX;    // mm
    double    dPosY;    // mm
    double    dPos2X;    // mm
    double    dPos2Y;    // mm
    double    dPos3X;    // mm
    double    dPos3Y;    // mm
    double    dPosZ;
    double    dPixelX;
    double    dPixelY;
    double    dPixel2X;
    double    dPixel2Y;
    double    dPixel3X;
    double    dPixel3Y;
    double    dPosAssemX;
    double    dPosAssemY; //taek 210105
 
 
};
typedef std::vector<SPositionData>                VectorPositionData;
typedef std::vector<SPositionData>::iterator    VectorPositionDataIt;
 
class AFX_EXT_CLASS CDiagnosisResult
{
public:
    CDiagnosisResult() { Reset(); }
    virtual ~CDiagnosisResult() { Reset(); }
 
    void Reset()
    {
        memset(this, 0x00, sizeof(CDiagnosisResult));
        if (m_pPositionData_Flatness != NULL)
            delete m_pPositionData_Flatness;
    }
 
    BOOL            PathScheduling_Flatness(SPositionData* pPositionData, int nGlassSizeX, int nGlassSizeY);
    BOOL            PathScheduling_Flatness_TestFunc(SPositionData* pPositionData, int nGlassSizeX, int nGlassSizeY);
 
    // setter
    void            SetModuleIndex(int nIndex)                { m_nModuleIndex = nIndex; }
    void            SetPanelCount_Squareness(int nCount)    { m_nPanelCount_Squareness = nCount; }
    void            SetGantryDegree(double dData)            { m_dGantryDegree = dData; }
    void            SetXScaleDegree(double dData)            { m_dXScaleDegree = dData; }
 
    void            SetPositionData_Flatness(int nIndex);
    void            SetRangeCount_Flatness(int nCount)        { m_nRangeCount_Flatness = nCount; }
    void            SetFlatnessMode(int nMode)                { m_nFlatnessMode = nMode; }
    void            SetHeight3Sigma(double dData)            { m_dHeight3Sigma = dData; }
    void            SetACC(double dData) { m_dACC = dData; }
    void            SetRTB(double dData) { m_dRTB = dData; }
    void            SetDiagnosisHeight(double dData, int idx) { m_dDiagnosisHeight[idx] = dData; }
 
    // getter
    int                        GetModuleIndex() const { return m_nModuleIndex; }
 
    int                        GetPanelCount_Squareness() const { return m_nPanelCount_Squareness; }
    SPositionData*            GetPositionData_Squareness(int nIndex);
    const SPositionData*    GetPositionData_Squareness(int nIndex) const;
    double                    GetGantryDegree() const { return m_dGantryDegree; }
    double                    GetXScaleDegree() const { return m_dXScaleDegree; }
    SPositionData*            GetPositionData_CalcResult() { return &m_PositionData_CalcResult; }
    const SPositionData*    GetPositionData_CalcResult() const { return &m_PositionData_CalcResult; } //taek 210105
 
    SPositionData*            GetPositionData_Flatness(int nIndex);
    const SPositionData*    GetPositionData_Flatness(int nIndex) const;
    int                        GetRangeCount_Flatness() const { return m_nRangeCount_Flatness;}
    int                        GetFlatnessMode() const { return m_nFlatnessMode; }
    double                    GetHeight3Sigma() const { return m_dHeight3Sigma; }
    double                    getWSI_ACC() const {return m_dACC;}
    double                    getWSI_RTB() const { return m_dRTB; }
    double                    GetDiagnosisHeight(int idx) const { return m_dDiagnosisHeight[idx];  }
 
protected:
    int                m_nModuleIndex;
 
    // Squareness
    int                m_nPanelCount_Squareness;
    SPositionData    m_pPositionData_Squareness[MAX_PANEL_COUNT];
    double            m_dGantryDegree;
    double            m_dXScaleDegree;
    SPositionData    m_PositionData_CalcResult; //taek 210105
 
    // Flatness
    int                m_nRangeCount_Flatness;
    int                m_nFlatnessMode;
    SPositionData*    m_pPositionData_Flatness;
 
    // wsi
    double            m_dHeight3Sigma;
    double            m_dACC;
    double          m_dRTB;
    double            m_dDiagnosisHeight[10];
};
typedef std::vector<CDiagnosisResult>                VectorDiagnosisResult;
typedef std::vector<CDiagnosisResult>::iterator        VectorDiagnosisResultIt;
 
class AFX_EXT_CLASS CDiagnosisInfo
{
public:
    CDiagnosisInfo() 
    {
        Reset();
    }
    virtual ~CDiagnosisInfo() { Reset(); }
 
    void Reset()
    {
        m_vecSettingResult_Squareness.clear();
        m_nCameraFrameWidth = 0;
        m_nCameraFrameHeight = 0;
        m_dCameraResolution = 0.;
        m_nPanelCount_Squareness = 0;
        m_dJudgeData_Degree = 0.;
        m_dSquarenessStandard = 0.;
 
        m_dataSettingResult_Flatness.Reset();
        m_nAFDelay = 0;
        m_dJudgeData_ZRange = 0.;
        m_nFlatnessMode = 0;
        m_nRangeCount_Flatness = 0;
        m_nGlassSizeX = 0;
        m_nGlassSizeY = 0;
        m_vecSettingResult_Wsi.clear();
        m_nPanelCount_Wsi = 0;
        m_dJudgeData_3Sigma = 0.;
        m_dWSIStandard = 0.;
 
        m_dPanelPosX = 0;
        m_dPanelPosY = 0;
        m_dPanelPosX2 = 0;
        m_dPanelPosY2 = 0;
 
 
        m_dReviewPanelPosX=0;
        m_dReviewPanelPosY = 0;
        m_dReviewPanelPosX3 = 0;
        m_dReviewPanelPosY3 = 0;
 
        m_dReviewPanelPosX2 = 0;
        m_dReviewPanelPosY2 = 0;
        m_dReviewPanelPosX4 = 0;
        m_dReviewPanelPosY4 = 0;
        /*< LYW 20210719 : #3517 ADD Start >*/
        m_nFlatnessSkipMode = 0;
        /*< LYW 20210719 : #3517 ADD End >*/
 
    }
 
 
    // init
    BOOL                    LoadInfo(CString strFilePath);
 
    // setter
    void                    SetModuleCount(int nCount) { m_nModuleCount = nCount; }
 
    int                        SetSettingResultCount_Squareness(int nCount);
    void                    SetPanelCount_Squareness(int nCount) { m_nPanelCount_Squareness = nCount; }
    void                    SetCameraResolution(double dData) { m_dCameraResolution = dData; }
    void                    SetCameraFrameSize(int nWidth, int nHeight) { m_nCameraFrameWidth = nWidth; m_nCameraFrameHeight = nHeight; }
    void                    SetJudgeData_Degree(double dData) { m_dJudgeData_Degree = dData; }
 
    void                    SetAFDelay(int nData) { m_nAFDelay = nData; }
    void                    SetJudgeData_ZRange(double dData) { m_dJudgeData_ZRange = dData; }
 
    void                    SetPanelCount_Wsi(int nCount) { m_nPanelCount_Wsi = nCount; }
    void                    SetJudgeData_3Sigma(double dData) { m_dJudgeData_3Sigma = dData; }
 
    void                    SetPanelPosX_Wsi(double dData) { m_dPanelPosX = dData; }
    void                    SetPanelPosY_Wsi(double dData) {  m_dPanelPosY = dData; }
    void                    SetPanelPosX2_Wsi(double dData) { m_dPanelPosX2 = dData; }
    void                    SetPanelPosY2_Wsi(double dData) { m_dPanelPosY2 = dData; }
    /*< LYW 20210719 : #3517 ADD Start >*/
    void                    SetFlastnessSkipMode(double dData) { m_nFlatnessSkipMode = dData; }
    void                    SetSquarenessStandard(double dData) { m_dSquarenessStandard = dData; }
    void                    SetSquarenessStandard2(double dData) { m_dSquarenessStandard2 = dData; }
    void                    SetWSIStandard(double dData) { m_dWSIStandard = dData; }
    /*< LYW 20210719 : #3517 ADD End >*/
 
 
    // getter
    int                        GetModuleCount() const                 { return m_nModuleCount; }
 
    CDiagnosisResult*        GetSettingResult_Squareness(int nModuleIdx);
    const CDiagnosisResult* GetSettingResult_Squareness(int nModuleIdx) const;
    int                        GetCameraFrameWidth() const            { return m_nCameraFrameWidth; }
    int                        GetCameraFrameHeight() const        { return m_nCameraFrameHeight; }
    double                    GetCameraResolution() const            { return m_dCameraResolution; }
    int                        GetPanelCount_Squareness() const    { return m_nPanelCount_Squareness; }
    double                    GetJudgeData_Degree() const            { return m_dJudgeData_Degree; }
 
    CDiagnosisResult*        GetSettingResult_Flatness();
    const CDiagnosisResult* GetSettingResult_Flatness() const;
    int                        GetAFDelay() const { return m_nAFDelay; }
    double                    GetJudgeData_ZRange() const { return m_dJudgeData_ZRange; }
    int                        GetFlatnessMode() const { return m_nFlatnessMode; }
    int                        GetRangeCount_Flatness() const { return m_nRangeCount_Flatness; }
    int                        GetGlassSizeX_Flatness() const { return m_nGlassSizeX; }
    int                        GetGlassSizeY_Flatness() const { return m_nGlassSizeY; }
 
    CDiagnosisResult*        GetSettingResult_Wsi(int nModuleIdx);
    const CDiagnosisResult* GetSettingResult_Wsi(int nModuleIdx) const;
    int                        GetPanelCount_Wsi() const { return m_nPanelCount_Wsi; }
    double                    GetJudgeData_3Sigma() const { return m_dJudgeData_3Sigma; }
 
    double                    GetPanelPosX_Wsi() const { return m_dPanelPosX; }
    double                    GetPanelPosY_Wsi() const { return m_dPanelPosY; }
    double                    GetPanelPosX2_Wsi() const { return m_dPanelPosX2; }
    double                    GetPanelPosY2_Wsi() const { return m_dPanelPosY2; }
    /*< LYW 20210719 : #3517 ADD Start >*/
    int                        GetFlastnessSkipMode() const { return m_nFlatnessSkipMode; }
    double                    GetSquarenessStandard() const { return m_dSquarenessStandard; }
    double                    GetSquarenessStandard2() const { return m_dSquarenessStandard2; }
    double                    GetWSIStandard() const { return m_dWSIStandard; }
    /*< LYW 20210719 : #3517 ADD End >*/
    //Review
public:
    double                    GetReviewPanelPosX() const { return m_dReviewPanelPosX; }
    double                    GetReviewPanelPosY() const { return m_dReviewPanelPosY; }
    double                    GetReviewPanelPosX3() const { return m_dReviewPanelPosX3; }
    double                    GetReviewPanelPosY3() const { return m_dReviewPanelPosY3; }
    double                    GetReviewPanelPosX5() const { return m_dReviewPanelPosX5; }
    double                    GetReviewPanelPosY5() const { return m_dReviewPanelPosY5; }
 
    double                    GetReviewPanelPosX2() const { return m_dReviewPanelPosX2; }
    double                    GetReviewPanelPosY2() const { return m_dReviewPanelPosY2; }
    double                    GetReviewPanelPosX4() const { return m_dReviewPanelPosX4; }
    double                    GetReviewPanelPosY4() const { return m_dReviewPanelPosY4; }
    double                    GetReviewPanelPosX6() const { return m_dReviewPanelPosX6; }
    double                    GetReviewPanelPosY6() const { return m_dReviewPanelPosY6; }
 
protected:
 
    // common
    int                            m_nModuleCount;
 
    // Squareness
    VectorDiagnosisResult        m_vecSettingResult_Squareness;        // add module count
    int                            m_nPanelCount_Squareness;
    int                            m_nCameraFrameWidth;
    int                            m_nCameraFrameHeight;
    double                        m_dCameraResolution;
    double                        m_dJudgeData_Degree;
    /*< LYW 20210719 : #3517 ADD Start >*/
    double                        m_dSquarenessStandard;
    double                        m_dSquarenessStandard2;
    /*< LYW 20210719 : #3517 ADD End >*/
 
    // Flatness
    CDiagnosisResult            m_dataSettingResult_Flatness;        // single data
    int                            m_nAFDelay;
    double                        m_dJudgeData_ZRange;
    int                            m_nFlatnessMode;
    int                            m_nRangeCount_Flatness;
    int                            m_nGlassSizeX;
    int                            m_nGlassSizeY;
    /*< LYW 20210719 : #3517 ADD Start >*/
    int                            m_nFlatnessSkipMode;
    /*< LYW 20210719 : #3517 ADD End >*/
 
    // wsi
    VectorDiagnosisResult        m_vecSettingResult_Wsi;        // add module count
    int                            m_nPanelCount_Wsi;
    double                        m_dJudgeData_3Sigma;
    /*< LYW 20210719 : #3517 ADD Start >*/
    double                        m_dWSIStandard;
    /*< LYW 20210719 : #3517 ADD End >*/
 
    double                        m_dPanelPosX;
    double                        m_dPanelPosY;
    double                        m_dPanelPosX2;
    double                        m_dPanelPosY2;
 
    double                        m_dReviewPanelPosX;
    double                        m_dReviewPanelPosY;
    double                        m_dReviewPanelPosX3;
    double                        m_dReviewPanelPosY3;
    double                        m_dReviewPanelPosX5;
    double                        m_dReviewPanelPosY5;
 
    double                        m_dReviewPanelPosX2;
    double                        m_dReviewPanelPosY2;
    double                        m_dReviewPanelPosX4;
    double                        m_dReviewPanelPosY4;
    double                        m_dReviewPanelPosX6;
    double                        m_dReviewPanelPosY6;
};