From e5fa774d622d6852fe8e1f033045aed221649108 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 금, 15 10월 2021 13:24:54 +0900 Subject: [PATCH] Ongoing80 #3662 CF AOI Review 전설비 알람 발생 조치 --- 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