From 12c02f064db12d6d94063bf6dd9e4eb80f4252b8 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 월, 11 10월 2021 15:30:00 +0900 Subject: [PATCH] Ongoing60 #3662 CF AOI Review 전설비 알람 발생 조치 - Review History File Mapping 해제 - Review Inner History 다운 현상 예외처리 추가 - Review End 시 Review 다운 현상 예외처리 추가 --- ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 202 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp new file mode 100644 index 0000000..223a7d1 --- /dev/null +++ b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp @@ -0,0 +1,202 @@ +#include "StdAfx.h" +#include "DitGlassRawServer.h" + +CDitGlassRawServer::CDitGlassRawServer(void) +: m_mxCommandProcess(FALSE, MUTEX_RAWMESSENGER) +{ + m_hMapBasicInfo = NULL; + m_hMapGlassData = NULL; + + m_pGlassRawInfo = NULL; + m_pGlassRawData = NULL; + + m_nLastCommandIdx = -1; +} + +CDitGlassRawServer::~CDitGlassRawServer(void) +{ + delete m_pGlassRawData; + delete m_pGlassRawInfo; + + if (m_hMapBasicInfo!=NULL) + { + ::UnmapViewOfFile(m_hMapBasicInfo); + m_pGlassRawInfo = NULL; + } + + if (m_hMapGlassData!=NULL) + { + ::UnmapViewOfFile(m_hMapGlassData); + m_pGlassRawData = NULL; + } +} + + +BOOL CDitGlassRawServer::CreateServer( int nCellNum /*= 100*/, int nDefectNum /*= 2000*/ ) +{ + if(CreateGlassRawInfo() == FALSE) + { + return FALSE; + } + + + if(sizeof(_grmGlassData) != m_pGlassRawInfo->m_nSizeOfGlassData + || 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_nSizeOfRawMergeData) + { + return FALSE; + } + + m_pGlassRawInfo->m_nGlassMaxDataNum = 1; + m_pGlassRawInfo->m_nBlockMaxDataNum = 1; + 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; + + m_pGlassRawInfo->m_nGlassDataPoint = nDataNum; + nDataNum += m_pGlassRawInfo->m_nSizeOfGlassData + m_pGlassRawInfo->m_nSizeOfGlassData%4; + + m_pGlassRawInfo->m_nBlockDataPoint = nDataNum; + nDataNum += m_pGlassRawInfo->m_nSizeOfBlockData + m_pGlassRawInfo->m_nSizeOfBlockData%4; + + m_pGlassRawInfo->m_nCellDataPoint = nDataNum; + nDataNum += (m_pGlassRawInfo->m_nSizeOfCellData + m_pGlassRawInfo->m_nSizeOfCellData%4)*nCellNum; + + m_pGlassRawInfo->m_nDefectDataPoint = nDataNum; + nDataNum += (m_pGlassRawInfo->m_nSizeOfDefectData + m_pGlassRawInfo->m_nSizeOfDefectData%4)*nDefectNum; + + 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; + } + + + if(CreateGlassRawData() == FALSE) + { + return FALSE; + } + + return TRUE; +} + + +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; +// } + + //0으로 초기화 + //if(bCreateMem && m_pGlassRawInfo) + //_grmDitGlassRawInfo SemiServer; + m_pGlassRawInfo = new _grmDitGlassRawInfo; + if (m_pGlassRawInfo) + { + ZeroMemory(m_pGlassRawInfo,sizeof(_grmDitGlassRawInfo)); + + m_pGlassRawInfo->m_nSizeOfGlassData = sizeof(_grmGlassData) ; + m_pGlassRawInfo->m_nSizeOfBlockData = sizeof(_grmBlockData); + 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; + } + + //} + + + + return TRUE; +} + +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); +// } + + + //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