From ea59e5356f149db6e6e2e3f063aa5ee10a44b68e Mon Sep 17 00:00:00 2001
From: KEJ <kimeungju@diteam.co.kr>
Date: 금, 24 11월 2023 17:39:42 +0900
Subject: [PATCH] Ongoing80 #4669 CF AOI Review Glass Grade PT판정 처리 추가  1. Glass, Cell PT 판정 추가.  2. GlassRawMessenger 데이터 추가  3. GlassRawMessenger 동기화

---
 DitGlassRawMessenger/Extern/DitGlassRawStruct.h |  312 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 184 insertions(+), 128 deletions(-)

diff --git a/DitGlassRawMessenger/Extern/DitGlassRawStruct.h b/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
index e84fb29..a1c4a04 100644
--- a/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
+++ b/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
@@ -8,6 +8,8 @@
 
 #define RAWMESSENGER_MAXCAMNUM 30
 #define RAWMESSENGER_MAXSCANNUM 20
+#define RAWMESSENGER_MAXHLINUM 8
+#define RAW_CODE_MAX 10
 
 #define MAX_ZONE_NUM 16
 
@@ -47,7 +49,7 @@
 		memset(this, 0, sizeof(_grmGlassData));
 	}
 
-	//Glass 占쏙옙占쏙옙
+	//Glass 정보
 	char m_strFileName[64];
 	char m_strPath[256];
 
@@ -56,12 +58,17 @@
 
 	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_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];				
@@ -74,7 +81,7 @@
 	CTime	m_tmReviewLoading;
 	CTime	m_tmReviewEnd;
 
-	//占썩본 占쏙옙占쏙옙占쏙옙占쏙옙
+	//기본 물류정보
 	char m_strGlassID[32];				//Glass ID
 	char m_strPPID[32];					
 	char m_strEPPID[32];				
@@ -91,7 +98,7 @@
 	char m_strVCRGlassID[32];
 
 
-	//占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙
+	//결함 갯수 관리 변수
 	int			m_nDefectNumSizeSmall;
 	int			m_nDefectNumSizeMid;
 	int			m_nDefectNumSizeLarge;
@@ -110,6 +117,9 @@
 	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;
@@ -119,21 +129,24 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
-
+	int			m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/ 
+	/*< 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]
+	//카메라/스캔 정보 [김태현 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];
+	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]
+	//얼라인 정보 um[김태현 2018/12/10]
 	double	m_nAlignCcdTheta;
 	double	m_nAlignCcdShitftX;
 	double	m_nAlignCcdShitftY;
@@ -147,7 +160,7 @@
 	char	m_strAlignSecond[64];
 // 	char	m_strAlignPath[256];
 
-	//CSOT占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/12/5]
+	//CSOT용 물류 정보 [김태현 2018/12/5]
 	char m_strCassetteSequenceNo[16];
 	char m_strOwnerCode[16];			//2. OWNER_CODE
 	char m_strOwnerType[16];			//3. OWNER_TYPE
@@ -162,7 +175,7 @@
 	char m_strGroupID[16];				//14.GROUP_ID
 	char m_cAutoSampleFlag;				//15.AUTOSAMPLEFLAG
 
-	// CPRJ占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙
+	// CPRJ용 물류 정보
 	char m_strProdType[3];
 	char m_strBatchID[13];
 	char m_strPairHPanelID[13];
@@ -174,7 +187,7 @@
 	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];
@@ -188,19 +201,32 @@
 	BYTE m_nGlassDataBitSignal[4];
 	bool m_bJob_end;  
 
-	//201217 CJH - 占쏙옙占쏙옙 Defect Review 占쏙옙占쏙옙
+	//201217 CJH - 찍은 Defect Review 개수
 	int m_nReviewNum;
-	//201221 CJH - 占식쏙옙占쏙옙 Stack 占쏙옙占�
+	//201221 CJH - 파싱한 Stack 결과
 	int m_nStackNum;
 	BOOL m_bStackRead;
 
-	//210203 CJH - CutOff 占쏙옙占� 占쏙옙占쏙옙 占쏙옙
+	/*< 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 占쏙옙占쏙옙 占쌩곤옙
+	//210323 CJH - Server/Frame Shrink 정보 추가
 	char m_strShrinked[6];
-	//210326 CJH - RAW 占쌉뤄옙 Defect 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙肉⑼옙占�
+	//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 >*/
 
+	/* < KMH 20220614 : #3957 ADD Start > */
+	char m_strRawDefectCode[RAW_CODE_MAX][5];	// 4글자만 표기
+	/* < KMH 20220614 : #3957 ADD End > */
 };
 struct _grmBlockData
 {
@@ -222,7 +248,7 @@
 	}
 	int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; };
 	int						m_nCellID;							//1. PANEL_ID
