»õ ÆÄÀÏ |
| | |
| | | #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 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*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]; |
| | | |
| | | //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; |
| | | |
| | | int m_nRawMergeNum; |
| | | BOOL m_bRawMergeRead; |
| | | //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; |
| | | |
| | | |
| | | _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; |
| | | int m_nRawMergeMaxDataNum; |
| | | |
| | | //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] |
| | | int m_nGlassDataPoint; |
| | | int m_nBlockDataPoint; |
| | | int m_nCellDataPoint; |
| | | int m_nDefectDataPoint; |
| | | int m_nStackDataPoint; |
| | | int m_nRawMergeDataPoint; |
| | | |
| | | int m_nSizeOfGlassData; |
| | | int m_nSizeOfBlockData; |
| | | int m_nSizeOfCellData; |
| | | int m_nSizeOfDefectData; |
| | | int m_nSizeOfStackData; |
| | | int m_nSizeOfRawMergeData; |
| | | }; |
| | | 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; |
| | | }; |