From 1fd49a571338b6c946bb05dcdf59ec1468df5c50 Mon Sep 17 00:00:00 2001 From: SWK <sungwk82@diteam.co.kr> Date: 목, 22 12월 2022 12:31:43 +0900 Subject: [PATCH] ongoing50 #4403 CF AOI Reveiw TACT 지연 개선 1. 일정 시간 유지 신호 처리 시 동기화로 인한 불합리 개선 - 일정 시간 유지 필요 시 스래드풀 작업큐를 이용하여 루프처리 방식으로 변경 - 유지 신호 처리 중 출력 신호 발생 시 작업큐에 등록하여 유지 신호와 결합하여 출력 처리 2. FDC 보고 항목 중 SW 버전 체크 루프 불합리 개선 - 프로그램 시작 시 연동 프로그램 버전 체크 간 실행되지 않는 프로그램이 있는 경우 무한 루프 발생 - 무한 루프로 인한 CPU 점유 상승->루프 중간 Sleep추가 및 코드 간소화 3. 로그 메시지에 시간 ms단위 추가(황만수SM 작업 내역 병합) --- ReviewHistory/ReveiwHistory/GlassRawBase.cpp | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 131 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/ReveiwHistory/GlassRawBase.cpp b/ReviewHistory/ReveiwHistory/GlassRawBase.cpp new file mode 100644 index 0000000..b8c7ebe --- /dev/null +++ b/ReviewHistory/ReveiwHistory/GlassRawBase.cpp @@ -0,0 +1,131 @@ +#include "StdAfx.h" +#include "GlassRawBase.h" + +#include "akLoggerExt.h" + +CGlassRawBase::CGlassRawBase(void) +{ +} + +CGlassRawBase::~CGlassRawBase(void) +{ +} + +BOOL CGlassRawBase::WriteBinFile( CgrmGlassRawData* pData ) +{ + AKLOG("WriteBinFile Start"); + CString strFileName; + strFileName.Format("%s\\%s", pData->GetGlassData()->m_strPath, pData->GetGlassData()->m_strFileName); + FILE* pf = fopen(strFileName.GetBuffer(0), "wb"); + if(pf) + { + fwrite(pData->GetMemInfo(), sizeof(_grmDitMemInfo), 1, pf); + + fwrite(pData->GetGlassData(), pData->GetMemInfo()->m_nSizeOfGlassData, sizeof(char), pf); + + for(int i=0; i<pData->GetGlassData()->m_nCellNum; i++) + { + fwrite(pData->GetCellData(i), pData->GetMemInfo()->m_nSizeOfCellData, sizeof(char), pf); + } + + for(int i=0; i<pData->GetGlassData()->m_nDefectNum; i++) + { + fwrite(pData->GetDefectData(i), pData->GetMemInfo()->m_nSizeOfDefectData, sizeof(char), pf); + } + + fclose(pf); + } + else + { + AKLOG("WriteBinFile Fail"); + return FALSE; + } + AKLOG("WriteBinFile Finish"); + return TRUE; +} + +BOOL CGlassRawBase::ReadBinFile( CgrmGlassRawData* pData ) +{ + CString strFileName; + strFileName.Format("%s\\%s", pData->GetGlassData()->m_strPath, pData->GetGlassData()->m_strFileName); + FILE* pf = fopen(strFileName.GetBuffer(0), "rb"); + if(pf) + { + _grmDitMemInfo MemInfo; + fread(&MemInfo, sizeof(_grmDitMemInfo), 1, pf); + + //pData->ImportGlassRaw(pData->GetMemInfo(), NULL); + BOOL bFileFormDiff = FALSE; + bFileFormDiff = FALSE; + { + if(pData->GetMemInfo()->m_nSizeOfGlassData != MemInfo.m_nSizeOfGlassData) bFileFormDiff |= TRUE; + if(pData->GetMemInfo()->m_nSizeOfBlockData != MemInfo.m_nSizeOfBlockData) bFileFormDiff |= TRUE; + if(pData->GetMemInfo()->m_nSizeOfCellData != MemInfo.m_nSizeOfCellData) bFileFormDiff |= TRUE; + if(pData->GetMemInfo()->m_nSizeOfDefectData != MemInfo.m_nSizeOfDefectData) bFileFormDiff |= TRUE; + + //if(pData->m_nCellMaxDataNum < m_pGlassData->m_nCellNum) return FALSE; + //if(pData->m_nDefectMaxDataNum < m_pGlassData->m_nDefectNum) return FALSE; + + if(bFileFormDiff) {fclose(pf); return FALSE;} + } + + fread(pData->GetGlassData(), pData->GetMemInfo()->m_nSizeOfGlassData, sizeof(char), pf); + + bFileFormDiff = FALSE; + { + if(pData->GetMemInfo()->m_nCellMaxDataNum < pData->GetGlassData()->m_nCellNum) bFileFormDiff |= TRUE; + if(pData->GetMemInfo()->m_nDefectMaxDataNum < pData->GetGlassData()->m_nDefectNum) bFileFormDiff |= TRUE; + + if(bFileFormDiff) {fclose(pf); return FALSE;} + } + + for(int i=0; i<pData->GetGlassData()->m_nCellNum; i++) + { + fread(pData->GetCellData(i), pData->GetMemInfo()->m_nSizeOfCellData, sizeof(char), pf); + } + + for(int i=0; i<pData->GetGlassData()->m_nDefectNum; i++) + { + fread(pData->GetDefectData(i), pData->GetMemInfo()->m_nSizeOfDefectData, sizeof(char), pf); + } + + fclose(pf); + } + else + { + return FALSE; + } + + return TRUE; +} + +BOOL CGlassRawBase::ReviewWriteBin(CgrmGlassRawData* pData) +{ + CString strFileName; + strFileName.Format("D:\\DIT_ResultData\\RawBin\\%s", pData->GetGlassData()->m_strFileName); + FILE* pf = fopen(strFileName.GetBuffer(0), "wb"); + if (pf) + { + fwrite(pData->GetMemInfo(), sizeof(_grmDitMemInfo), 1, pf); + + fwrite(pData->GetGlassData(), pData->GetMemInfo()->m_nSizeOfGlassData, sizeof(char), pf); + + for (int i = 0; i < pData->GetGlassData()->m_nCellNum; i++) + { + fwrite(pData->GetCellData(i), pData->GetMemInfo()->m_nSizeOfCellData, sizeof(char), pf); + } + + for (int i = 0; i < pData->GetGlassData()->m_nDefectNum; i++) + { + fwrite(pData->GetDefectData(i), pData->GetMemInfo()->m_nSizeOfDefectData, sizeof(char), pf); + } + + fclose(pf); + } + else + { + return FALSE; + } + + return TRUE; +} \ No newline at end of file -- Gitblit v1.9.3