-	short					m_nModelIdx;				// 占쏙옙 占쏙옙째 占쏙옙占싸곤옙?
+	short					m_nModelIdx;				// 몇 번째 모델인가?
 
 	char					m_strCellName[32];
 	int						m_rectCellLeft;
@@ -235,7 +261,7 @@
 	int						m_nJudgeGlade;
 
 
-	//占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙
+	//결함 갯수 관리 변수
 	int			m_nDefectNumSizeSmall;
 	int			m_nDefectNumSizeMid;
 	int			m_nDefectNumSizeLarge;
@@ -254,12 +280,20 @@
 	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
+	//kyh Mura Data 추가 0622
 	char		m_strCorner_Gray_0[12];
 	char		m_strAvgAmp_0[12];
 	char		m_strFFTVar_0[12];
@@ -269,7 +303,7 @@
 
 	char		m_strAvgGray_1[12];
 	char		m_strPortion_1[12];
-	//kyh Mura Data 占쌩곤옙 0622
+	//kyh Mura Data 추가 0622
 	char		m_strCorner_Gray_1[12];
 	char		m_strAvgAmp_1[12];
 	char		m_strFFTVar_1[12];
@@ -279,7 +313,7 @@
 
 	char		m_strAvgGray_2[12];
 	char		m_strPortion_2[12];
-	//kyh Mura Data 占쌩곤옙 0622
+	//kyh Mura Data 추가 0622
 	char		m_strCorner_Gray_2[12];
 	char		m_strAvgAmp_2[12];
 	char		m_strFFTVar_2[12];
@@ -289,7 +323,7 @@
 
 	char		m_strAvgGray_3[12];
 	char		m_strPortion_3[12];
-	//kyh Mura Data 占쌩곤옙 0622
+	//kyh Mura Data 추가 0622
 	char		m_strCorner_Gray_3[12];
 	char		m_strAvgAmp_3[12];
 	char		m_strFFTVar_3[12];
