#include "pch.h"
|
#include "M_AutoDiagnosisManager/DiagnosisManager.h"
|
#include "ExcelAutomation.h"
|
#include <stdio.h>
|
#pragma warning(disable:4996)
|
|
enum FlatnessCol
|
{
|
FlatnessCol_Idx =0,
|
FlatnessCol_GlassPosXY
|
};
|
|
enum WSICol
|
{
|
WSICol_Idx = 0,
|
WSICol_ACCData,
|
WSICol_RTBData
|
|
};
|
|
enum SquarenessCol
|
{
|
SquarenessCol_Idx = 0,
|
SquarenessCol_Theta,
|
SquarenessCol_XTheta,
|
SquarenessCol_Pix_X_1,
|
SquarenessCol_Pix_Y_1,
|
SquarenessCol_Pix_X_2,
|
SquarenessCol_Pix_Y_2,
|
SquarenessCol_Pix_X_3,
|
SquarenessCol_Pix_Y_3,
|
SquarenessCol_Motor_X_1,
|
SquarenessCol_Motor_Y_1,
|
SquarenessCol_Motor_X_2,
|
SquarenessCol_Motor_Y_2,
|
SquarenessCol_Motor_X_3,
|
SquarenessCol_Motor_Y_3,
|
SquarenessCol_Assume_Motor_X,
|
SquarenessCol_Assume_Motor_Y //taek 210105
|
};
|
|
CDiagnosisManager::CDiagnosisManager()
|
{
|
m_pDiagnosisProcessor = NULL;
|
m_bProcessAll = false;
|
Reset();
|
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH);
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH);
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_RESULT_IMAGE_DATA_PATH);
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_RESULT_FLATNESS_PATH);
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_RESULT_SQUARENESS_PATH);
|
MakeDirectory(REVIEW_AUTO_DIAGNOSIS_RESULT_WSI_PATH);
|
}
|
|
CDiagnosisManager::~CDiagnosisManager()
|
{
|
if (m_pDiagnosisProcessor)
|
{
|
delete m_pDiagnosisProcessor;
|
m_pDiagnosisProcessor = NULL;
|
}
|
}
|
|
void CDiagnosisManager::Reset()
|
{
|
m_pDP2P = NULL;
|
m_pDiagnosisProcessor = new CDiagnosisProcessor();
|
|
m_bExistStandardData = FALSE;
|
memset(m_pExcelColumn, 0x00, sizeof(char) * 128);
|
strcpy_s(m_pExcelColumn, sizeof(char)*27, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
m_strResultFileName = _T("");
|
|
if (m_pDiagnosisProcessor)
|
{
|
m_pDiagnosisProcessor->SetManagerPtr(this);
|
}
|
}
|
|
void CDiagnosisManager::SetDP2P(IDiagnosisProcessor2Parent* pDP2P)
|
{
|
m_pDP2P = pDP2P;
|
|
if (m_pDP2P!=NULL && m_pDiagnosisProcessor)
|
{
|
m_pDiagnosisProcessor->SetDP2P(m_pDP2P);
|
}
|
}
|
|
void CDiagnosisManager::RecvSignalToSignalControl(int nSignalIdx, int nSignalMode/*= DiagnosisMode_All*/, BOOL bValue/*= TRUE*/)
|
{
|
|
|
switch (nSignalIdx)
|
{
|
case DiagnosisSignal_Auto:
|
{
|
if (bValue == TRUE) // signal on
|
{
|
SaveDiagnosisFile();
|
m_pDiagnosisProcessor->StartProcess(nSignalMode);
|
}
|
else // signal off
|
{
|
m_pDiagnosisProcessor->StopProcess();
|
}
|
}
|
break;
|
case DiagnosisSignal_Manual:
|
{
|
if (bValue == TRUE) // signal on
|
{
|
SaveDiagnosisFile();
|
m_pDiagnosisProcessor->StartProcess(nSignalMode);
|
}
|
else // signal off
|
{
|
m_pDiagnosisProcessor->StopProcess();
|
}
|
}
|
break;
|
}
|
}
|
|
void CDiagnosisManager::RecvSiganlToWsiControl(int nModuleIdx, int nSignalIdx, double& dData)
|
{
|
|
}
|
|
void CDiagnosisManager::ManualMeasure_Flatness()
|
{
|
m_pDiagnosisProcessor->StartProcess(DiagnosisMode_Flatness_Manual);
|
}
|
|
BOOL CDiagnosisManager::LoadSettingConfigFile(CString strFileName)
|
{
|
if (m_dataDiagnosisInfo.LoadInfo(strFileName) == FALSE) return FALSE;
|
|
// initialize variable ///////////////////////////////////////////////
|
int nModuleCount = m_dataDiagnosisInfo.GetModuleCount();
|
// result
|
|
|
SetDiagnosisResultCount_Squareness(nModuleCount);
|
SetDiagnosisResultCount_Wsi(nModuleCount);
|
// info
|
CDiagnosisInfo* pInfo = GetDiagnosisInfo();
|
pInfo->SetSettingResultCount_Squareness(nModuleCount);
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::SaveDiagnosisFile()
|
{
|
BOOL bRet = FALSE;
|
|
if (ExistStandardData() == FALSE)
|
{
|
m_strResultFileName.Format(_T("%s\\%s"), REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_STANDARD_FILE_NAME);
|
}
|
else
|
{
|
if (!m_bProcessAll) //taek ProcessAll ¾Æ´Ï¸é ¿¢¼¿À» ¹«Á¶°Ç ¸¸µç´Ù.
|
{
|
CTime time = CTime::GetCurrentTime();
|
m_strResultFileName.Format(_T("%s\\%s_%04d%02d%02d_%02d%02d%02d.xls"), REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_RESULT_FILE_NAME
|
, time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
|
m_strResultImageFileName.Format(_T("%s\\%s_%04d%02d%02d_%02d%02d%02d"), REVIEW_AUTO_DIAGNOSIS_DATA_IMAGE_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_RESULT_FILE_NAME
|
, time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
|
|
}
|
else
|
{
|
//taek ÆÄÀÏÀ» ã°í ¾øÀ¸¸é ¸¸µé°í ÀÖÀ¸¸é ¹«½Ã
|
CFileStatus FileOn;
|
|
if (CFile::GetStatus(m_strResultFileName, FileOn))
|
{
|
return TRUE;
|
}
|
else
|
{
|
CTime time = CTime::GetCurrentTime();
|
m_strResultFileName.Format(_T("%s\\%s_%04d%02d%02d_%02d%02d%02d.xls"), REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_RESULT_FILE_NAME
|
, time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
|
m_strResultImageFileName.Format(_T("%s\\%s_%04d%02d%02d_%02d%02d%02d"), REVIEW_AUTO_DIAGNOSIS_DATA_IMAGE_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_RESULT_FILE_NAME
|
, time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
|
|
}
|
}
|
|
}
|
|
CExcelAutomation saveFile;
|
int nSheetCount = 3;
|
CString strData[3] = { "Squareness", "WSI", "Flatness" };
|
|
saveFile.Init(_T(""), nSheetCount);
|
if (saveFile.GetEnableApp() == FALSE) return bRet;
|
|
int nCurCount = saveFile.GetSheetCount();
|
if (nCurCount < 3)
|
{
|
int nAddSheetCount = nSheetCount - nCurCount;
|
for (int nIdx = 0; nIdx < nAddSheetCount; nIdx++)
|
{
|
saveFile.AddSheet(nCurCount + nIdx + 1, _T("Sheet"));
|
}
|
}
|
|
for (int nIdx = 0; nIdx < nSheetCount; nIdx++)
|
{
|
CString strSheetName = nIdx >= 3 ? _T("Sheet") : strData[nIdx];
|
saveFile.SetSheetName(nIdx + 1, strSheetName);
|
}
|
saveFile.SetActiveSheet(1);
|
|
saveFile.SaveAs(TRUE, m_strResultFileName);
|
saveFile.Close();
|
|
return bRet;
|
}
|
|
BOOL CDiagnosisManager::SaveDiagnosisFile_Squareness()
|
{
|
int nIndex = 1;
|
|
CFileFind fileFind;
|
if (fileFind.FindFile(m_strResultFileName) == FALSE) return FALSE;
|
|
CExcelAutomation saveFile;
|
saveFile.Init(m_strResultFileName, nIndex);
|
if (saveFile.GetEnableApp() == FALSE) return FALSE;
|
|
CString strSelNo = _T(""), strData = _T("");
|
int nRowIdx = 1;
|
|
// item
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Idx], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("ModuleIdx"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Theta], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Theta"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_XTheta], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("XTheta"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_1], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_X_1"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_1], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_Y_1"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_2], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_X_2"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_2], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_Y_2"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_3], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_X_3"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_3], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Pixel_Y_3"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_1], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_X_1"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_1], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_Y_1"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_2], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_X_2"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_2], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_Y_2"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_3], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_X_3"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_3], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Motor_Y_3"));
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_X], nRowIdx);
|
// saveFile.SetData(nIndex, strSelNo, _T("Calc_Motor_X"));
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_Y], nRowIdx);
|
// saveFile.SetData(nIndex, strSelNo, _T("Calc_Motor_Y")); //taek 210105
|
|
// data
|
for (int nIdx = 0; nIdx < GetDiagnosisResultCount_Squareness(); nIdx++)
|
{
|
const CDiagnosisResult* pResult = GetDiagnosisResult_Squareness(nIdx);
|
if (pResult == NULL) continue;
|
|
nRowIdx++;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Idx], nRowIdx);
|
strData.Format("%d", pResult->GetModuleIndex());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Theta], nRowIdx);
|
strData.Format("%.5lf", pResult->GetGantryDegree());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_XTheta], nRowIdx);
|
strData.Format("%.5lf", pResult->GetXScaleDegree());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
int nPIndex = 0;
|
|
for (int nPIdx = 0; nPIdx < pResult->GetPanelCount_Squareness(); nPIdx++)
|
{
|
|
if (nIdx == 1)
|
{
|
nPIndex = nPIdx + 3;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Idx], nRowIdx);
|
strData.Format("1");
|
saveFile.SetData(nIndex, strSelNo, strData);
|
}
|
else
|
{
|
nPIndex = nPIdx;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Idx], nRowIdx);
|
strData.Format("0");
|
saveFile.SetData(nIndex, strSelNo, strData);
|
}
|
|
const SPositionData* pPos = pResult->GetPositionData_Squareness(nPIndex);
|
if (pPos == NULL) continue;
|
|
if (nPIdx == 0)
|
{
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_1+(nPIdx*2)], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_1 + (nPIdx * 2)], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_1], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_1], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
}
|
else if (nPIdx == 1)
|
{
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_1 + (nPIdx * 2)], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_1 + (nPIdx * 2)], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_2], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_2], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
}
|
else
|
{
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_3], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_3], nRowIdx);
|
strData.Format("%.3lf", pPos->dPixelY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_3], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_3], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_X], nRowIdx);
|
// strData.Format("%.3lf", pPos->dPosAssemX);
|
// saveFile.SetData(nIndex, strSelNo, strData);
|
//
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_Y], nRowIdx);
|
// strData.Format("%.3lf", pPos->dPosAssemY);
|
// saveFile.SetData(nIndex, strSelNo, strData); //taek 210105
|
}
|
|
}
|
|
|
}
|
|
BOOL bRet = saveFile.Save(TRUE);
|
saveFile.Close();
|
|
return bRet;
|
}
|
|
BOOL CDiagnosisManager::SaveDiagnosisFile_Flatness(int nMode)
|
{
|
|
int nIndex = 3;
|
|
CFileFind fileFind;
|
if (fileFind.FindFile(m_strResultFileName) == FALSE) return FALSE;
|
|
CExcelAutomation saveFile;
|
saveFile.Init(m_strResultFileName, nIndex);
|
if (saveFile.GetEnableApp() == FALSE) return FALSE;
|
|
CString strSelNo = _T(""), strData = _T("");
|
int nRowIdx = 1;
|
|
// item
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_Idx], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("ModuleIdx"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_GlassPosXY], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("GlassPosY¡¬GlassPosX(mm)"));
|
|
// data
|
|
const CDiagnosisResult* pResult = GetDiagnosisResult_Flatness();
|
if (pResult == NULL) return FALSE;
|
|
nRowIdx++;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_Idx], nRowIdx);
|
strData.Format("%d", pResult->GetModuleIndex());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
|
int nIdx = 0;
|
int nColCount, nRowCount;
|
enum FlatnessMode { Mode_2x2, Mode_3x3, Mode_3x4, Mode_4x5, Mode_10x10, ModeCount };
|
switch (nMode)
|
{
|
case Mode_2x2:
|
nColCount = 2;
|
nRowCount = 2;
|
break;
|
case Mode_3x3:
|
nColCount = 3;
|
nRowCount = 3;
|
break;
|
case Mode_3x4:
|
nColCount = 3;
|
nRowCount = 4;
|
break;
|
case Mode_4x5:
|
nColCount = 4;
|
nRowCount = 5;
|
break;
|
case Mode_10x10:
|
nColCount = 10;
|
nRowCount = 10;
|
break;
|
|
}
|
|
nColCount = nColCount + 2;
|
nRowCount = nRowCount + 1;
|
|
for (int nColIdx = 2; nColIdx < nColCount; nColIdx++)
|
{
|
if (nColIdx % 2 == 0)
|
{
|
for (int nRowIdx = nRowCount; nRowIdx > 1; nRowIdx--)
|
{
|
const SPositionData* pPos = pResult->GetPositionData_Flatness(nIdx);
|
if (pPos == NULL)
|
{
|
nIdx++;
|
continue;
|
}
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], FlatnessCol_GlassPosXY);
|
strData.Format("%.3lf", pPos->dPosX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_GlassPosXY], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosZ);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
nIdx++;
|
|
}
|
}
|
else
|
{
|
for (int nRowIdx = 2; nRowIdx < nRowCount+1; nRowIdx++)
|
{
|
|
const SPositionData* pPos = pResult->GetPositionData_Flatness(nIdx);
|
if (pPos == NULL)
|
{
|
nIdx++;
|
continue;
|
}
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], FlatnessCol_GlassPosXY);
|
strData.Format("%.3lf", pPos->dPosX);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_GlassPosXY], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], nRowIdx);
|
strData.Format("%.2lf", pPos->dPosZ);
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
|
nIdx++;
|
}
|
}
|
}
|
|
|
BOOL bRet = saveFile.Save(TRUE);
|
saveFile.Close();
|
|
return bRet;
|
}
|
|
BOOL CDiagnosisManager::SaveDiagnosis3DImageFile_Flatness()
|
{
|
CDiagnosisInfo* pSettingInfo = GetDiagnosisInfo();
|
if (pSettingInfo == NULL)
|
return FALSE;
|
|
int nGlassPosX, nGlassPosY;
|
double dPosZ;
|
int nRangeCount = pSettingInfo->GetRangeCount_Flatness();
|
int nMode = pSettingInfo->GetFlatnessMode();
|
|
CTime cTime = CTime::GetCurrentTime(); // ÇöÀç ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ³¯Â¥ ¹× ½Ã°£À» ¾ò¾î ¿Â´Ù.
|
CString strFilename, strFilePath;
|
|
//strFilename.Format(_T("c:\\temp\\2018-12-01-1224-0-Flatness.txt"));
|
strFilename.Format("%04d-%02d-%02d-%02d-%02d-%d-Flatness.txt", cTime.GetYear(), cTime.GetMonth(), cTime.GetDay(), cTime.GetHour(), cTime.GetMinute(), nMode);
|
//strFilePath = _T("C:\\temp\\tempimage\\") + strFilename;
|
|
strFilePath = REVIEW_AUTO_DIAGNOSIS_RESULT_FLATNESS_PATH;
|
strFilePath = strFilePath +_T('\\') + strFilename;
|
|
FILE *fp = NULL;
|
_tfopen_s(&fp, strFilePath, _T("w"));
|
if (fp == NULL) return FALSE;
|
|
for (int nIndex = 0; nIndex < nRangeCount; nIndex++)
|
{
|
|
nGlassPosX = int(m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosX);
|
nGlassPosY = int(m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosY);
|
dPosZ = m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosZ;
|
|
_ftprintf_s(fp, _T("%d %d %.6lf\n"), nGlassPosX, nGlassPosY, dPosZ);
|
}
|
|
fclose(fp);
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::SaveDiagnosisFile_Wsi()
|
{
|
int nIndex = 2;
|
|
CFileFind fileFind;
|
if (fileFind.FindFile(m_strResultFileName) == FALSE) return FALSE;
|
|
CExcelAutomation saveFile;
|
saveFile.Init(m_strResultFileName, nIndex);
|
if (saveFile.GetEnableApp() == FALSE) return FALSE;
|
|
CString strSelNo = _T(""), strData = _T("");
|
int nRowIdx = 1;
|
|
// item
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_Idx], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("Module"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_ACCData], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("ACC Data"));
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_RTBData], nRowIdx);
|
saveFile.SetData(nIndex, strSelNo, _T("RTB Data"));
|
|
for (int nIdx = 0; nIdx < GetDiagnosisResultCount_WSI(); nIdx++)
|
{
|
const CDiagnosisResult* pResult = GetDiagnosisResult_Wsi(nIdx);
|
if (pResult == NULL) continue;
|
|
nRowIdx++;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_Idx], nRowIdx);
|
strData.Format("%d", pResult->GetModuleIndex());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_ACCData], nRowIdx);
|
strData.Format("%.5lf", pResult->getWSI_ACC());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_RTBData], nRowIdx);
|
strData.Format("%.5lf", pResult->getWSI_RTB());
|
saveFile.SetData(nIndex, strSelNo, strData);
|
}
|
|
|
BOOL bRet = saveFile.Save(TRUE);
|
saveFile.Close();
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::SaveDiangosisHistory_Squareness()
|
{
|
CDiagnosisInfo* pSettingInfo = GetDiagnosisInfo();
|
if (pSettingInfo == NULL)
|
return FALSE;
|
|
CTime cTime = CTime::GetCurrentTime(); // ÇöÀç ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ³¯Â¥ ¹× ½Ã°£À» ¾ò¾î ¿Â´Ù.
|
CString strFilename, strFilePath;
|
|
strFilename.Format("%04d-%02d-%02d-%02d-%02d-Squareness.txt", cTime.GetYear(), cTime.GetMonth(), cTime.GetDay(), cTime.GetHour(), cTime.GetMinute());
|
|
strFilePath = REVIEW_AUTO_DIAGNOSIS_RESULT_SQUARENESS_PATH;
|
strFilePath = strFilePath + _T('\\') + strFilename;
|
|
FILE *fp = NULL;
|
_tfopen_s(&fp, strFilePath, _T("w"));
|
if (fp == NULL) return FALSE;
|
|
// for (int nIndex = 0; nIndex < nRangeCount; nIndex++) //taek ¸î¹ø µ¹²¨´Ï?
|
// {
|
// //¾î¶² µ¥ÀÌÅ͸¦ ³ÖÀ» ²¨´Ï
|
//
|
//
|
// _ftprintf_s(fp, _T("%d %d \n"), nGlassPosX, nGlassPosY);
|
// }
|
|
fclose(fp);
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::SaveDiangosisHistory_Wsi()
|
{
|
// CDiagnosisInfo* pSettingInfo = GetDiagnosisInfo();
|
// if (pSettingInfo == NULL)
|
// return FALSE;
|
//
|
// int nGlassPosX, nGlassPosY;
|
// double dPosZ;
|
// int nRangeCount = GetDiagnosisResultCount_WSI();
|
// int nMode = pSettingInfo->GetFlatnessMode();
|
//
|
// CTime cTime = CTime::GetCurrentTime(); // ÇöÀç ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ³¯Â¥ ¹× ½Ã°£À» ¾ò¾î ¿Â´Ù.
|
// CString strFilename, strFilePath;
|
//
|
// strFilename.Format("%04d-%02d-%02d-%02d-%02d-Wsi.txt", cTime.GetYear(), cTime.GetMonth(), cTime.GetDay(), cTime.GetHour(), cTime.GetMinute());
|
//
|
// strFilePath = REVIEW_AUTO_DIAGNOSIS_RESULT_WSI_PATH;
|
// strFilePath = strFilePath + _T('\\') + strFilename;
|
//
|
// FILE *fp = NULL;
|
// _tfopen_s(&fp, strFilePath, _T("w"));
|
// if (fp == NULL) return FALSE;
|
//
|
|
//taek
|
// for (int nIdx = 0; nIdx < GetDiagnosisResultCount_WSI(); nIdx++)
|
// {
|
// const CDiagnosisResult* pResult = GetDiagnosisResult_Wsi(nIdx);
|
// if (pResult == NULL) continue;
|
//
|
// nRowIdx++;
|
//
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_Idx], nRowIdx);
|
// strData.Format("%d", pResult->GetModuleIndex());
|
// saveFile.SetData(nIndex, strSelNo, strData);
|
//
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_ACCData], nRowIdx);
|
// strData.Format("%.5lf", pResult->getWSI_ACC());
|
// saveFile.SetData(nIndex, strSelNo, strData);
|
//
|
// strSelNo.Format(_T("%c%d"), m_pExcelColumn[WSICol_RTBData], nRowIdx);
|
// strData.Format("%.5lf", pResult->getWSI_RTB());
|
// saveFile.SetData(nIndex, strSelNo, strData);
|
// }
|
|
|
// for (int nIndex = 0; nIndex < nRangeCount; nIndex++)
|
// {
|
//
|
// nGlassPosX = int(m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosX);
|
// nGlassPosY = int(m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosY);
|
// dPosZ = m_pDiagnosisResult_Flatness.GetPositionData_Flatness(nIndex)->dPosZ;
|
//
|
// _ftprintf_s(fp, _T("%d %d %.6lf\n"), nGlassPosX, nGlassPosY, dPosZ);
|
// }
|
//
|
// fclose(fp);
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::LoadDiagnosisFile(CString strFileName)
|
{
|
BOOL bRet = FALSE;
|
|
CExcelAutomation loadData;
|
loadData.Init(strFileName);
|
|
bRet = LoadDiagnosisFile_Squareness(&loadData);
|
bRet &= LoadDiagnosisFile_Flatness(&loadData);
|
bRet &= LoadDiagnosisFile_Wsi(&loadData);
|
|
loadData.Close();
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::LoadDiagnosisFile_Squareness(CExcelAutomation* pFile)
|
{
|
if (pFile == NULL) return FALSE;
|
|
int nSheetIndex = 1;
|
int nModuleCount = m_dataDiagnosisInfo.GetModuleCount();
|
int nRowIdx = 2;
|
CString strSelNo = _T(""), strData = _T("");
|
|
CDiagnosisInfo* pInfo = GetDiagnosisInfo();
|
if (pInfo == NULL) return FALSE;
|
|
for (int nIdx = 0; nIdx < nModuleCount; nIdx++)
|
{
|
CDiagnosisResult* pResult = NULL;
|
if (m_bExistStandardData == FALSE) // load standard file
|
{
|
pResult = pInfo->GetSettingResult_Squareness(nIdx);
|
}
|
else
|
{
|
pResult = GetDiagnosisResult_Squareness(nIdx);
|
}
|
if (pResult == NULL) continue;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Idx], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pResult->SetModuleIndex(atoi(strData));
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Theta], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pResult->SetGantryDegree(atof(strData));
|
|
int nIndex;
|
|
for (int nPIdx = 0; nPIdx < pInfo->GetPanelCount_Squareness(); nPIdx++)
|
{
|
if (nModuleCount == 1)
|
{
|
nIndex = nPIdx + 3;
|
}
|
else
|
{
|
nIndex = nPIdx;
|
}
|
|
SPositionData* pPos = pResult->GetPositionData_Squareness(nPIdx);
|
if (pPos == NULL) continue;
|
|
pPos->nIndex = nPIdx;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_X_1 + (nPIdx * 2)], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPixelX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Pix_Y_1 + (nPIdx * 2)], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPixelY = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_1 + (nPIdx * 2)], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_1 + (nPIdx * 2)], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosY = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_X_3], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Motor_Y_3], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosY = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_X], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosAssemX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[SquarenessCol_Assume_Motor_Y], nRowIdx);
|
strData = pFile->GetData(nSheetIndex, strSelNo);
|
pPos->dPosAssemY = atof(strData); //taek 210105
|
}
|
|
nRowIdx++;
|
}
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::LoadDiagnosisFile_Flatness(CExcelAutomation* pFile)
|
{
|
if (pFile == NULL) return FALSE;
|
|
int nSheetIndex = 2;
|
|
CDiagnosisInfo* pInfo = GetDiagnosisInfo();
|
if (pInfo == NULL) return FALSE;
|
|
CString strSelNo = _T(""), strData = _T("");
|
|
int nMode = Mode_4x5;
|
int nIdx = 0;
|
int nColCount, nRowCount;
|
enum FlatnessMode { Mode_2x2, Mode_3x3, Mode_3x4, Mode_4x5, Mode_10x10, ModeCount };
|
switch (nMode)
|
{
|
case Mode_2x2:
|
nColCount = 2;
|
nRowCount = 2;
|
break;
|
case Mode_3x3:
|
nColCount = 3;
|
nRowCount = 3;
|
break;
|
case Mode_3x4:
|
nColCount = 3;
|
nRowCount = 4;
|
break;
|
case Mode_4x5:
|
nColCount = 4;
|
nRowCount = 5;
|
break;
|
case Mode_10x10:
|
nColCount = 10;
|
nRowCount = 10;
|
break;
|
|
}
|
|
nColCount = nColCount + 2;
|
nRowCount = nRowCount + 1;
|
|
CDiagnosisResult* pResult = NULL;
|
for (int nColIdx = 2; nColIdx < nColCount; nColIdx++)
|
{
|
|
if (m_bExistStandardData == FALSE) // load standard file
|
{
|
pResult = pInfo->GetSettingResult_Flatness();
|
}
|
else
|
{
|
pResult = GetDiagnosisResult_Flatness();
|
}
|
|
if (nColIdx % 2 == 0)
|
{
|
for (int nRowIdx = nRowCount; nRowIdx > 1; nRowIdx--)
|
{
|
SPositionData* pPos = pResult->GetPositionData_Flatness(nIdx);
|
if (pPos == NULL)
|
{
|
nIdx++;
|
continue;
|
}
|
pPos->nIndex = nIdx;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], FlatnessCol_GlassPosXY);
|
strData.Format("%.3lf", pPos->dPosX);
|
pPos->dPosX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_GlassPosXY], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
pPos->dPosY = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosZ);
|
pPos->dPosZ = atof(strData);
|
|
nIdx++;
|
|
}
|
}
|
else
|
{
|
for (int nRowIdx = 2; nRowIdx < nRowCount + 1; nRowIdx++)
|
{
|
SPositionData* pPos = pResult->GetPositionData_Flatness(nIdx);
|
if (pPos == NULL)
|
{
|
nIdx++;
|
continue;
|
}
|
pPos->nIndex = nIdx;
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], FlatnessCol_GlassPosXY);
|
strData.Format("%.3lf", pPos->dPosX);
|
pPos->dPosX = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[FlatnessCol_GlassPosXY], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosY);
|
pPos->dPosY = atof(strData);
|
|
strSelNo.Format(_T("%c%d"), m_pExcelColumn[nColIdx], nRowIdx);
|
strData.Format("%.3lf", pPos->dPosZ);
|
pPos->dPosZ = atof(strData);
|
|
nIdx++;
|
}
|
}
|
}
|
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::GetDiagnosis3DImageData_Flatness(CString strFileName, SPositionData* pPositionData)
|
{
|
FILE *pFile = NULL;
|
|
int nGlassPosX, nGlassPosY;
|
double dPosZ;
|
int nIndex = 0;
|
pFile = fopen(strFileName, "r");
|
if (pFile == NULL)
|
return FALSE;
|
|
|
// ÆÄÀÏ À̸§À¸·Î Mode ã¾Æ³»±â
|
int nMode, nTemp;
|
CString strMode;
|
nTemp = strFileName.Find(_T("."));
|
nTemp -= 10; // "c:\\temp\\2020-12-01_1 <-1ÀÇ À§Ä¡ ã±â
|
|
strMode = strFileName.Mid(nTemp, 1);
|
nMode = _ttoi(strMode);
|
|
// Mode·Î RangeCount ã¾Æ³»±â
|
int nRangeCount;
|
if (nMode == Mode_2x2) { nRangeCount = 4; }
|
else if (nMode == Mode_3x3) { nRangeCount = 9; }
|
else if (nMode == Mode_3x4) { nRangeCount = 12; }
|
else if (nMode == Mode_4x5) { nRangeCount = 20; }
|
else if (nMode == Mode_10x10) { nRangeCount = 100; }
|
|
|
// °ª ÀÔ·Â
|
if (pPositionData == NULL)
|
return FALSE;
|
else
|
{
|
while (!feof(pFile))
|
{
|
if (nIndex > nRangeCount) continue;
|
//°ø¹éÀ¸·Î ºÐ¸®µÈ ÆÄÀÏ Àбâ
|
fscanf(pFile, "%d %d %lf\n", &nGlassPosX, &nGlassPosY, &dPosZ);
|
|
pPositionData[nIndex].dPosX = nGlassPosX;
|
pPositionData[nIndex].dPosY = nGlassPosY;
|
pPositionData[nIndex].dPosZ = dPosZ;
|
nIndex++;
|
}
|
|
fclose(pFile);
|
}
|
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::LoadDiagnosisFile_Wsi(CExcelAutomation* pFile)
|
{
|
return TRUE;
|
}
|
|
BOOL CDiagnosisManager::MakeDirectory(CString strPath)
|
{
|
int i, nIdx = 0, nCount = 0;
|
CString strTemp;
|
|
strTemp = strPath;
|
|
while (TRUE)
|
{
|
nIdx = strTemp.Find(_T("\\"), nIdx + 1);
|
|
if (nIdx != -1) nCount++;
|
else break;
|
}
|
|
nIdx = strTemp.Find(_T(":\\"));
|
|
for (i = 0; i < nCount; i++)
|
{
|
nIdx = strTemp.Find(_T("\\"), nIdx + 2);
|
|
if (nIdx != -1)
|
{
|
strPath = strTemp.Left(nIdx);
|
CreateDirectory(strPath, NULL);
|
}
|
}
|
|
return CreateDirectory(strTemp, NULL);
|
}
|
|
int CDiagnosisManager::SetDiagnosisResultCount_Squareness(int nCount)
|
{
|
if (nCount == int(m_vecDiagnosisResult_Squareness.size())) return int(m_vecDiagnosisResult_Squareness.size());
|
|
m_vecDiagnosisResult_Squareness.clear();
|
|
m_vecDiagnosisResult_Squareness.resize(nCount);
|
|
return int(m_vecDiagnosisResult_Squareness.size());
|
}
|
|
int CDiagnosisManager::SetDiagnosisResultCount_Wsi(int nCount)
|
{
|
if (nCount == int(m_vecDiagnosisResult_Wsi.size())) return int(m_vecDiagnosisResult_Wsi.size());
|
|
m_vecDiagnosisResult_Wsi.clear();
|
|
m_vecDiagnosisResult_Wsi.resize(nCount);
|
|
return int(m_vecDiagnosisResult_Wsi.size());
|
}
|
|
CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Squareness(int nModuleIdx)
|
{
|
if (nModuleIdx < 0 || int(m_vecDiagnosisResult_Squareness.size()) <= 0 || nModuleIdx >= int(m_vecDiagnosisResult_Squareness.size())) return NULL;
|
|
return &(m_vecDiagnosisResult_Squareness.at(nModuleIdx));
|
}
|
|
const CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Squareness(int nModuleIdx) const
|
{
|
if (nModuleIdx < 0 || int(m_vecDiagnosisResult_Squareness.size()) <= 0 || nModuleIdx >= int(m_vecDiagnosisResult_Squareness.size())) return NULL;
|
|
return &(m_vecDiagnosisResult_Squareness.at(nModuleIdx));
|
}
|
|
CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Wsi(int nModuleIdx)
|
{
|
if (nModuleIdx < 0 || int(m_vecDiagnosisResult_Wsi.size()) <= 0 || nModuleIdx >= int(m_vecDiagnosisResult_Wsi.size())) return NULL;
|
|
return &(m_vecDiagnosisResult_Wsi.at(nModuleIdx));
|
}
|
|
const CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Wsi(int nModuleIdx) const
|
{
|
if (nModuleIdx < 0 || int(m_vecDiagnosisResult_Wsi.size()) <= 0 || nModuleIdx >= int(m_vecDiagnosisResult_Wsi.size())) return NULL;
|
|
return &(m_vecDiagnosisResult_Wsi.at(nModuleIdx));
|
}
|
|
CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Flatness()
|
{
|
return &(m_pDiagnosisResult_Flatness);
|
}
|
|
const CDiagnosisResult* CDiagnosisManager::GetDiagnosisResult_Flatness() const
|
{
|
return &(m_pDiagnosisResult_Flatness);
|
}
|