From 3ce48f6dbeb537e252edb0d62c88a28796e36674 Mon Sep 17 00:00:00 2001 From: SWK <sungwk82@diteam.co.kr> Date: 월, 26 12월 2022 15:04:42 +0900 Subject: [PATCH] ongoing60 #4403 CF AOI Review TACT 지연 개선 1. 신호 출력 방식 재개선 - 유지 시간이 없는 신호는 바로 출력 진행하도록 변경 2. 불필요 Delay 제거 및 시퀀스 변경 - 얼라인 측정 종료 처리 간 제어 신호 먼저 출력 후 카메라 Stop으로 변경 - 물류 정보 읽기 처리 후 1000ms Delay 삭제 - 얼라인 측정 시작(카메라 Live Start) 후 Delay 300ms -> 100ms(이미지 들어오는 시간 확보 필요) - ReadRawFile 처리 시작 전 500ms Delay 삭제 - Path Scheduling 완료 후 Review Ready 신호 출력 전 1000ms Delay 삭제 3. 버그 수정 - 이미지 저장 경로 생성 간 예외 처리 부분 버그 수정 4. 로그 시간 출력 불합리 개선 - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음 - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경 --- 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