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/AnaResultFile.cpp |  140 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/ReviewHistory/ReveiwHistory/AnaResultFile.cpp b/ReviewHistory/ReveiwHistory/AnaResultFile.cpp
new file mode 100644
index 0000000..bc0cf34
--- /dev/null
+++ b/ReviewHistory/ReveiwHistory/AnaResultFile.cpp
@@ -0,0 +1,140 @@
+#include "StdAfx.h"
+#include "AnaResultFile.h"
+#include "akCore/akFileDB.h"
+#include "akLoggerExt.h"
+#ifdef _DEBUG
+#undef THIS_FILE
+static char THIS_FILE[]=__FILE__;
+#define new DEBUG_NEW
+#endif
+
+CAnaResultFile::CAnaResultFile(void)
+{
+}
+
+CAnaResultFile::~CAnaResultFile(void)
+{
+}
+
+BOOL CAnaResultFile::MakeAnaFile(CgrmGlassRawData* pData)
+{
+	//return TRUE;
+
+	CString strFilePathName;
+	strFilePathName.Format("%s\\%sana", pData->GetGlassData()->m_strPath, pData->GetGlassData()->m_strFileName);
+
+	FILE* pf = fopen(strFilePathName.GetBuffer(0), "w");
+	if (pf == NULL)
+	{
+		AKLOG("MakeAOIFile Fail : [%s]", strFilePathName.GetBuffer(0));
+		return FALSE;
+	}
+
+	fprintf(pf, "%s\n", pData->GetGlassData()->m_strGlassID);
+	fprintf(pf, "m_strImageName, m_strDefectCode, UMCenterAlignX, UMCenterAlignY, m_nLevelSrcMin, m_nLevelSrcMax, m_nLevelSrcAvg, m_nLevelRefMin, m_nLevelRefMax, m_nLevelRefAvg, m_nLevelDiffMin, m_nLevelDiffMax, m_nLevelDiffAvg");
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",Zone%02d", i);
+	//210123 CJH - Zone별 min, max, avg 값 표기
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneDiffMin%02d", i);
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneDiffMax%02d", i);
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneDiffAvg%02d", i);
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMin%02d", i);
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMax%02d", i);
+	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcAvg%02d", i);
+	fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness");
+	fprintf(pf, "\n");
+
+	for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++)
+	{
+		_grmDefectData* pDefect = pData->GetDefectData(iDefect);
+		if (pData->GetGlassData()->m_nScanCoordinateY == 1) //분판설비의 경우 XY반전
+		{
+			fprintf(pf, "%s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d",
+				pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignY / 1000.0, (double)pDefect->m_nUMCenterAlignX / 1000.0,
+				pDefect->m_nLevelSrcMin, pDefect->m_nLevelSrcMax, pDefect->m_nLevelSrcAvg,
+				pDefect->m_nLevelRefMin, pDefect->m_nLevelRefMax, pDefect->m_nLevelRefAvg,
+				pDefect->m_nLevelDiffMin, pDefect->m_nLevelDiffMax, pDefect->m_nLevelDiffAvg);
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZonePixelCount[iz]);
+			}
+			//210123 CJH - Zone별 min, max, avg 값 표기
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueMin[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueMax[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueAvg[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcMin[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcMax[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcAvg[iz]);
+			}
+			fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
+				pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
+
+			fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
+
+			fprintf(pf, "\n");
+		}
+		else
+		{
+			fprintf(pf, "%s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d",
+				pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignX / 1000.0, (double)pDefect->m_nUMCenterAlignY / 1000.0,
+				pDefect->m_nLevelSrcMin, pDefect->m_nLevelSrcMax, pDefect->m_nLevelSrcAvg,
+				pDefect->m_nLevelRefMin, pDefect->m_nLevelRefMax, pDefect->m_nLevelRefAvg,
+				pDefect->m_nLevelDiffMin, pDefect->m_nLevelDiffMax, pDefect->m_nLevelDiffAvg);
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZonePixelCount[iz]);
+			}
+			//210123 CJH - Zone별 min, max, avg 값 표기
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueMin[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueMax[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueAvg[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcMin[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcMax[iz]);
+			}
+			for (int iz = 0; iz < MAX_ZONE_NUM; iz++)
+			{
+				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcAvg[iz]);
+			}
+			fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
+				pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
+
+			fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
+
+			fprintf(pf, "\n");
+		}
+	}
+	AKLOG("MakeAnaFile Complete %s", strFilePathName);
+	fclose(pf);
+
+	return TRUE;
+}
\ No newline at end of file

--
Gitblit v1.9.3