From 4114d380bd594385fa6f10bb36a9eef4d19e8db1 Mon Sep 17 00:00:00 2001 From: kojingeun <diteam.co.kr> Date: 월, 05 6월 2023 23:33:58 +0900 Subject: [PATCH] Ongoing50 #4517 CF AOI Review 결과 파일 찾기 실패 개선 1. Find Bin File 찾는 Library 변경 - CRT _findfirsti64 / _findnexti64 -> C++17 Filesystem directory_iterator - 파일 탐색 시간 20k Files(80GB) 1sec 소요 --- 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