SDC C-Project CF Review 프로그램
LYW
2021-07-01 597136832196f40e9d91dee12c3b9ca94a8fc7eb
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
#pragma once
 
#include "GlassRawBase.h"
#include "GlassRawRTMS.h"
#include "StackResultCPJT.h"
#include "AnaResultFile.h"
#include "MacroResultFile.h"
#include "CustomizeReview.h"
#include "InterfaceFTP.h"
 
class CGlassRawCPJT : public CGlassRawBase, public CInterfaceFTP
{
public:
    enum emDefectMemberType
    {
        DMT_DefectJudge = 0,
        DMT_DefectSizeType
    }; 
 
public:
    CGlassRawCPJT(void);
    ~CGlassRawCPJT(void);
 
    static char* GetClassName(){return "C-PJT";};
 
    virtual BOOL SequenceGlassLoading(CgrmGlassRawData* pData);
    virtual BOOL SequenceInspectEnd(CgrmGlassRawData* pData);
    virtual BOOL SequenceReviewStart(CgrmGlassRawData* pData);
    virtual BOOL SequenceReviewEnd(CgrmGlassRawData* pData);
 
 
    virtual BOOL WriteAOIFile(CgrmGlassRawData* pData);
    virtual BOOL ReadAOIFile(CgrmGlassRawData* pData){return TRUE;};
 
    virtual BOOL SequenceFtpUpload(char* pRawFileName);
 
    virtual void NotifyUpdateOptionInfo(){/*m_StackResult.readOptionFile();*/};
 
 
protected:
    
    virtual void SendMessageFTPUploadRaw(_grmGlassData* pGlassData);
    virtual void SendMessageFTPDownloadStack(_grmGlassData* pGlassData);
    virtual void SendMessageFTPUploadImage(_grmGlassData* pGlassData, emFTPCommand sort); 
    virtual BOOL SendMessageFTPUploadIndexFile(_grmGlassData* pGlassData);
    virtual void SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData);
    virtual void GetFormatDescription(emFTPCommand sort, char* pServerPath, char* pServerFile, char* pLocalPath, char* pLocalFile, char* pRTMSFile,char* pServerFileSubPath, char* pServerFileSubName,_grmGlassData* pGlassData);
 
 
    BOOL ReadMuraFile(CgrmGlassRawData* pData);
    BOOL MakeAOIFile(CgrmGlassRawData* pData);
    
    void SetRawFilePath(CString strPath) { m_strRawFilePath = strPath; }
    CString GetRawFilePath() { return m_strRawFilePath; }
 
    void makeDataHeader(CString& strLine, _grmGlassData* pGlassData);
    void makeDataGlass(CString& strLine, _grmGlassData* pGlassData);
    void makeDataCell(CString& strLine, CgrmGlassRawData* pData, _grmCellData* pCellData);
    BOOL makeDataDefect(CString& strLine, CgrmGlassRawData* pData, _grmDefectData* pDefectData);
 
    CString GetDefectInfoToString(emDefectMemberType nDefectInfoType, int nParam);
 
public:
    void SetEquipType(int nType){m_nEquipType = nType;};
    CString GetWsiDefectType(int nType);
protected:
 
protected:
    int m_nEquipType; // 0:Inline, 1:Offline
 
    CString m_strRawFilePath;
 
    CAnaResultFile  m_GlassRawAna; //µðÆåºÐ¼®¿ë°á°úÆÄÀÏ [±èÅÂÇö2020/9/15]
    CGlassRawRTMS    m_GlassRawRTMS;//RTMS¿ë °á°úÆÄÀÏ »ý¼º°ü¸® [±èÅÂÇö 2018/12/5]
    CMacroResultFile m_MuraResultFile; //¹«¶ó¿ë °á°úÆÄÀÏ »ý¼º°ü¸® [±èÅÂÇö 2018/12/5]
 
    CStackResultCPJT m_StackResult;
    BOOL    m_bReviewEndCheck;    // InspectEnd ½Ã¿¡ Raw_im Æú´õ¿¡ SubFile »ý¼º ¾ÈÇϱâ À§ÇØ »ç¿ë [ 21-03-18 KJG ]
    CTime    m_tmReviewStart;        
    CTime    m_tmReviewEnd;        
 
    int m_nWriteRawDefectIdx;
};
 
struct stCellData
{
    int iModel;
    int ixCell, iyCell;
    void SetIndex(int im, int ix, int iy)
    {
        iModel = im;
        ixCell = ix;
        iyCell = iy;
    }
    BOOL AddDefect(_grmDefectData* pDefect)
    {
        if (iModel == pDefect->m_nModelIdx)// edge crackÀº Æ÷ÇԾȵǰÔ.. ¸ðµ¨ÀÌ ÆÐÅϺÎÀÎÁö È®ÀÎÀÛ¾÷ ÁÙÀ̱â.
        {
            m_Defects.push_back(pDefect);
            return TRUE;
        }
        return FALSE;
    }
    _grmDefectData* GetDefect(int i) { return m_Defects[i]; }
    int GetDefectCount() { return (int)m_Defects.size(); }
    std::vector<_grmDefectData*> m_Defects;
};
struct stCellStorage
{
    stCellData *m_pCells;
    int m_nCell;
    stCellStorage(int n)
    {
        m_nCell = n;
        m_pCells = new stCellData[n];
    }
    ~stCellStorage()
    {
        delete[] m_pCells;
    }
    stCellData* GetCellData(int iCell)
    {
        return m_pCells + iCell;
    }
    BOOL AddDefect(_grmDefectData *pDefect)
    {
        if (pDefect->m_nCellIdx < 0)
        {
            return FALSE;
        }
        return GetCellData(pDefect->m_nCellIdx)->AddDefect(pDefect);
    }
    int GetCellCount() { return m_nCell; }
};