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