From e5fa774d622d6852fe8e1f033045aed221649108 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 금, 15 10월 2021 13:24:54 +0900
Subject: [PATCH] Ongoing80 #3662 CF AOI Review 전설비 알람 발생 조치

---
 ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp |  151 ++++++++++++++++++++++++++++----------------------
 1 files changed, 85 insertions(+), 66 deletions(-)

diff --git a/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
index 85f4cab..223a7d1 100644
--- a/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
+++ b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
@@ -15,6 +15,9 @@
 
 CDitGlassRawServer::~CDitGlassRawServer(void)
 {
+	delete m_pGlassRawData;
+	delete m_pGlassRawInfo;
+
 	if (m_hMapBasicInfo!=NULL)
 	{
 		::UnmapViewOfFile(m_hMapBasicInfo);
@@ -41,7 +44,8 @@
 		|| sizeof(_grmBlockData) != m_pGlassRawInfo->m_nSizeOfBlockData
 		|| sizeof(_grmCellData) != m_pGlassRawInfo->m_nSizeOfCellData
 		|| sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfDefectData
-		|| sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData)
+		|| sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData
+		|| sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfRawMergeData)
 	{
 		return FALSE;
 	}
@@ -51,7 +55,8 @@
 	m_pGlassRawInfo->m_nCellMaxDataNum = nCellNum;
 	m_pGlassRawInfo->m_nDefectMaxDataNum = nDefectNum;
 	m_pGlassRawInfo->m_nStackMaxDataNum = nDefectNum;
-	
+	m_pGlassRawInfo->m_nRawMergeMaxDataNum = nDefectNum;
+
 	m_pGlassRawInfo->m_nGlassRawDataSize;
 	{
 		int nDataNum = 0;
@@ -71,6 +76,9 @@
 		m_pGlassRawInfo->m_nStackDataPoint = nDataNum;
 		nDataNum += (m_pGlassRawInfo->m_nSizeOfStackData + m_pGlassRawInfo->m_nSizeOfStackData % 4)*nDefectNum;
 		
+		m_pGlassRawInfo->m_nRawMergeDataPoint = nDataNum;
+		nDataNum += (m_pGlassRawInfo->m_nSizeOfRawMergeData + m_pGlassRawInfo->m_nSizeOfRawMergeData % 4)*nDefectNum;
+
 		m_pGlassRawInfo->m_nGlassRawDataSize = nDataNum;
 	}
 	
@@ -86,37 +94,40 @@
 
 BOOL CDitGlassRawServer::CreateGlassRawInfo()
 {
-	if(m_hMapBasicInfo == NULL)
-	{
-		BOOL bCreateMem = TRUE;
-
-		m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
-			, 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
-
-		if (::GetLastError() == ERROR_ALREADY_EXISTS)
-		{
-			m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
-			bCreateMem = FALSE;
-		}
-
-		if (m_hMapBasicInfo)
-		{
-			m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
-		}
-
-		if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
-		{
-			if (m_hMapBasicInfo!=NULL)
-			{
-				::UnmapViewOfFile(m_hMapBasicInfo);
-				m_pGlassRawInfo = NULL;
-			}
-			m_pGlassRawInfo = NULL;
-			return FALSE;
-		}
+// 	if(m_hMapBasicInfo == NULL)
+// 	{
+// 		BOOL bCreateMem = TRUE;
+// 
+// 		m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
+// 			, 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
+// 
+// 		if (::GetLastError() == ERROR_ALREADY_EXISTS)
+// 		{
+// 			m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
+// 			bCreateMem = FALSE;
+// 		}
+// 
+// 		if (m_hMapBasicInfo)
+// 		{
+// 			m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
+// 		}
+// 
+// 		if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
+// 		{
+// 			if (m_hMapBasicInfo!=NULL)
+// 			{
+// 				::UnmapViewOfFile(m_hMapBasicInfo);
+// 				m_pGlassRawInfo = NULL;
+// 			}
+// 			m_pGlassRawInfo = NULL;
+// 			return FALSE;
+// 		}
 
 		//0으로 초기화
-		if(bCreateMem && m_pGlassRawInfo)
+		//if(bCreateMem && m_pGlassRawInfo)
+		//_grmDitGlassRawInfo SemiServer;
+	m_pGlassRawInfo = new _grmDitGlassRawInfo;
+		if (m_pGlassRawInfo)
 		{
 			ZeroMemory(m_pGlassRawInfo,sizeof(_grmDitGlassRawInfo));
 			
@@ -125,11 +136,12 @@
 			m_pGlassRawInfo->m_nSizeOfCellData = sizeof(_grmCellData);
 			m_pGlassRawInfo->m_nSizeOfDefectData = sizeof(_grmDefectData);
 			m_pGlassRawInfo->m_nSizeOfStackData = sizeof(_grmDefectData);
+			m_pGlassRawInfo->m_nSizeOfRawMergeData = sizeof(_grmDefectData);
 
 			int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4;
 		}
 		
-	}
+	//}
 
 	
 
@@ -138,46 +150,53 @@
 
 BOOL CDitGlassRawServer::CreateGlassRawData()
 {
-	int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
-
-	if(m_hMapGlassData == NULL)
-	{
-		BOOL bCreateMem = TRUE;
-
-		m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
-			, 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
-
-		if (::GetLastError() == ERROR_ALREADY_EXISTS)
-		{
-			m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
-			bCreateMem = FALSE;
-		}
-
-		if (m_hMapGlassData)
-		{
-			m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
-		}
-
-		if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
-		{
-			if (m_hMapGlassData != NULL)
-			{
-				::UnmapViewOfFile(m_hMapGlassData);
-				m_pGlassRawData = NULL;
-			}
-			m_pGlassRawData = NULL;
-			return FALSE;
-		}
-
-		//0으로 초기화
-		if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
-	}
+ 	int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
+// 
+// 	if(m_hMapGlassData == NULL)
+// 	{
+// 		BOOL bCreateMem = TRUE;
+// 
+// 		m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
+// 			, 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
+// 
+// 		if (::GetLastError() == ERROR_ALREADY_EXISTS)
+// 		{
+// 			m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
+// 			bCreateMem = FALSE;
+// 		}
+// 
+// 		if (m_hMapGlassData)
+// 		{
+// 			m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
+// 		}
+// 
+// 		if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
+// 		{
+// 			if (m_hMapGlassData != NULL)
+// 			{
+// 				::UnmapViewOfFile(m_hMapGlassData);
+// 				m_pGlassRawData = NULL;
+// 			}
+// 			m_pGlassRawData = NULL;
+// 			return FALSE;
+// 		}
+// 
+// 		//0으로 초기화
+// 		if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
+// 	}
 	
+
+	 //0으로 초기화
+	m_pGlassRawData = new char[nGlassRawSharedSize];
+ 	if(m_pGlassRawData) 
+		ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
+
 	m_pGlassData  = (_grmGlassData*)&m_pGlassRawData[m_pGlassRawInfo->m_nGlassDataPoint];
 	m_pBlockData  = (_grmBlockData*)&m_pGlassRawData[m_pGlassRawInfo->m_nBlockDataPoint];
 	m_pCellData   = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint];
 	m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint];
 	m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint];
+	m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint];
 
 	return TRUE;
 }

--
Gitblit v1.9.3