@@ -305,20 +339,23 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
-
+	int			m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/
+	/*< 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占쏙옙 占쏙옙
+	// Filtering된 Stack별 수
 	int			m_nDefectTDCount;
 	int			m_nDefectSDCount;
 	int			m_nDefectPDCount;
 	int			m_nDefectSPCount;
 
-	// Gate/Data 占쏙옙 占쏙옙占쏙옙
+	// Gate/Data 총 갯수
 	int			m_nGateNum;
 	int			m_nDataNum;
 
-	// 210129 CJH - Cell Origin 占쏙옙占쏙옙
+	// 210129 CJH - Cell Origin 방향
 	int			m_nCellXDir;
 	int			m_nCellYDir;
 };
@@ -331,10 +368,10 @@
 	}
 
 	//////////////////////////////////////////////////////////////////////////
-	//占쏙옙占썩서 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/1/19]
+	//여기서 부터 리뷰 영역 [김태현 2019/1/19]
 	ditRaw::ReviewPlanType			m_nPlanType	;	
 	int			m_nResultCode;  //0:None, 1:Success
-	int			m_nShotIndex; //占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/12/5]
+	int			m_nShotIndex; //리뷰 찍은 순번 [김태현 2018/12/5]
 	int			m_nModuleIndex;
 	int			m_nMagnificIndex;
 	float		m_fManification;
@@ -343,15 +380,15 @@
 	char		m_strRevImagePath[256];
 
 	//////////////////////////////////////////////////////////////////////////
-	// Measure 占쏙옙占쏙옙
+	// 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占쏙옙占쏙옙
+	// WSI영역
 	int			m_nWsi_ResultCode; //0:None, 1:Success
-	int			m_nWsi_Type;									// 占쌉몌옙 / 占쏙옙占쏙옙
+	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]; 
@@ -359,14 +396,14 @@
 	int			m_nWsi_pReflowResultData[8];
 	double		m_dWsi_DamDistance;
 
-	double		m_dWsiMmMotorX;								// WSI 占쏙옙占쏙옙 占쏙옙표 20180223 HJH
+	double		m_dWsiMmMotorX;								// WSI 모터 좌표 20180223 HJH
 	double		m_dWsiMmMotorY;
-	float		m_fWsiManification;							// WSI 占쏙옙占쏙옙
+	float		m_fWsiManification;							// WSI 배율
 
 	//////////////////////////////////////////////////////////////////////////
-	// Reflow 占쏙옙占쏙옙	
+	// 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
+	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;
@@ -382,108 +419,116 @@
 	short			m_nDefectID;
 	short			m_nCameraID;
 	short			m_nScanIdx;
-	//short			m_nDefectIdx;				// 카占쌨라에쇽옙占쏙옙 占쏙옙占쏙옙 占싸듸옙占쏙옙
-	int				m_nDefectIdx;				// 카占쌨라에쇽옙占쏙옙 占쏙옙占쏙옙 占싸듸옙占쏙옙 201207 CJH - 占쌘몌옙 占쏙옙 占쏙옙침. int占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
+	//short			m_nDefectIdx;				// 카메라에서의 결함 인덱스
+	int				m_nDefectIdx;				// 카메라에서의 결함 인덱스 201207 CJH - 자릿 수 넘침. int형으로 변경
 
-	int				m_nPixelConv;				// pixel 占쏙옙占쏙옙 占쏙옙표
-	int				m_nPixelScan;				// pixel 占쏙옙占쏙옙 占쏙옙표
+	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
+	/* < KMH 20220707 : #4230 MOD Start > */
+	// 범위 벗어나서 음수로 표기되면 D_Col Fail
+	//short							m_nPixelSize;				// 결함크기		---------------------------------PS
+	int					m_nPixelSize;				// 결함크기		---------------------------------PS
+	/* < KMH 20220707 : #4230 MOD End > */
+	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
+	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_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 占쏙옙占쏙옙 占싫쇽옙
+	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_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
+	//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;					// 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占썹각占쏙옙.
+	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 占쏙옙占쏙옙 占싸듸옙占쏙옙
+	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_nUMCellX;					// 셀 원점 기준 x 좌표
+	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라인(얼라인 보정 후)
+	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;			// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙크 占쏙옙 占쏙옙占쏙옙 큰 占쏙옙占쏙옙占쏙옙 크占쏙옙.
+	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_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占쏙옙 占쏙옙占쏙옙占싹댐옙 占싸듸옙占쏙옙.
+	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];				// 占쏙옙占쌍억옙占싱듸옙
+/* < KMH 20220712 : #4230 MOD Start > */
+	//	char			m_strStackFirst[60];			// Stack Step. //201221 CJH - 최대 사이즈 60bytes
+	char			m_strStackFirst[400];			// Stack Step. // 400 bytes 확장요청 : SDC 채승석P
+/* < KMH 20220712 : #4230 MOD End > */
+	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;				// 占쏙옙占쏙옙 占쏙옙占쏙옙
+	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_nDefectMerge;		// 현재 디펙의 머지 여부
 
 
 	int				m_nPixelSizeOrigin;
 	int				m_nScratchRatio;
-	int				m_nDensity;			// 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싻듸옙 [2017.8.2 bhs]
+	int				m_nDensity;			// 원형 결함 구분을 위한 밀도 [2017.8.2 bhs]
 
 	char			m_strDefectName[16];
 	char			m_strDefectType[16];
@@ -491,16 +536,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)
+	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처占쏙옙
+	short			m_nHliLevelIdx;				// 몇 번째 레벨(채널)인가?
+	int				m_nHliLayers;				// 해당결함에 포함된 레이어 bit처리
 
-	BOOL			m_bShrinked;				//210323 CJH - Frame Shrink 占쏙옙占쏙옙 占쌩곤옙
+	BOOL			m_bShrinked;				//210323 CJH - Frame Shrink 정보 추가
 
 	char			m_strAoiImagePath[255];
 	char			m_strReviewImagePath[255];
@@ -509,9 +554,11 @@
 	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 >*/
 
-
-	//占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/1/19]
 	_grmDefectReviewData m_ReviewDefect;
 };
 
@@ -556,32 +603,41 @@
 
 struct _grmDitMemInfo
 {
-	//占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/12]
+	//공유 메모리 생성할 공간 결정 [김태현 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]
+	//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)占쏙옙 처占쏙옙 占싹뤄옙 占쏙옙 占쏙옙占�
+	emAOIProcStep m_ClientProcStep; //AOI, Review가 보낸 명령
+	emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)가 처리 완료 한 명령
 };
 
 class CgrmGlassRawData
@@ -668,7 +724,7 @@
 	{
 		if(pInfo == NULL || pData == NULL) return FALSE;
 
-		if(1) //new type //占쌨몌옙 占쏙옙 占쏙옙占쏙옙 크占썩에 占쏙옙占쏙옙占쏙옙占� 
+		if(1) //new type //메모리 총 공간 크기에 상관없이 
 		{
 			//if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE;
 

--
Gitblit v1.9.3