DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
DitGlassRawMessenger/Extern/DitGlassRawStruct.h | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewHistory/ReveiwHistory/DitGlassRawStruct.h | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewHistory/bin/ReviewHistroy.exe | 패치 | 보기 | raw | blame | 히스토리 | |
ReviewSystem/ReviewSystem/DitGlassRawStruct.h | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewSystem/ReviewSystem/ReviewInterface.cpp | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewSystem/ReviewSystem/SequenceProcessor.cpp | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewSystem/ReviewSystem/SequenceProcessor.h | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp | ●●●●● 패치 | 보기 | raw | blame | 히스토리 |
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -587,14 +587,32 @@ CString strValue; /*< KJG 20211229 - #3846 MOD Start >*/ //strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; /* < KMH 20220613 : #3957 MOD Start > */ /* <LJC 20220425 : #3957 MOD Start> */ strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_NG MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //56ea // strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_NG MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //56ea strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_NG MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; //56ea for (int i = 0; i < RAW_CODE_MAX; i++) { CString strDefectCode = pGlassData->m_strRawDefectCode[i]; if (strDefectCode == "") { strDefectCode = "*"; } strValue += " " + strDefectCode; } /* <LJC 20220425 : #3957 MOD End> */ /* < KMH 20220613 : #3957 MOD End > */ /*< KJG 20211229 - #3846 MOD End >*/ strLine += strValue; strLine += "\n"; /* < KMH 20220614 : #3957 MOD Start > */ /* <LJC 20220425 : #3957 MOD Start> */ strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //31ea /* <KYH 211129 : #3796 MOD Start> */ /* <LJC 20220425 : #3957 MOD End> */ //strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //31ea /* <KYH 211129 : #3796 MOD Start> */ strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT"; //56ea for (int i = 0; i < RAW_CODE_MAX; i++) { CString strDefectCode = pGlassData->m_strRawDefectCode[i]; if (strDefectCode == "") { strDefectCode = "*"; } strValue += " " + strDefectCode; } /* <LJC 20220425 : #3957 MOD End> */ /* < KMH 20220614 : #3957 MOD End > */ strLine += strValue; strLine += "\n"; strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE LINE_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea strLine += strValue; @@ -1036,7 +1054,10 @@ SPRINTRAW(8, "SUBPANEL"); // 03 12 SUBPANELID // Subpanel ID //SPRINTRAW(12, "%d", pCellData->m_nCellID); SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pCellData->m_nCellID / 36, g_pCellCode[pCellData->m_nCellID % 36]); /* < KMH 20220609 : #4183 MOD Start > */ //SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pCellData->m_nCellID / 36, g_pCellCode[pCellData->m_nCellID % 36]); SPRINTRAW(12, "%s%s", pData->GetGlassData()->m_strGlassID, pCellData->m_strCellName); /* < KMH 20220609 : #4183 MOD End > */ // ê¸ë¼ì¤ ìì ê¸°ì¤ Yì¢í ë°ë // ì½ëì»· 기ì¤ì¼ë¡ ê²°ê³¼íì¼ ì¢íê° ìì±ëëë° ê³ ê°ì¬ì ëª íí íì¸ íì @@ -1191,7 +1212,10 @@ // 02 6 DEFECT // DEFECT SPRINTRAW(6, "DEFECT"); // 03 12 ID // Subpanel ID SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefectData->m_nCellIdx / 36, g_pCellCode[pDefectData->m_nCellIdx % 36]); /* < KMH 20220609 : #4183 MOD Start > */ //SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefectData->m_nCellIdx / 36, g_pCellCode[pDefectData->m_nCellIdx % 36]); SPRINTRAW(12, "%s%s", pData->GetGlassData()->m_strGlassID, pDefectData->m_strCellName); /* < KMH 20220609 : #4183 MOD End > */ // 04 5 DEF_NO // Defect Number of Panel // RAW íì¼ì© Defect Index //SPRINTRAW(5, "%d", pDefectData->m_nDefectIdx); DitGlassRawMessenger/Extern/DitGlassRawStruct.h
@@ -222,6 +222,10 @@ /* < KJG 20220225 - #3850 ADD Start >*/ char m_strRawMergeStepID[32]; /* < KJG 20220225 - #3850 ADD End >*/ /* < KMH 20220614 : #3957 ADD Start > */ char m_strRawDefectCode[RAW_CODE_MAX][5]; // 4ê¸ìë§ í기 /* < KMH 20220614 : #3957 ADD End > */ }; struct _grmBlockData { @@ -479,6 +483,7 @@ int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? char m_strCellName[32]; // ì ì´ë¦ /* < KMH 20220609 : #4183 ADD > */ short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h
»õ ÆÄÀÏ @@ -0,0 +1,787 @@ #pragma once #define SHAREDMEMNAME_BASICINFO _T("DIT.GLASSRAWSYSTEM.SHAREDMEM.BASICINFO") #define SHAREDMEMNAME_GLASSDATA _T("DIT.GLASRAWSYSTEM.SHAREDMEM.GLASSDATA") #define MUTEX_RAWMESSENGER _T("MUTEX_RAWMESSENGER_IPC") #define COMMAND_MAXCOUNT 8 #define RAWMESSENGER_MAXCAMNUM 30 #define RAWMESSENGER_MAXSCANNUM 20 #define RAWMESSENGER_MAXHLINUM 8 #define RAW_CODE_MAX 10 #define MAX_ZONE_NUM 16 namespace ditRaw { enum ReviewPlanType { RPT_Review = 0, RPT_User, RTP_WSI, RTP_PlanMeasure, RTP_Reflow, RTP_WsiReflow, RTP_UserWsi, RPT_AOICustom = 1000, }; }; enum emAOIProcStep { APS_None = 0, //AOI APS_GlassLoading, APS_InspectEnd, //Review APS_CustomReviewRead, APS_ReviewStart, APS_ReviewEnd, RPS_StepNum }; struct _grmGlassData { void clear() { memset(this, 0, sizeof(_grmGlassData)); } //Glass ì ë³´ char m_strFileName[64]; char m_strPath[256]; int m_nCellNum; int m_nDefectNum; int m_nOriginDirection; //{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 }; int m_nConerCutDirection; int m_nScanCoordinateY; //ì¬ê¸°ê° 0ì´ë©´ ì¼ë°, 1ì´ë©´ Scanë°©í¥ì´ yì¶(ì¦ scanë°©í¥ì´ ë¨ì¶, offline ì¤ë¹ ê°ì) int m_nGlassSizeWidth; int m_nGlassSizeHeight; /* <KYH 211129 : #3796 ADD Start> */ int m_nDefectNumJudgeND; /* <KYH 211129 : #3796 ADD End> */ //DUMY DATA int Dumy_int[9]; //ì¤ë¹ì ë³´ char m_strLine[32]; char m_strEquipType[32]; char m_strEquipID[32]; char m_strStepID[32]; char m_strOperID[32]; CTime m_tmGlassLoading; //3. START_TIME CTime m_tmInspectionStart; //3. START_TIME CTime m_tmInspectionEND; //4. END_TIME CTime m_tmReviewLoading; CTime m_tmReviewEnd; //기본 물ë¥ì ë³´ char m_strGlassID[32]; //Glass ID char m_strPPID[32]; char m_strEPPID[32]; char m_strLotID[32]; //LOT_ID char m_strSLotID[32]; //SLOT_ID char m_strRecipeName[32]; //RECIPE_NAME char m_strGlassJudge[32]; //GLASS_JUDGE char m_strGlassCode[32]; //Grade or Code char m_strProductID[16]; //4. PRODUCT_ID //VCR int m_nVcrResultCode; char m_strVCRResult[32]; char m_strVCRGlassID[32]; //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; int m_nDefectNumSizeHuge; int m_nDefectNumSizeUltra; int m_nDefectNumLocActive; int m_nDefectNumLocPad; int m_nDefectNumLocCrack; int m_nDefectNumLocBM; int m_nDefectNumTypeTB; int m_nDefectNumTypeTW; int m_nDefectNumTypeRB; int m_nDefectNumTypeRW; int m_nDefectNumTypeMD; int m_nDefectNumTypeCD; int m_nDefectNumTypeMC; /* <LJC 20220422 : #3957 ADD Start> */ int m_nDefectCode[RAW_CODE_MAX]; /* <LJC 20220422 : #3957 ADD End> */ int m_nDefectNumJudgeOKWhite; int m_nDefectNumJudgeOKBlack; int m_nDefectNumJudgeNG; int m_nDefectNumJudgeRW; int m_nDefectNumJudgeRP; int m_nDefectNumJudgeRV; int m_nDefectNumJudgeTR; int m_nDefectNumJudgePR; /*< LHS 20211029 - #3783 MOD Start >*/ int m_nDefectNumJudgeLine; /*< LHS 20211029 - #3783 MOD End >*/ int m_nDefectNumStackTD; int m_nDefectNumStackSD; int m_nDefectNumStackPD; int m_nDefectNumStackSP; //ì¹´ë©ë¼/ì¤ìº ì ë³´ [ê¹íí 2018/12/5] short m_nCameraNum; short m_nScanNum; unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] double m_nAlignCcdTheta; double m_nAlignCcdShitftX; double m_nAlignCcdShitftY; double m_nAlignPreTheta; double m_nAlignPreShitftX; double m_nAlignPreShitftY; double m_nAlignBasicTheta; double m_nAlignBasicShitftX; double m_nAlignBasicShitftY; char m_strAlignFirst[64]; char m_strAlignSecond[64]; // char m_strAlignPath[256]; //CSOTì© ë¬¼ë¥ ì ë³´ [ê¹íí 2018/12/5] char m_strCassetteSequenceNo[16]; char m_strOwnerCode[16]; //2. OWNER_CODE char m_strOwnerType[16]; //3. OWNER_TYPE char m_strProcessID[21]; //5. PROCESS_ID char m_strProductGroup[16]; //6. PRODUCT_GROUP char m_strCSTID[16]; //8. CST_ID char m_strPreProcessID[16]; //10.PRE_PROCESS_ID char m_strPreEQPID[16]; //11.PRE_EQP_ID char m_strPreChamerID[16]; //12.PRE_CHAMBER_ID char m_strPreRecipeID[32]; //13.PRE_RECIPE_ID char m_strGroupID[16]; //14.GROUP_ID char m_cAutoSampleFlag; //15.AUTOSAMPLEFLAG // CPRJì© ë¬¼ë¥ ì ë³´ char m_strProdType[3]; char m_strBatchID[13]; char m_strPairHPanelID[13]; char m_strGlassThickNess[2]; char m_strCompCount[2]; char m_strGlassState[2]; char m_strInsFlag[2]; char m_strPanelPosition[2]; char m_strFlowHistory[2]; char m_strCount1[2]; char m_strCount2[2]; char m_StrMergeList[10][12]; //Mura Data 0412 nwh char m_strMaxAvgGray[12]; char m_strMaxPortion[12]; //1226NWH char m_strReadingFlag[2]; BYTE m_nUniqueID[4]; int m_nSlot_No; BYTE m_nGlassDataBitSignal[4]; bool m_bJob_end; //201217 CJH - ì°ì Defect Review ê°ì int m_nReviewNum; //201221 CJH - íì±í Stack ê²°ê³¼ int m_nStackNum; BOOL m_bStackRead; /*< KJG 20211024 - #3487 ADD Start >*/ int m_nRawMergeNum; BOOL m_bRawMergeRead; /*< KJG 20211024 - #3487 ADD End >*/ //210203 CJH - CutOff ëì ê²°í¨ ì int m_nCutOffDefectNum; //210323 CJH - Server/Frame Shrink ì ë³´ ì¶ê° char m_strShrinked[6]; //210326 CJH - RAW ì ë ¥ Defect ìë ìí ì¬ì©ì¬ë¶ BOOL m_bRawCutoff; //210907 KJG - EdgeCrack ê²ì¬ ì¬ì© ì 무 BOOL m_bEdgeCrackUse; BOOL m_bRawMergeUse; /* < KJG 20220225 - #3850 ADD Start >*/ char m_strRawMergeStepID[32]; /* < KJG 20220225 - #3850 ADD End >*/ }; struct _grmBlockData { void clear() { memset(this, 0, sizeof(_grmBlockData)); } char m_strBlockID[16]; //1. BLOCK_ID char m_cBlockJudgeAOI; //2. BLOCK_JUDGE_AOI char m_cBlockJudgeATS; //4. BLOCK_JUDGE_ATS char m_cBlockJudgeTEG; //5. BLOCK_JUDGE_TEG int m_nGlassIdDCR; //22. GLASS_ID_DCR }; struct _grmCellData { void clear() { memset(this, 0, sizeof(_grmCellData)); } int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; }; int m_nCellID; //1. PANEL_ID short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? char m_strCellName[32]; int m_rectCellLeft; int m_rectCellTop; int m_rectCellRight; int m_rectCellBottom; int/*Judgement*/ m_nJudgement; int m_nJudgeFlag; int m_nJudgeGlade; //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; int m_nDefectNumSizeHuge; int m_nDefectNumSizeUltra; int m_nDefectNumLocActive; int m_nDefectNumLocPad; int m_nDefectNumLocCrack; int m_nDefectNumLocBM; int m_nDefectNumTypeTB; int m_nDefectNumTypeTW; int m_nDefectNumTypeRB; int m_nDefectNumTypeRW; int m_nDefectNumTypeMD; int m_nDefectNumTypeCD; int m_nDefectNumTypeMC; /* <KYH 211129 : #3796 ADD Start> */ int m_nDefectNumJudgeND; /* <KYH 211129 : #3796 ADD End> */ /* <LJC 20220422 : #3957 ADD Start> */ int m_nDefectCode[RAW_CODE_MAX]; /* <LJC 20220422 : #3957 ADD End> */ //DUMY DATA int Dumy_int[9]; //Mura Data nwh 0404 char m_strProImage[32]; char m_strAvgGray_0[12]; char m_strPortion_0[12]; //kyh Mura Data ì¶ê° 0622 char m_strCorner_Gray_0[12]; char m_strAvgAmp_0[12]; char m_strFFTVar_0[12]; char m_strFFTVah_0[12]; char m_strFFTVaq_0[12]; char m_strFFTPK_0[12]; char m_strAvgGray_1[12]; char m_strPortion_1[12]; //kyh Mura Data ì¶ê° 0622 char m_strCorner_Gray_1[12]; char m_strAvgAmp_1[12]; char m_strFFTVar_1[12]; char m_strFFTVah_1[12]; char m_strFFTVaq_1[12]; char m_strFFTPK_1[12]; char m_strAvgGray_2[12]; char m_strPortion_2[12]; //kyh Mura Data ì¶ê° 0622 char m_strCorner_Gray_2[12]; char m_strAvgAmp_2[12]; char m_strFFTVar_2[12]; char m_strFFTVah_2[12]; char m_strFFTVaq_2[12]; char m_strFFTPK_2[12]; char m_strAvgGray_3[12]; char m_strPortion_3[12]; //kyh Mura Data ì¶ê° 0622 char m_strCorner_Gray_3[12]; char m_strAvgAmp_3[12]; char m_strFFTVar_3[12]; char m_strFFTVah_3[12]; char m_strFFTVaq_3[12]; char m_strFFTPK_3[12]; int m_nDefectNumJudgeOKWhite; int m_nDefectNumJudgeOKBlack; int m_nDefectNumJudgeNG; int m_nDefectNumJudgeRW; int m_nDefectNumJudgeRP; int m_nDefectNumJudgeRV; int m_nDefectNumJudgeTR; int m_nDefectNumJudgePR; /*< LHS 20211029 - #3783 MOD Start >*/ int m_nDefectNumJudgeLine; /*< LHS 20211029 - #3783 MOD End >*/ int m_nReflowResult[8]; // 0: Reflow X 1: Reflow OK 2: Reflow NG // Filteringë Stackë³ ì int m_nDefectTDCount; int m_nDefectSDCount; int m_nDefectPDCount; int m_nDefectSPCount; // Gate/Data ì´ ê°¯ì int m_nGateNum; int m_nDataNum; // 210129 CJH - Cell Origin ë°©í¥ int m_nCellXDir; int m_nCellYDir; }; struct _grmDefectReviewData { void clear() { memset(this, 0, sizeof(_grmDefectReviewData)); } ////////////////////////////////////////////////////////////////////////// //ì¬ê¸°ì ë¶í° 리뷰 ìì [ê¹íí 2019/1/19] ditRaw::ReviewPlanType m_nPlanType ; int m_nResultCode; //0:None, 1:Success int m_nShotIndex; //리뷰 ì°ì ìë² [ê¹íí 2018/12/5] int m_nModuleIndex; int m_nMagnificIndex; float m_fManification; float m_fManificResoultion; char m_strRevImageName[256]; char m_strRevImagePath[256]; ////////////////////////////////////////////////////////////////////////// // Measure ìì int m_nMeasure_Index; int m_nMeasure_ResultCode; //0:None, 1:Success float m_fMesure_ResultData[8]; // 0:Type, 1:ShiftX, 2:ShiftY ////////////////////////////////////////////////////////////////////////// // WSIìì int m_nWsi_ResultCode; //0:None, 1:Success int m_nWsi_Type; // í¨ëª° / ë기 float m_fWsi_ResultData[8]; // 0:Type, 1:Height(um), 2:Width char m_strWsi_2DImageFilename[256]; char m_strWsi_3DImageFilename[256]; int m_nWsiReflowPositionIndex; // WsiReflowPositionIndex int m_nWsi_pReflowResultData[8]; double m_dWsi_DamDistance; double m_dWsiMmMotorX; // WSI ëª¨í° ì¢í 20180223 HJH double m_dWsiMmMotorY; float m_fWsiManification; // WSI ë°°ì¨ ////////////////////////////////////////////////////////////////////////// // Reflow ìì int m_nReflow_Index; int m_nReflow_ResultCode; //0:None, // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side float m_fReflow_LinePosData[8]; int m_nReflow_Side; int m_nReflow_InspectionMode; }; struct _grmDefectData { void clear() { memset(this, 0, sizeof(_grmDefectData)); } short m_nDefectID; short m_nCameraID; short m_nScanIdx; //short m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ int m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ 201207 CJH - ì릿 ì ë침. intíì¼ë¡ ë³ê²½ int m_nPixelConv; // pixel ë¨ì ì¢í int m_nPixelScan; // pixel ë¨ì ì¢í short m_nPixelSize; // ê²°í¨í¬ê¸° ---------------------------------PS short/*SERVER_DefectType*/ m_DefectType; // ê²°í¨ íì ---------------------------------DT short/*SERVER_DefectSubType*/ m_DefectSubType; // ê²°í¨ì íì ìí. short/*SERVER_DefectBDType*/ m_DefectBDType; // ê²°í¨ íì - Bright, Dark, Both short m_sPixelWidth; // í½ì ë¨ì ê²°í¨ ëë¹ short m_sPixelHeight; // í½ì ë¨ì ê²°í¨ ëì´ short m_nLevelSrcMin; // ê²°í¨ ë°ê¸° Min -----------------------------SN short m_nLevelSrcMax; // ê²°í¨ ë°ê¸° Max -----------------------------SX short m_nLevelSrcAvg; // ê²°í¨ ë°ê¸° Avg -----------------------------SA short m_nLevelRefMin; // ë¹êµëì ë°ê¸° Min -------------------------RN short m_nLevelRefMax; // ë¹êµëì ë°ê¸° Max -------------------------RX short m_nLevelRefAvg; // ë¹êµëì ë°ê¸° Avg -------------------------RA short m_nLevelDiffMin; // ë¹êµì°¨ Min ---------------------------------DN short m_nLevelDiffMax; // ë¹êµì°¨ Max ---------------------------------DX short m_nLevelDiffAvg; // ë¹êµì°¨ Avg ---------------------------------DA int m_nDefectRScale; // í½ì ë¨ì ê²°í¨ ëì´ -------------------------RS short m_sThreshold; // ê²°í¨ì ê²ì¶í ëì Threshold short m_sThresholdAvg; // ê²°í¨ì ê²ì¶í ëì Threshold AVG short m_sDefectPeak; // ê²°í¨ì Peak. short m_sDefectLevel; // (DiffAvg - Th) BOE 8G ìì²ì¬í int m_nPixelGlassStart; // Glass ìì í½ì short m_sDefectLoc; short m_sZoneClassPixelCount[16]; short m_sZonePixelCount[16]; // Zoneë³ ê²°í¨ Pixel ì short m_sZoneValueMin[16]; // Zoneë³ ê²°í¨ Min short m_sZoneValueMax[16]; // Zoneë³ ê²°í¨ Max short m_sZoneValueAvg[16]; // Zoneë³ ê²°í¨ Avg short m_sZonePixelPercent[16]; // --------------------------------------Z0~ZF //210127 CJH - Zoneë³ Source Gray ì ë ¥ short m_sZoneValueSrcMin[16]; // Zoneë³ Source Min short m_sZoneValueSrcMax[16]; // Zoneë³ Source Max short m_sZoneValueSrcAvg[16]; // Zoneë³ Source Avg int m_nUMOriginX; // umë¨ì xì¢í (ìì 기ì¤) int m_nUMOriginY; // umë¨ì yì¡°í (ìì 기ì¤) int m_nUMCenterAlignX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterAlignY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMCenterY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMSizeX; // umë¨ì X í¬ê¸° -----------------------------UX int m_nUMSizeY; // umë¨ì Y í¬ê¸° -----------------------------UY int m_nUMSize; // umë¨ì í¬ê¸°. CRect m_RectUM; // ëí ì¼í° ê¸°ì¤ ì¬ê°í. short/*SERVER_DefectSizeType*/ m_DefectSizeType; // ê²°í¨ í¬ê¸° ì¢ ë¥enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; short/*SERVER_DefectPeakType*/ m_DefectPeakType; // Peakì ì¢ ë¥. short/*Judgement*/ m_DefectJudgement; // ê²°í¨ íì . BOOL m_bDefectCutoff; // ì»· ì¤í ëí(TRUE= Cutoff, FALSE) short/*MAP16_DefectClass*/ m_DefectClass; // BOE Defect Class 16ë±ë¶ êµ¬ë¶ int m_nPadRegionIdx; // PAD ìì ì¸ë±ì¤ int m_nUMCellX; // ì ìì ê¸°ì¤ x ì¢í int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) short m_nCellDataAlign; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì í) int m_nUMShotX; // ì· ê¸°ì¤ Xì¢í int m_nUMShotY; // ì· ê¸°ì¤ Yì¢í short m_nMaskDefectIdx; // í Glassìì ë°ê²¬ë ë§ì¤í¬ê²°í¨ 묶ìì ì¸ë±ì¤. short m_nShotIdx; // ë ¸ê´ì· ë²í¸ short m_nMatchShotCount; // ëì¼í ë§ì¤í¬ ê²°í¨ì ì. short m_nMatchMaxSize; // ëì¼í ë§ì¤í¬ ì¤ ê°ì¥ í° ê²°í¨ì í¬ê¸°. short m_nRepeatCount; // ì°ìê²°í¨ë°ê²¬ìí ëì¼ì¢í ë°ë³µì short m_nMaskRepeatCount; int m_StackInfo; // Stack Flag BOOL m_bRealStack; // Stack 머ì§ì ìí TD(TRUE) ì¸ì§, íí°ë§ì ìí TD(FALSE)구ë¶í ì ìë¤. short m_nStackStepCount; // Stack ì short m_nStackColorIdx; // Color를 ì ííë ì¸ë±ì¤. //CString m_strStackStep[CFDEFECT_STACKCOUNT]; // Stack Step. char m_strStackFirst[60]; // Stack Step. //201221 CJH - ìµë ì¬ì´ì¦ 60bytes char m_strUnitID[16]; // ì ëìì´ë int m_ClassificationType; // enum ClassificationType { ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PIë TFEë± ì¶ê° ë¶ë¥ ìê³ ë¦¬ì¦ ì ì© ê²°ê³¼. int m_nAtomWidth; // TFE íµ ëë¹ int m_nAtomHeight; // TFE íµ ëì´ short/*ReKind*/ m_DefectKind; // ê²°í¨ ì¢ ë¥ char m_strDefectCode[32]; // Defect Code BOOL m_bMergeState; // Merge Status char m_strAoiImageName[256]; // Defect Image Name(CCD Image) int m_nDefectMerge; // íì¬ ëíì ë¨¸ì§ ì¬ë¶ int m_nPixelSizeOrigin; int m_nScratchRatio; int m_nDensity; // ìí ê²°í¨ êµ¬ë¶ì ìí ë°ë [2017.8.2 bhs] char m_strDefectName[16]; char m_strDefectType[16]; double m_dScanResolution; double m_dConvResolution; int m_nAngle; // ê°ë int m_nMajor; // ì¥ì¶ 길ì´(Long) int m_nMinor; // ë¨ì¶ 길ì´(Short) int m_nCompact; // Blob ì¥ì¶ì ì§ë¦ì¼ë¡ íë ìì ëì´ì Blob ëì´ì ë¹ì¨ int m_nThickness; // Blob ëì´ì ì¥ì¶ì ë¹ì¨ (Area / Major) short m_nHliLevelIdx; // ëª ë²ì§¸ ë 벨(ì±ë)ì¸ê°? int m_nHliLayers; // í´ë¹ê²°í¨ì í¬í¨ë ë ì´ì´ bitì²ë¦¬ BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° char m_strAoiImagePath[255]; char m_strReviewImagePath[255]; int m_nAlignRectLeft; int m_nAlignRectTop; int m_nAlignRectBottom; int m_nAlignRectRight; /*< LHS 20211029 - #3783 MOD Start >*/ char m_strLNDefectCode[12]; short/*LineDefectType*/ m_LineDefectType; /*< LHS 20211029 - #3783 MOD End >*/ _grmDefectReviewData m_ReviewDefect; }; enum emGlassRawCommand { grcNone = 0, //AOI Sequence grcSequenceGlassLoading = 1, grcSequenceInspectEnd = 2, //Review Sequence grcSequenceReviewStart = 3, grcSequenceReviewEnd = 4, grcSequenceCustomReviewDataRead = 10, grcWriteRaw = 101, grcReadRaw = 102, grcWriteBin = 201, grcReadBin = 202, grcReviewWriteBIn = 301, grcGlassRawCommand }; struct _grmDitCommand { struct _grmCommand { int nCommand; char strParam[256]; short nResult; }; short m_nCommandIdxWrite; short m_nCommandIdxRead; _grmCommand m_nCommandBuffer[COMMAND_MAXCOUNT]; }; struct _grmDitMemInfo { //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] size_t m_nGlassRawDataSize; int m_nGlassMaxDataNum; int m_nBlockMaxDataNum; int m_nCellMaxDataNum; int m_nDefectMaxDataNum; int m_nStackMaxDataNum; /*< KJG 20211024 - #3487 ADD Start >*/ int m_nRawMergeMaxDataNum; /*< KJG 20211024 - #3487 ADD End >*/ //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] int m_nGlassDataPoint; int m_nBlockDataPoint; int m_nCellDataPoint; int m_nDefectDataPoint; int m_nStackDataPoint; /*< KJG 20211024 - #3487 ADD Start >*/ int m_nRawMergeDataPoint; /*< KJG 20211024 - #3487 ADD End >*/ int m_nSizeOfGlassData; int m_nSizeOfBlockData; int m_nSizeOfCellData; int m_nSizeOfDefectData; int m_nSizeOfStackData; /*< KJG 20211024 - #3487 ADD Start >*/ int m_nSizeOfRawMergeData; /*< KJG 20211024 - #3487 ADD End >*/ }; struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand { size_t m_nGlassLoadingCount; emAOIProcStep m_ClientProcStep; //AOI, Reviewê° ë³´ë¸ ëª ë ¹ emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)ê° ì²ë¦¬ ìë£ í ëª ë ¹ }; class CgrmGlassRawData { public: CgrmGlassRawData() { m_pGlassRawData = NULL; m_bRefAlloc = FALSE; }; ~CgrmGlassRawData() { clear(); }; void clear() { if(m_bRefAlloc) { m_pGlassRawData = NULL; return;} if(m_pGlassRawData) { delete [] m_pGlassRawData; m_pGlassRawData = NULL; } }; BOOL ImportGlassRaw(_grmDitMemInfo* pInfo, char* pData, bool bRefAlloc = false) { if(pInfo == NULL) return FALSE; if(m_pGlassRawData && pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) clear(); if(m_pGlassRawData == NULL) m_pGlassRawData = new char[ pInfo->m_nGlassRawDataSize ]; m_MemInfo = *pInfo; m_nGlassRawDataSize = pInfo->m_nGlassRawDataSize; m_nGlassMaxDataNum = pInfo->m_nGlassMaxDataNum ; m_nBlockMaxDataNum = pInfo->m_nBlockMaxDataNum ; m_nCellMaxDataNum = pInfo->m_nCellMaxDataNum ; m_nDefectMaxDataNum = pInfo->m_nDefectMaxDataNum; m_nStackMaxDataNum = pInfo->m_nStackMaxDataNum ; m_nGlassDataPoint = pInfo->m_nGlassDataPoint ; m_nBlockDataPoint = pInfo->m_nBlockDataPoint ; m_nCellDataPoint = pInfo->m_nCellDataPoint ; m_nDefectDataPoint = pInfo->m_nDefectDataPoint ; m_nStackDataPoint = pInfo->m_nStackDataPoint ; m_nSizeOfGlassData = pInfo->m_nSizeOfGlassData ; m_nSizeOfBlockData = pInfo->m_nBlockDataPoint ; m_nSizeOfCellData = pInfo->m_nSizeOfCellData ; m_nSizeOfDefectData = pInfo->m_nSizeOfDefectData; m_nSizeOfStackData = pInfo->m_nSizeOfStackData ; if(bRefAlloc) { m_pGlassRawData = pData; } else { if(pData) { memcpy(m_pGlassRawData, pData, sizeof(char)*pInfo->m_nGlassRawDataSize); } else { memset(m_pGlassRawData, 0, sizeof(char)*pInfo->m_nGlassRawDataSize ); } } m_pGlassData = (_grmGlassData*)&m_pGlassRawData[pInfo->m_nGlassDataPoint]; m_pBlockData = (_grmBlockData*)&m_pGlassRawData[pInfo->m_nBlockDataPoint]; m_pCellData = (_grmCellData*)&m_pGlassRawData[pInfo->m_nCellDataPoint]; m_pDefectData = (_grmDefectData*)&m_pGlassRawData[pInfo->m_nDefectDataPoint]; m_pStackData = (_grmDefectData*)&m_pGlassRawData[pInfo->m_nStackDataPoint]; m_bRefAlloc = bRefAlloc; return TRUE; }; BOOL ExportGlassRaw(_grmDitMemInfo* pInfo, char* pData) { if(pInfo == NULL || pData == NULL) return FALSE; if(1) //new type //ë©ëª¨ë¦¬ ì´ ê³µê° í¬ê¸°ì ìê´ìì´ { //if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE; if(pInfo->m_nSizeOfGlassData != m_MemInfo.m_nSizeOfGlassData) return FALSE; if(pInfo->m_nSizeOfBlockData != m_MemInfo.m_nSizeOfBlockData) return FALSE; if(pInfo->m_nSizeOfCellData != m_MemInfo.m_nSizeOfCellData) return FALSE; if(pInfo->m_nSizeOfDefectData != m_MemInfo.m_nSizeOfDefectData) return FALSE; if(pInfo->m_nSizeOfStackData != m_MemInfo.m_nSizeOfStackData) return FALSE; if(pInfo->m_nCellMaxDataNum < m_pGlassData->m_nCellNum) return FALSE; if(pInfo->m_nDefectMaxDataNum < m_pGlassData->m_nDefectNum) return FALSE; if(pInfo->m_nStackMaxDataNum < m_pGlassData->m_nDefectNum) return FALSE; memcpy(&pData[pInfo->m_nGlassDataPoint], m_pGlassData, pInfo->m_nSizeOfGlassData* 1); memcpy(&pData[pInfo->m_nBlockDataPoint], m_pBlockData, pInfo->m_nSizeOfBlockData* 1); memcpy(&pData[pInfo->m_nCellDataPoint], m_pCellData, pInfo->m_nSizeOfCellData*m_pGlassData->m_nCellNum); memcpy(&pData[pInfo->m_nDefectDataPoint], m_pDefectData, pInfo->m_nSizeOfDefectData*m_pGlassData->m_nDefectNum); memcpy(&pData[pInfo->m_nStackDataPoint], m_pStackData, pInfo->m_nSizeOfStackData*m_pGlassData->m_nDefectNum); } else //if() //type old { if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE; if(pInfo->m_nSizeOfGlassData != m_MemInfo.m_nSizeOfGlassData) return FALSE; if(pInfo->m_nSizeOfBlockData != m_MemInfo.m_nSizeOfBlockData) return FALSE; if(pInfo->m_nSizeOfCellData != m_MemInfo.m_nSizeOfCellData) return FALSE; if(pInfo->m_nSizeOfDefectData != m_MemInfo.m_nSizeOfDefectData) return FALSE; memcpy(pData, m_pGlassRawData, sizeof(char)*pInfo->m_nGlassRawDataSize); } return TRUE; }; _grmGlassData* GetGlassData(){return m_pGlassData;}; _grmBlockData* GetBlockData(int nIndex){return &m_pBlockData[nIndex];}; _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; _grmDitMemInfo* GetMemInfo(){return &m_MemInfo;}; _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex]; }; protected: _grmDitMemInfo m_MemInfo; char* m_pGlassRawData; _grmGlassData* m_pGlassData; _grmBlockData* m_pBlockData; _grmCellData* m_pCellData; _grmDefectData* m_pDefectData; _grmDefectData* m_pStackData; size_t m_nGlassRawDataSize; int m_nGlassMaxDataNum; int m_nBlockMaxDataNum; int m_nCellMaxDataNum; int m_nDefectMaxDataNum; int m_nStackMaxDataNum; int m_nGlassDataPoint; int m_nBlockDataPoint; int m_nCellDataPoint; int m_nDefectDataPoint; int m_nStackDataPoint; int m_nSizeOfGlassData; int m_nSizeOfBlockData; int m_nSizeOfCellData; int m_nSizeOfDefectData; int m_nSizeOfStackData; private: bool m_bRefAlloc; }; ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
@@ -222,6 +222,10 @@ /* < KJG 20220225 - #3850 ADD Start >*/ char m_strRawMergeStepID[32]; /* < KJG 20220225 - #3850 ADD End >*/ /* < KMH 20220614 : #3957 ADD Start > */ char m_strRawDefectCode[RAW_CODE_MAX][5]; // 4ê¸ìë§ í기 /* < KMH 20220614 : #3957 ADD End > */ }; struct _grmBlockData { @@ -479,6 +483,7 @@ int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? char m_strCellName[32]; // ì ì´ë¦ /* < KMH 20220609 : #4183 ADD > */ short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) ReviewHistory/bin/ReviewHistroy.exeBinary files differ
ReviewSystem/ReviewSystem/DitGlassRawStruct.h
@@ -222,6 +222,10 @@ /* < KJG 20220225 - #3850 ADD Start >*/ char m_strRawMergeStepID[32]; /* < KJG 20220225 - #3850 ADD End >*/ /* < KMH 20220614 : #3957 ADD Start > */ char m_strRawDefectCode[RAW_CODE_MAX][5]; // 4ê¸ìë§ í기 /* < KMH 20220614 : #3957 ADD End > */ }; struct _grmBlockData { @@ -479,6 +483,7 @@ int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? char m_strCellName[32]; // ì ì´ë¦ /* < KMH 20220609 : #4183 ADD > */ short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) ReviewSystem/ReviewSystem/ReviewInterface.cpp
@@ -6626,12 +6626,11 @@ if (IsManualProcessMode()==FALSE) { return; } CGlassResult *pGlassResult = m_pDoc->GlassResult_GetCurrentGlassResult(); if(pGlassResult == NULL) return; if (pGlassResult == NULL) return; const SDefectFilter *pDefectFilter = m_pDoc->Etc_GetDefectFilter(); if(pDefectFilter == NULL) return; if (pDefectFilter == NULL) return; int nMarginX = nDefectMarginX; //5000; // um int nMarginY = nDefectMarginY; //5000; // um @@ -6639,6 +6638,9 @@ MapDefectResult *pMapReviewResult = pGlassResult->GetMapDefectResult(); BOOL bFind = FALSE; //Defect if (pMapReviewResult) { CDefectResult* pDefectResult = NULL; @@ -6646,28 +6648,28 @@ { pDefectResult = static_cast<CDefectResult*>(it->second); if(pDefectResult == NULL) continue; if (pDefectResult == NULL) continue; if (CDefectMap::FilterDefect(pDefectFilter, pDefectResult)==-1) continue; //if (CDefectMap::FilterDefect(pDefectFilter, pDefectResult) == -1) continue; if (pDefectResult->nUMOriginX >= nDefectPosX - nMarginX && pDefectResult->nUMOriginX <= nDefectPosX + nMarginX && pDefectResult->nUMOriginY >= nDefectPosY - nMarginY && if (pDefectResult->nUMOriginX >= nDefectPosX - nMarginX && pDefectResult->nUMOriginX <= nDefectPosX + nMarginX && pDefectResult->nUMOriginY >= nDefectPosY - nMarginY && pDefectResult->nUMOriginY <= nDefectPosY + nMarginY) { bFind = TRUE; m_pView->UpdateSelectDefectList(pDefectResult->nDefectIdx); m_pView->UpdateSelectDefectMap(pDefectResult); m_pView->UpdateSelectDefectInfoMap(pDefectResult); //taek 201214 ì íí ëíì ì 보를 ëê¸´ë¤ m_pView->UpdateSelectDefectInfo(pDefectResult->nDefectIdx); //taek 201214 ì íí ëíì ì¬ì§ ì 보를 ë긴ë¤. nSelectedModuleIndex = Module_GetSelectedModuleIndex(); // ì´ëí 모ë ì¸ë±ì¤ ììë´ê¸° (모ëë³ limit ë°ì´í° ì¬ì©) int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); int nGoModuleIndex = nSelectedModuleIndex; // ì í 모ëì ì ì¸í ëë¨¸ì§ íëì ìë if(nGoModuleIndex >= 0) if (nGoModuleIndex >= 0) { Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); } @@ -6677,21 +6679,145 @@ break; } if(IsManualProcessMode() != FALSE){ if (IsManualProcessMode() != FALSE) { Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera,pDefectResult ); Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, pDefectResult); return; } // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); // [2017:1:19]-[WEZASW] : WSI Manual Measurement ê¸°ë¥ ì¶ê° // [2017:1:19]-[WEZASW] : WSI Manual Measurement ê¸°ë¥ ì¶ê° if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) { WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, (int)pDefectResult->dUMCenterOriginX, (int)pDefectResult->dUMCenterOriginY, TRUE); } break; } } } //User if (bFind == FALSE) { CDefectResult* pDefectResult = NULL; VectorReviewResult *pVecReviewResult = pGlassResult->GetVectorUserResult(); if (pVecReviewResult == NULL) return; for (VectorReviewResultIt it = pVecReviewResult->begin(); it != pVecReviewResult->end(); it++) { CReviewResult *pReviewResult = static_cast<CReviewResult*>(&(*it)); for (VectorSReviewResultIt its = pReviewResult->m_vecSReviewResult.begin(); its != pReviewResult->m_vecSReviewResult.end(); its++) { if (its->nUMOriginX >= nDefectPosX - nMarginX && its->nUMOriginX <= nDefectPosX + nMarginX && its->nUMOriginY >= nDefectPosY - nMarginY && its->nUMOriginY <= nDefectPosY + nMarginY) { bFind = TRUE; pDefectResult = &(*its); m_pView->UpdateSelectDefectMap(pDefectResult); nSelectedModuleIndex = Module_GetSelectedModuleIndex(); // ì´ëí 모ë ì¸ë±ì¤ ììë´ê¸° (모ëë³ limit ë°ì´í° ì¬ì©) //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); int nGoModuleIndex = nSelectedModuleIndex; // ì í 모ëì ì ì¸í ëë¨¸ì§ íëì ìë if (nGoModuleIndex >= 0) { Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); } else { g_pLog->DisplayMessage(_T("[Error] Can't Move Motor to Home")); break; } if (IsManualProcessMode() != FALSE) { Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, NULL, 0, 0); return; } // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); // [2017:1:19]-[WEZASW] : WSI Manual Measurement ê¸°ë¥ ì¶ê° if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) { WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); } break; } } } } //UserWSI if (bFind == FALSE) { CDefectResult* pDefectResult = NULL; VectorReviewResult *pVecReviewResult = pGlassResult->GetVectorUserWsiResult(); if (pVecReviewResult == NULL) return; for (VectorReviewResultIt it = pVecReviewResult->begin(); it != pVecReviewResult->end(); it++) { CReviewResult *pReviewResult = static_cast<CReviewResult*>(&(*it)); for (VectorSReviewResultIt its = pReviewResult->m_vecSReviewResult.begin(); its != pReviewResult->m_vecSReviewResult.end(); its++) { if (its->nUMOriginX >= nDefectPosX - nMarginX && its->nUMOriginX <= nDefectPosX + nMarginX && its->nUMOriginY >= nDefectPosY - nMarginY && its->nUMOriginY <= nDefectPosY + nMarginY) { bFind = TRUE; pDefectResult = &(*its); m_pView->UpdateSelectDefectMap(pDefectResult); nSelectedModuleIndex = Module_GetSelectedModuleIndex(); // ì´ëí 모ë ì¸ë±ì¤ ììë´ê¸° (모ëë³ limit ë°ì´í° ì¬ì©) //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); int nGoModuleIndex = nSelectedModuleIndex; // ì í 모ëì ì ì¸í ëë¨¸ì§ íëì ìë if (nGoModuleIndex >= 0) { Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); } else { g_pLog->DisplayMessage(_T("[Error] Can't Move Motor to Home")); break; } if (IsManualProcessMode() != FALSE) { Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, NULL, 0, 0); return; } // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); // [2017:1:19]-[WEZASW] : WSI Manual Measurement ê¸°ë¥ ì¶ê° if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) { WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); } break; } } } } } @@ -7297,12 +7423,12 @@ if (dDefectPosX > dXposPlusLimitPos|| dDefectPosX<dXposMinusLimitPos|| dDefectPosY > dYposPlusLimitPos|| dDefectPosY < dYposMinusLimitPos) { IDNO == AfxMessageBox(_T("Limitì ì´ê³¼ íì¬ ê°ì ììµëë¤."), MB_YESNO | MB_ICONQUESTION); g_pLog->DisplayMessage(_T("Limit ì´ê³¼")); return FALSE; } // if (dDefectPosX > dXposPlusLimitPos|| dDefectPosX<dXposMinusLimitPos|| dDefectPosY > dYposPlusLimitPos|| dDefectPosY < dYposMinusLimitPos) // { // IDNO == AfxMessageBox(_T("Limitì ì´ê³¼ íì¬ ê°ì ììµëë¤."), MB_YESNO | MB_ICONQUESTION); // g_pLog->DisplayMessage(_T("Limit ì´ê³¼")); // return FALSE; // } double n1stGantryXpos, n1stGantryYpos, n2ndGantryXpos, n2ndGantryYpos; double dDistance,dCameraDistance; @@ -7589,44 +7715,48 @@ dPosX += MagOffsetX * 1000;//GlassOffsetX*1000+MagOffsetX*1000; dPosY+= MagOffsetY * 1000;//GlassOffsetY*1000+MagOffsetY*1000; double xpostemp = 0; double ypostemp = 0; GetOffSetValue(nModuleIndex, pDefectResult->nAOICameraIdx, pDefectResult->nAOIScanIdx, nDefectPosX/1000, xpostemp, ypostemp); xpostemp = floor(xpostemp * 1000); ypostemp = floor(ypostemp * 1000); //210127 if (m_pDoc->System_GetMotorInfo()->GetOriginDirection() == 2) if (pDefectResult != NULL) { if (nModuleIndex == 0) double xpostemp = 0; double ypostemp = 0; GetOffSetValue(nModuleIndex, pDefectResult->nAOICameraIdx, pDefectResult->nAOIScanIdx, nDefectPosX / 1000, xpostemp, ypostemp); xpostemp = floor(xpostemp * 1000); ypostemp = floor(ypostemp * 1000); //210127 if (m_pDoc->System_GetMotorInfo()->GetOriginDirection() == 2) { dPosX += xpostemp; dPosY += ypostemp; if (nModuleIndex == 0) { dPosX += xpostemp; dPosY += ypostemp; } else { dPosX += xpostemp * -1; dPosY += ypostemp; } } else { dPosX += xpostemp * -1; dPosY += ypostemp; if (nModuleIndex == 0) { dPosX += xpostemp; dPosY += ypostemp * -1; } else { dPosX += xpostemp * -1; dPosY += ypostemp * -1; } } } else { if (nModuleIndex == 0) { dPosX += xpostemp; dPosY += ypostemp * -1; } else { dPosX += xpostemp * -1; dPosY += ypostemp * -1; } } g_pLog->DisplayMessage(_T("[OFFSetOn]MotorOffset: %.3lf, %.3lf MagOffset: %.3lf, %.3lf Glass Pos : %.3lf, %.3lf"), xpostemp, ypostemp, MagOffsetX,MagOffsetY,dPosX/1000.0,dPosY/1000.0); //dPosX= ApplyMagAndGlassOffset(nModuleIndex,0,dPosX, dPosY); //dPosY= ApplyMagAndGlassOffset(nModuleIndex,1,dPosX, dPosY); g_pLog->DisplayMessage(_T("[OFFSetOn]MotorOffset: %.3lf, %.3lf MagOffset: %.3lf, %.3lf Glass Pos : %.3lf, %.3lf"), xpostemp, ypostemp, MagOffsetX, MagOffsetY, dPosX / 1000.0, dPosY / 1000.0); //dPosX= ApplyMagAndGlassOffset(nModuleIndex,0,dPosX, dPosY); //dPosY= ApplyMagAndGlassOffset(nModuleIndex,1,dPosX, dPosY); } } return Motor_CameraGo(nModuleIndex, dPosX/1000.0, dPosY/1000.0, bAutoSelectCamera, bGoEnd); ReviewSystem/ReviewSystem/SequenceProcessor.cpp
@@ -86,6 +86,7 @@ //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí ADD START m_bSimulationMode = FALSE; //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí ADD END m_bReviewComplete = FALSE; InitializeCriticalSection(&m_csProcessStatus); } ReviewSystem/ReviewSystem/SequenceProcessor.h
@@ -748,6 +748,8 @@ //WSI END ì²´í¬ë¥¼ ìí í¨ì 190725 chm int GetCheckWSIEnd(){return m_nCheckWSIEnd;}; // wsi end ì¬ë¶ void SetCheckWSIEnd(int nCheck){ m_nCheckWSIEnd=nCheck;}; //wsi end ì¬ë¶ int GetReviewComplete() { return m_bReviewComplete; } void SetReviewComplete(BOOL bValue) { m_bReviewComplete = bValue; } int GetWsiType(){return m_nWsiTyep;}; void SetWsiType(int i){ m_nWsiTyep=i;}; void SendWsiErrorAlarm(); @@ -808,4 +810,5 @@ //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí ADD START BOOL m_bSimulationMode; //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí ADD END BOOL m_bReviewComplete; }; ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -665,10 +665,12 @@ // m_pSP2P->ISP2P_GetWSIControl(1)->SendWsiAfmSafePosMove(); //} //Sleep(5000); if (GetProcessStatus() != ProcessReviewEnd_CPJT && GetProcessStatus() != ProcessReviewUnloding_CPJT) //if (GetProcessStatus() != ProcessReviewEnd_CPJT && GetProcessStatus() != ProcessReviewUnloding_CPJT) if (GetReviewComplete() == FALSE) { SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); SetReviewComplete(TRUE); } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); @@ -939,6 +941,8 @@ SetCheckWSIEnd(-1); //190726 SetWsiType(-1); //wsi reflow SetLastPointCheck(FALSE); SetReviewComplete(FALSE); bFileFind = FALSE; @@ -1745,7 +1749,8 @@ m_pDitGlassRaw->GetGlassData()->m_nReviewNum = m_pSP2P->ISP2P_GetReviewProcessor()->GetPlanReviewCount(); //SendDVDataToSignalControl(); if (GetLastPointCheck() == FALSE) //if (GetLastPointCheck() == FALSE) if (GetReviewComplete() == FALSE) { //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí MOD START if (GetSimulationMode() == FALSE) @@ -1753,6 +1758,7 @@ SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); SetReviewComplete(TRUE); } //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì ê¸°ë¥ ì ìí MOD END //original