SDC C-Project CF Review 프로그램
LYW
2021-09-27 b9b6752e83c701cc67241923d2b74dc3a963d243
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;
}