SDC C-Project CF Review 프로그램
LYW
2021-08-09 b354c153b0074e5d54371bc05b12edbe8e613a19
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
#pragma once
 
#include "ReviewProcessor.h"
#include "CHEdgeTriangle/EdgeTriangle.h"
#include "LineChecker/LineChecker.h"
 
#define ErrorCount 20
 
enum CSOT_OFF_PROCESS_STATUS {CSOT_OFF_REVIEW_SUCCESS = 0, CSOT_OFF_USER_SUCCESS, CSOT_OFF_MEASURE_SUCCESS, CSOT_OFF_WSI_SUCCESS,CSOT_OFF_REFLOW_SUCCESS}; //kmj
 
class CReviewProcessor_CSOT_OFF : public CReviewProcessor
{
public:
    CReviewProcessor_CSOT_OFF(int nThreadCount=1);
    virtual ~CReviewProcessor_CSOT_OFF(void);
 
    virtual void    AddWsiResultData(int nModuleIndex, const SWsiResult& measureResut);
    virtual void    AddWsiReflowResultData(int nModuleIndex, const SWsiResult& measureResut);
    virtual void    AddCameraImageData(int nModuleIndex, int nResultIndex, VectorImageData& vectorImageData);
    virtual int        AddReviewProcessData(SReviewResult* pReviewResult);
 
    virtual int        PostProcessReviewResult(int nThreadIdx, SReviewResult* pReviewResult);
    virtual int        PostProcessUserResult(int nThreadIdx, SReviewResult* pReviewResult);
    virtual int        PostProcessWsiResult(int nThreadIdx, SReviewResult* pReviewResult);
    virtual int        PostProcessMeasureResult(int nThreadIdx, SReviewResult* pReviewResult);
    virtual int        PostProcessReflowResult(int nThreadIdx, SReviewResult* pReviewResult);
    virtual int        PostProcessWsiReflowResult(int nThreadIdx, SReviewResult* pReviewResult);
 
    // Checking Process Success    kmj
    BOOL    CheckProcessSuccess(CRsRcpReviewInfo* pRsRcpReviewInfo);
    void    ProcessSuccessReset();
 
protected:
    virtual void    WorkThreadProcess(PVOID pParameter);
    int        CheckMotionComplete();
 
private:
    int        ProcessReview(int nThreadIdx, SReviewResult* pReviewResult);
    int        ProcessMeasure(int nThreadIdx, SReviewResult* pReviewResult);
    int        ProcessWSI(int nThreadIdx, SReviewResult* pReviewResult);
    int        ProcessUser(int nThreadIdx, SReviewResult* pReviewResult);
    int        ProcessReflow(int nThreadIdx, SReviewResult* pReviewResult);
    int        ProcessWSIReflow(int nThreadIdx, SReviewResult* pReviewResult);
 
    // ProcessReview
    BOOL    MakeReviewImageFileName(SReviewResult* pReviewResult);
    void    LoadAoiImage(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CCHImageData* pAoiDark, CCHImageData *pAoiBright);
    void    FindAoiDefectImagePath(const CString& strGlassID, int nOpticType, int nPosX, int nPosY,  CString& strDarkPath, CString& strBrightPath);
    void    FindDefectPos(int nThreadIdx, CCHImageData* pImageData, const SReviewDefectFindParam& findParam, SReviewDefectFindResult& findResult, SReviewResult* pReviewResult);
    BOOL    MakeUploadImage(CCHImageData *pUploadImage, CCHImageData *pReviewCam, CCHImageData *pAoiDark, CCHImageData *pAoiBright, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult);
    void    MakeAoiImage(CCHImageData *pAoiDark, CCHImageData* pAoiBright,  CCHImageData* pAoiDark1, CCHImageData* pAoiBright1, CCHImageData* pAoiDark2, CCHImageData* pAoiBright2, int& nMaxWidth, int& nMaxHeight);
    void    DrawAoiImage(CDC *pDC, CCHImageData *pAoiDark1, CCHImageData* pAoiBright1, CCHImageData *pAoiDark2, CCHImageData* pAoiBright2, int nWidth, int nHeight);
    void    DrawDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult);
    void    DrawDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, CCHImageData* pAoiBright, CCHImageData* pAoiDark);// 20170720 smok. bright, dark image is exist
    // User Defect Á¤º¸ Ãß°¡ [2017.6.22 bhs]
    //void    DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, ReviewType rType);
    void    DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, CCHImageData* pAoiBright, CCHImageData* pAoiDark);// 20170720 smok. bright, dark image is exist
    void    DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult);
 
 
    void    FindCDDefectIdx(SReviewResult* pReviewResult);
    void    FindSDDefectIdx(SReviewResult* pReviewResult);
    void    FindInspectionDefectImage(int nUMOriginX, int nUMOriginY, const CString& strGlassID, CString& strInspectionDefectImagePath);
    void    FindInspectionDefectImage(int nUMOriginX, int nUMOriginY, const CString& strGlassID, int nOpticType, CString& strDarkPath, CString& strBrightPath);    
 
    // ProcessMeasure
    BOOL    MakeMeasureImageFileName(SReviewResult* pReviewResult);
    BOOL    MakeUploadMeasureImage(CCHImageData *pUploadImage, CCHImageData *pReviewCam, const SReviewResult* pReviewResult, CResultTriangle * pResultTriangle, int nMeasureResult); //Modify by JuneKi 2016-02-29
 
    // ProcessUser
    BOOL    MakeUserImageFileName(SReviewResult* pReviewResult);    
 
    // ProcessReflow
    BOOL    MakeReflowImageFileName(SReviewResult* pReviewResult);
 
    // Checking Process Success    
    BOOL    bProcessSuccess[3]; //kmj
 
private:
    CRITICAL_SECTION    m_csUserCriticalSection;
    CRITICAL_SECTION    m_csMeasureRcpfileCriticalSection;
    CRITICAL_SECTION    m_csMeasureRcpimageCriticalSection;
    CRITICAL_SECTION    m_csMeasureMeasureResult; 
 
    CMotorControlInfo* m_MotorControlInfo;
 
protected:
    CString                ErrorStringCode[ErrorCount];
};