#include "pch.h" #include "M_AutoDiagnosisManager/DiagnosisManager.h" #include "ExcelAutomation.h" #include #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); }