mrDarker
2025-07-16 1dbe46cd9d0f181d08d5a69f72d8548628a13b9d
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
#pragma once
 
#include <vector>
#include "Global_Define.h"
#include "Defect.h"
#include "GlassRecipe.h"
#include "HardwareSettings.h"
#include "Side_Data.h"
 
class CGlass_Data
{
public:    
    CGlass_Data(void);
    virtual ~CGlass_Data();
 
    void                    ResetGlass();    
    void                    ResetDefect();
    BOOL                    SetDefect(CDefect* pDefect);
    CDefect*                GetDefect_NG(int nDefecIdx);
    CDefect*                GetDefect_OK(int nDefecIdx);
    MapDefect*                GetMapDefect_NG()                { return &m_MapDefect_NG; }
    MapDefect*                GetMapDefect_OK()                { return &m_MapDefect_OK; }
    int                        GetTotalDefectCount()            { return m_nCurDefectIdx_Total;}
    int                        GetDefectCount_NG()                { return m_nCurDefectIdx_NG;}
    int                        GetDefectCount_OK()                { return m_nCurDefectIdx_OK;}
 
    int                        GetJudgeDefectCount()            { return m_nJudgeDefectCount;}
    
    //////////////////////////////////////////////////////////////////////////
    // Glass Data
    BOOL                    SetHardwareRecipe(CHardwareSettings *pHardware)        { m_pHardwareSetting = pHardware;}    
    void                    SetGlassRecipe(CGlassRecipe *pRecipe)                { m_pGlassRecipe=pRecipe;}
    CGlassRecipe*            GetGlassRecipe()                                    { return m_pGlassRecipe; }
    CHardwareSettings*        GetHardwareRecipe()                                    { return m_pHardwareSetting;}
 
    void                    SetLoadingTime();
    void                    SetUnloadingTime();
    void                    SetScanStartTime();
    void                    SetScanEndTime();    
    CTime                    GetLoadingTime()                { return m_tLoadingTime; }
    CString                    GetLoadingTimeString()            { return m_strLoadingTime; }
    CString                    GetUnloadingTime()                { return m_strUnloadingTime; }
    CString                    GetScanStartTime()                { return m_strScanStartTime; }
    CString                    GetScanEndTime()                { return m_strScanEndTime; }        
    CString                    GetScanEndTimeFileName()        { return m_strScanEndTimeFileName; }        
    CString                    GetLoadingTimeFileName()        { return m_strLoadingTimeFileName; }        
    CString                    GetLoadingDayFileName()            { return m_strLoadingDayFileName; }
 
    // short                    *GetGlassResultInfo(){return m_nGlassResult;}
 
    void                    GetStageTheta(int iStage,short &nLongTheta,short &nShortTheta);
    void                    SetStageTheta(int iStage,BOOL bLong,short nTheta);
 
    BOOL                    IsPostProcStart()                {return m_bPostProcessing;}
    void                    SetPostProc(BOOL bSet)            {m_bPostProcessing = bSet;}
 
    void                    SetScanStart(BOOL bStart);
    BOOL                    GetScanStart(){return m_bScanStart;}
    void                    SetScanEnd(int nScanIdx,BOOL bIsEnd);
    BOOL                    GetScanEnd(int nScanIdx);
    void                    SetScanStartCount(int nCount){m_nStartCount=nCount;}
    int                        GetScanStartCount(){return m_nStartCount;}    
    int                        GetScanEndCameraCount();
    void                    SetScanEndCamera(int iCam,int iScan);
 
    CSide_Data*                GetSideData(DimensionDir eDim)    {return &m_SideData[(int) eDim];}
 
    BOOL                    GetInspectComplete()            {return m_bInspectComplete;}
    void                    SetInspectComplete(BOOL bSet)    {m_bInspectComplete = bSet;}
    BOOL                    GetGlassJudge()                    {return m_bJudgeNG;}
    void                    SetGlassJudge(BOOL bNG)            {m_bJudgeNG = bNG;}
 
    void                    SetStageNo(int nStageNo);
    int                        GetStageNo()                    {return m_nStageNo;}
 
    BOOL                    GetSimulation()                    {return m_bSimulation;}
    void                    SetSimulation(BOOL bSimul)        {m_bSimulation = bSimul;}
 
    BOOL                    TrimString(const CString& strDataInput, std::vector<CString>& arrString, const CString& strSign = _T(","));
    int                     DecodePose(CString strDirection);
    int                     DecodeDefectPose(CDefect_Info *pDefect, CString& strResult, const int defaultInt = -1);
    int                        PointToLineDistance(CPoint A, CPoint B, CPoint C);
    CPoint                    RotatePoint(CPoint p, double angle);
    CPoint                    TransformToGlobal(DimensionDir eDir, CPoint localPoint);
 
protected:
    // Setting Params    
    CGlassRecipe            *m_pGlassRecipe;            // Glass Recipe
    CHardwareSettings        *m_pHardwareSetting;        // Hardware Setting
 
    // Side Data
    CCriticalSection        m_csSideData[MAX_SIDE_COUNT];
    CSide_Data                m_SideData[MAX_SIDE_COUNT];
 
    // Judgement
    BOOL                    m_bInspectComplete;
    BOOL                    m_bJudgeNG;    // TRUE : NG, FALSE : OK
    // Defect
    MapDefect                m_MapDefect_NG;                // 搬窃沥焊 (NG)
    MapDefect                m_MapDefect_OK;                // 搬窃沥焊 (OK)
 
    int                        m_nCurDefectIdx_Total;
    int                        m_nCurDefectIdx_NG;
    int                        m_nCurDefectIdx_OK;
 
    int                        m_nJudgeDefectCount;
    CCriticalSection        m_csGlassDefect;            
    
    // Time
    CTime                    m_tLoadingTime;
    CString                    m_strLoadingTime;
    CString                    m_strUnloadingTime;
    CString                    m_strScanStartTime;
    CString                    m_strScanEndTime;        
    
    //park
    CString                    m_strScanEndTimeFileName;
    CString                    m_strGlassResult;
    CString                    m_strLoadingTimeFileName;
    CString                    m_strLoadingDayFileName;
 
    // Stage theta 焊沥
    short                    m_nStageLongTheta[2];
    short                    m_nStageShortTheta[2];    
 
    BOOL                    m_bScanEndCamera[MAX_CAMERA_COUNT][MAX_SCAN_COUNT];
    BOOL                    m_bScanStart;
    BOOL                    m_bScanEnd[MAX_SCAN_COUNT];
    BOOL                    m_bPostProcessing;
 
    CCriticalSection        m_csProfileData;
    int                        m_nStartCount;    
    CCriticalSection        m_csInsEnd;
 
    int                        m_nStageNo;
    BOOL                    m_bSimulation;
};