From 9cbd9e554f9956b3b945b51602f1d4a3fa0353e1 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 목, 08 7월 2021 17:24:24 +0900 Subject: [PATCH] Ongoing60 #3486 CF AOI Review Review History 프로그램 테스트 및 적용 --- ReviewHistory/ReveiwHistory/DitGlassRawStruct.h | 745 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 745 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h b/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h new file mode 100644 index 0000000..e84fb29 --- /dev/null +++ b/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h @@ -0,0 +1,745 @@ +#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 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; + + //占쏙옙占쏙옙占쏙옙占쏙옙 + 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; + + int m_nDefectNumJudgeOKWhite; + int m_nDefectNumJudgeOKBlack; + int m_nDefectNumJudgeNG; + int m_nDefectNumJudgeRW; + int m_nDefectNumJudgeRP; + int m_nDefectNumJudgeRV; + int m_nDefectNumJudgeTR; + int m_nDefectNumJudgePR; + + 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]; + unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; + unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; + + //占쏙옙占쏙옙占� 占쏙옙占쏙옙 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]; + + //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; + + //210203 CJH - CutOff 占쏙옙占� 占쏙옙占쏙옙 占쏙옙 + int m_nCutOffDefectNum; + //210323 CJH - Server/Frame Shrink 占쏙옙占쏙옙 占쌩곤옙 + char m_strShrinked[6]; + //210326 CJH - RAW 占쌉뤄옙 Defect 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙肉⑼옙占� + BOOL m_bRawCutoff; + +}; +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; + + //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; + + 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; + + + //占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/1/19] + _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; + + //Char 占쏙옙占쏙옙 占쌘료가 占쌍댐옙 占쏙옙占쏙옙 占쏙옙치 [占쏙옙占쏙옙占쏙옙 2018/11/12] + 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; +}; +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; +}; \ No newline at end of file -- Gitblit v1.9.3