From b4a18bfef6cb9f5d48a12b455dfa78f9ef67e348 Mon Sep 17 00:00:00 2001 From: kojingeun <diteam.co.kr> Date: 수, 07 6월 2023 10:29:07 +0900 Subject: [PATCH] Revert "Ongoing50 #4517 CF AOI Review 결과 파일 찾기 실패 개선" --- ReviewSystem/ReviewSystem/ReviewInterface.cpp | 739 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 658 insertions(+), 81 deletions(-) diff --git a/ReviewSystem/ReviewSystem/ReviewInterface.cpp b/ReviewSystem/ReviewSystem/ReviewInterface.cpp index 7e3e007..944250b 100644 --- a/ReviewSystem/ReviewSystem/ReviewInterface.cpp +++ b/ReviewSystem/ReviewSystem/ReviewInterface.cpp @@ -67,6 +67,8 @@ #include "akAOISharedSystem.h" #include "DlgModuleInfo.h" +#include <Psapi.h> + using namespace CHReviewResult; using namespace CHImageControls; @@ -111,6 +113,14 @@ // single variable m_strProgramVersion = _T(""); // program version + /*< LYW 20220415 - #4086 ADD Start >*/ + m_nFDCGRMSWVersion = 20220101; + m_nFDCFTPUploaderSWVersion = 20220101; + m_nFDCSyncSWVersion = 20220101; + m_nFDCReviewSWVersion = 20220101; + m_nFDCWSISWVersion00 = 20220101; + m_nFDCWSISWVersion01 = 20220101; + /*< LYW 20220415 - #4086 ADD End >*/ m_ProcessTimer.End(); // process timer // multi variable @@ -126,6 +136,14 @@ m_bFirstReviewLeft = 0; m_bFirstReviewRight = 0; + + /*< LYW 20211014 - #3671 ADD Start >*/ + m_daccumulate = 0; + /*< LYW 20211014 - #3671 ADD End >*/ + /*< LYW 20211109 - #3662 ADD Start >*/ + m_nReview00ImageContrast = 5; + m_nReview01ImageContrast = 5; + /*< LYW 20211109 - #3662 ADD End >*/ // cs init InitializeCriticalSection(&m_csReviewResult); @@ -144,6 +162,8 @@ { if (m_pDoc==NULL) return FALSE; + Start3rdPartyProgram(); + CreateDirectory(_REVIEW_SERVER_BASE_PATH_, NULL); CreateDirectory(_REVIEW_SERVER_LOG_PATH_, NULL); CreateDirectory(_REVIEW_SERVER_CONFIG_PATH_, NULL); @@ -151,10 +171,10 @@ //�떆�옉�븷�븣 �떎 吏��슦怨� �떎�떆 蹂듭궗媛� �븘�슂�븷吏� //std::experimental::filesystem::remove_all(_REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT); //std::experimental::filesystem::remove_all(_REVIEW_RECIPE_BACKUP_PATH_CPJT); - ISP2P_CopyFolder(_REVIEW_SERVER_CONFIG_PATH_, _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT); - ISP2P_CopyFolder(_REVIEW_RECIPE_PATH_, _REVIEW_RECIPE_BACKUP_PATH_CPJT); + //ISP2P_CopyFolder(_REVIEW_SERVER_CONFIG_PATH_, _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT); + //ISP2P_CopyFolder(_REVIEW_RECIPE_PATH_, _REVIEW_RECIPE_BACKUP_PATH_CPJT); //LYW_#3344_CF AOI Review Config File 諛깆뾽 湲곕뒫 媛쒖꽑 ADD END - SetProgramVersion(); + SetReviewProgramVersion(); // init review data if (m_pDoc->InitReviewData()==FALSE) @@ -179,6 +199,10 @@ { m_pView->CreateDialogs(pSystemInfo->m_nLineType, pSystemInfo->m_nMachineType, pSystemInfo->m_bUseVisionAlign); } + + /*< LYW 20220415 - #4086 ADD Start >*/ + _beginthread(threadSet3rdPartyProgramVersion, NULL, this); + /*< LYW 20220415 - #4086 ADD End >*/ // system type log : SW Version 異붽� g_pLog->DisplayMessage(_T("Starting ReviewSystem Program! (%s)"), m_strProgramVersion); @@ -362,20 +386,24 @@ { TRACE(_T("[A2E]DeinitReviewInterface �떆�옉\n")); - if (m_pView) - { - m_pView->DeleteDialogs(); - } - - ClearAllObserverVector(); - g_pLog->DisplayMessage(_T("Clear all Observer Vectors")); - ::Sleep(400); - m_ProcessTimer.Start(); DisconnectReviewCamera(); DeinitReviewCamera(); m_ProcessTimer.End(); + + Terminate3rdPartyProgram(); + + if (m_pView) + { + m_pView->DeleteDialogs(); + } g_pLog->DisplayMessage(_T("ReviewCamera Deinit Time : %f ms"), m_ProcessTimer.GetDurationMilliSecond()); + + g_pLog->DisplayMessage(_T("Program exit by User!")); + + ClearAllObserverVector(); + g_pLog->DisplayMessage(_T("Clear all Observer Vectors")); + ::Sleep(400); m_ProcessTimer.Start(); DeinitAlignCamera(); @@ -468,8 +496,6 @@ DeinitSharedImage(); g_pLog->DisplayMessage(_T("Deinit Shared Image")); - - DeinitTotalPitchMeasure(); g_pLog->DisplayMessage(_T("Deinit TotalPitch Measure")); @@ -555,32 +581,262 @@ AFM_SetAFMZoomLevel(0, 0); } - -void CReviewInterface::SetProgramVersion() +/*< LYW 20220415 - #4086 ADD Start >*/ +void CReviewInterface::threadSet3rdPartyProgramVersion(void* pArg) { + CReviewInterface* pThis = (CReviewInterface*)pArg; + /*< SWK 20221222 - #4403 MOD Start >*/ +// //LYW0412 +// BOOL bReturn, bRetFTPUploader = FALSE, bRetGRM = FALSE, bRetSync = FALSE; +// CFileFind finder; +// CTime timeLastWrite; +// TCHAR currentPath[MAX_PATH]; +// DWORD dwPid; +// HWND hWnd; +// HANDLE hHandle; +// CString strTemp; +// +// while ((bRetFTPUploader&bRetGRM&bRetSync) != TRUE) +// { +// bReturn = FALSE; +// +// //FTPUploader S/W Version Start +// if (bRetFTPUploader == FALSE) +// { +// dwPid = 0; +// hWnd = ::FindWindow(NULL, _T("FTPUploader")); +// GetWindowThreadProcessId(hWnd, &dwPid); +// hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwPid); +// ZeroMemory(currentPath, MAX_PATH); +// GetModuleFileNameEx(hHandle, NULL, currentPath, MAX_PATH); +// +// bReturn = finder.FindFile(currentPath); +// } +// +// while (bReturn) +// { +// bReturn = finder.FindNextFile(); +// +// if (finder.IsDots()) continue; +// if (finder.IsDirectory()) continue; +// +// finder.GetLastWriteTime(timeLastWrite); +// strTemp.Format(_T("%04d%02d%02d"), timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay()); +// pThis->m_nFDCFTPUploaderSWVersion = atoi(strTemp); +// g_pLog->DisplayMessage(_T("FDCFTPUploaderSWVersion = %d "), pThis->m_nFDCFTPUploaderSWVersion); +// bRetFTPUploader = TRUE; +// } +// //FTPUploader S/W Version End +// +// bReturn = FALSE; +// +// //Dit Glass Raw Messenger S/W Version Start +// if (bRetGRM == FALSE) +// { +// dwPid = 0; +// hWnd = ::FindWindow(NULL, _T("Dit Glass Raw Messenger")); +// GetWindowThreadProcessId(hWnd, &dwPid); +// hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwPid); +// ZeroMemory(currentPath, MAX_PATH); +// GetModuleFileNameEx(hHandle, NULL, currentPath, MAX_PATH); +// +// bReturn = finder.FindFile(currentPath); +// } +// +// while (bReturn) +// { +// bReturn = finder.FindNextFile(); +// +// if (finder.IsDots()) continue; +// if (finder.IsDirectory()) continue; +// +// finder.GetLastWriteTime(timeLastWrite); +// strTemp.Format(_T("%04d%02d%02d"), timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay()); +// pThis->m_nFDCGRMSWVersion = atoi(strTemp); +// g_pLog->DisplayMessage(_T("FDCGRMSWVersion = %d "), pThis->m_nFDCGRMSWVersion); +// bRetGRM = TRUE; +// } +// //Dit Glass Raw Messenger S/W Version End +// +// bReturn = FALSE; +// +// //Dit Shared Memory Sync Client S/W Version Start +// if (bRetSync == FALSE) +// { +// dwPid = 0; +// hWnd = ::FindWindow(NULL, _T("Dit Shared Memory Sync Client")); +// GetWindowThreadProcessId(hWnd, &dwPid); +// hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwPid); +// ZeroMemory(currentPath, MAX_PATH); +// GetModuleFileNameEx(hHandle, NULL, currentPath, MAX_PATH); +// +// bReturn = finder.FindFile(currentPath); +// } +// +// while (bReturn) +// { +// bReturn = finder.FindNextFile(); +// +// if (finder.IsDots()) continue; +// if (finder.IsDirectory()) continue; +// +// finder.GetLastWriteTime(timeLastWrite); +// strTemp.Format(_T("%04d%02d%02d"), timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay()); +// pThis->m_nFDCSyncSWVersion = atoi(strTemp); +// g_pLog->DisplayMessage(_T("FDCSyncSWVersion = %d "), pThis->m_nFDCSyncSWVersion); +// bRetSync = TRUE; +// } +// //Dit Shared Memory Sync Client S/W Version End +// } +// +// finder.Close(); + + auto GetModuleFileLastTime = [](LPCTSTR strWindowTitle)->long { + long nLastTime = 0; + DWORD dwPid = 0; + + HWND hWnd = ::FindWindow(NULL, strWindowTitle); + if (hWnd == INVALID_HANDLE_VALUE) + return nLastTime; + + GetWindowThreadProcessId(hWnd, &dwPid); + HANDLE hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwPid); + TCHAR currentPath[MAX_PATH]; + ZeroMemory(currentPath, MAX_PATH); + GetModuleFileNameEx(hHandle, NULL, currentPath, MAX_PATH); + + CFileFind finder; + if (finder.FindFile(currentPath)) + { + finder.FindNextFile(); + + if (finder.IsDirectory() || finder.IsDots()) + return nLastTime; + + CTime timeLastWrite; + finder.GetLastWriteTime(timeLastWrite); + nLastTime = atoi(timeLastWrite.Format(_T("%Y%m%d"))); + } + return nLastTime; + }; + + BOOL bRetFTPUploader = FALSE, bRetGRM = FALSE, bRetSync = FALSE; + while ((bRetFTPUploader&bRetGRM&bRetSync) != TRUE) + { + //FTPUploader S/W Version + if (bRetFTPUploader == FALSE) + { + if (pThis->m_nFDCFTPUploaderSWVersion = GetModuleFileLastTime(_T("FTPUploader"))) + { + g_pLog->DisplayMessage(_T("FDCFTPUploaderSWVersion = %d "), pThis->m_nFDCFTPUploaderSWVersion); + bRetFTPUploader = TRUE; + } + } + Sleep(1); + //Dit Glass Raw Messenger S/W Version + if (bRetGRM == FALSE) + { + if (pThis->m_nFDCGRMSWVersion = GetModuleFileLastTime(_T("Dit Glass Raw Messenger"))) + { + g_pLog->DisplayMessage(_T("FDCGRMSWVersion = %d "), pThis->m_nFDCGRMSWVersion); + bRetGRM = TRUE; + } + } + Sleep(1); + //Dit Shared Memory Sync Client S/W Version Start + if (bRetSync == FALSE) + { + if (pThis->m_nFDCSyncSWVersion = GetModuleFileLastTime(_T("Dit Shared Memory Sync Client"))) + { + g_pLog->DisplayMessage(_T("FDCSyncSWVersion = %d "), pThis->m_nFDCSyncSWVersion); + bRetSync = TRUE; + } + } + Sleep(1); + } + /*< SWK 20221222 - #4403 MOD End >*/ +} + +void CReviewInterface::SetReviewProgramVersion() +{ + //LYW0412 BOOL bReturn; CFileFind finder; CTime timeLastWrite; TCHAR currentPath[MAX_PATH]; + CString strTemp; - ::GetModuleFileName( AfxGetInstanceHandle(), currentPath, MAX_PATH); + //Review S/W Version Start + ::GetModuleFileName(AfxGetInstanceHandle(), currentPath, MAX_PATH); bReturn = finder.FindFile(currentPath); - while(bReturn) + while (bReturn) { bReturn = finder.FindNextFile(); - if(finder.IsDots()) continue; - if(finder.IsDirectory()) continue; + if (finder.IsDots()) continue; + if (finder.IsDirectory()) continue; finder.GetLastWriteTime(timeLastWrite); - m_strProgramVersion.Format(_T("Build[ %04d.%02d.%02d %02d:%02d ]"), + m_strProgramVersion.Format(_T("Build[ %04d.%02d.%02d %02d:%02d ]"), timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay(), timeLastWrite.GetHour(), timeLastWrite.GetMinute()); + strTemp.Format(_T("%04d%02d%02d"), timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay()); + m_nFDCReviewSWVersion = atoi(strTemp); + g_pLog->DisplayMessage(_T("FDCReviewSWVersion = %d "), m_nFDCReviewSWVersion); } - - finder.Close(); + //Review S/W Version End } + +/*< LYW 20220426 - #4086 ADD Start >*/ +void CReviewInterface::Start3rdPartyProgram() +{ +// if(StartWindowIDProgram(_T("FTPUploader"), _T("D:\\DIT_3rdParty\\FTPUpload\\FTPUploader.exe"))) +// g_pLog->DisplayMessage(_T("FDCFTPUploader Start Success")); +// else g_pLog->DisplayMessage(_T("FDCFTPUploader Start Fail")); + + if (StartWindowIDProgram(_T("Dit Glass Raw Messenger"), _T("D:\\DIT_3rdParty\\GlassRawMessenger\\DitGlassRawMessenger_x64.exe"))) + g_pLog->DisplayMessage(_T("DitGlassRawMessenger Start Success")); + else g_pLog->DisplayMessage(_T("DitGlassRawMessenger Start Fail")); +} + +int CReviewInterface::StartWindowIDProgram(CString WindowID, CString ProgramPath) +{ + HWND hWnd = ::FindWindow(NULL, WindowID); + if (hWnd == NULL) + { + if(ShellExecute(hWnd, NULL, ProgramPath, NULL, NULL, SW_SHOWMINIMIZED)) + return TRUE; + else return FALSE; + } + return TRUE; +} + +void CReviewInterface::Terminate3rdPartyProgram() +{ + /*TerminateWindowIDProgram(_T("FTPUploader"));*/ + TerminateWindowIDProgram(_T("Dit Glass Raw Messenger")); + TerminateWindowIDProgram(_T("gnuplot")); + KillProcess("wgnuplot.exe"); +} + +void CReviewInterface::TerminateWindowIDProgram(CString WindowID) +{ + HWND hWnd = ::FindWindow(NULL, WindowID); + if (hWnd != NULL) + { + DWORD ProcessId; + GetWindowThreadProcessId(hWnd, &ProcessId); + HANDLE hProcess = OpenProcess(MAXIMUM_ALLOWED, FALSE, ProcessId); + if (hProcess != NULL) + { + TerminateProcess(hProcess, 0); + } + + } +} +/*< LYW 20220426 - #4086 ADD End >*/ +/*< LYW 20220415 - #4086 ADD End >*/ void CReviewInterface::CreateSystemDirectory() { @@ -1174,6 +1430,10 @@ BOOL bConnection = pCameraControlReview->GetConnected(); pConnectionStatus->m_vecReviewCameraStatus.push_back(bConnection); + + /*< LYW 20211112 - #3708 ADD Start >*/ + g_pLog->DisplayMessage(_T("[ReviewCamera] %d is connected"), nModuleIndex); + /*< LYW 20211112 - #3708 ADD End >*/ nModuleIndex++; // module status++ } // for HeaderIdx @@ -2750,6 +3010,21 @@ return -1; } +void CReviewInterface::IWC2P_SetWSIVersion(int nModuleIndex, int nVersion) +{ + switch (nModuleIndex) + { + case 0: + m_nFDCWSISWVersion00 = nVersion; + break; + case 1: + m_nFDCWSISWVersion01 = nVersion; + break; + default: + break; + } +} + void CReviewInterface::IWC2P_SetConnectedStatus(int nModuleIndex, int nConnectStatus) { CString strMessage = _T(""); @@ -3115,6 +3390,16 @@ return AlignLight_GetLightLevel(nCameraIndex, nValue); } +int CReviewInterface::IACC2P_GetAccumaulate() +{ + return m_daccumulate; +} + +void CReviewInterface::IACC2P_SetAccumaulate(int dValue) +{ + m_daccumulate = dValue; +} + BOOL CReviewInterface::IRCC2P_GetCurrentFrame(int nModuleIndex, int nCameraIndex, int nFrameWidth, int nFrameHeight, int nFrameChannels, CCHImageData* pImageData) { if (m_pVirtualGlassMap==NULL) return FALSE; @@ -3408,6 +3693,26 @@ m_bFirstReviewRight = b_Check; } +BOOL CReviewInterface::IRP2P_GetReview00ImageContrast() +{ + return m_nReview00ImageContrast; +} + +BOOL CReviewInterface::IRP2P_GetReview01ImageContrast() +{ + return m_nReview01ImageContrast; +} + +void CReviewInterface::IRP2P_SetReview00ImageContrast(int n_Value) +{ + m_nReview00ImageContrast = n_Value; +} + +void CReviewInterface::IRP2P_SetReview01ImageContrast(int n_Value) +{ + m_nReview01ImageContrast = n_Value; +} + int CReviewInterface::PS2P_GetModuleStatusCount(int nModuleType) { @@ -3463,6 +3768,14 @@ CDlgDefectMap* pDefectmap = m_pView->GetDefectMapDlgHandle(); if (pDefectmap == NULL) { return FALSE; } pDefectmap->GetDefectMap()->SetOffsetmodeparma(bMode, nCamidx, nScanidx, nXpos, nYpos); + return FALSE; +} + +BOOL CReviewInterface::IDRO2P_SetOffsetPram(int nCamIdx, int nScanIdx, BOOL bUse) +{ + CDlgDefectMap* pDefectmap = m_pView->GetDefectMapDlgHandle(); + if (pDefectmap == NULL) { return FALSE; } + pDefectmap->GetDefectMap()->SetOffsetparm(nCamIdx, nScanIdx, bUse); return FALSE; } @@ -5772,6 +6085,12 @@ pGlassResult->m_AlignRecipe.dMatchingRate = pRsRcpAlignInfo->m_dMatchingRate; pGlassResult->m_AlignRecipe.strFirstImageFile = pRsRcpAlignInfo->m_strFirstImageFile; pGlassResult->m_AlignRecipe.strSecondImageFile = pRsRcpAlignInfo->m_strSecondImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + pGlassResult->m_AlignRecipe.strFirstAssistantImageFile = pRsRcpAlignInfo->m_strFirstAssistantImageFile; + pGlassResult->m_AlignRecipe.strSecondAssistantImageFile = pRsRcpAlignInfo->m_strSecondAssistantImageFile; + pGlassResult->m_AlignRecipe.strMatchingPixelStandard = pRsRcpAlignInfo->m_strMatchingPixelStandard; + pGlassResult->m_AlignRecipe.strMatchingAlarmCondition = pRsRcpAlignInfo->m_strMatchingAlarmCondition; + /*< LYW 20211012 - #3671 ADD End >*/ pGlassResult->m_AlignRecipe.strTotalPitchImageFile = pRsRcpAlignInfo->m_strTotalPitchImageFile; // edge find param @@ -6373,12 +6692,11 @@ if (IsManualProcessMode()==FALSE) { return; } - CGlassResult *pGlassResult = m_pDoc->GlassResult_GetCurrentGlassResult(); - if(pGlassResult == NULL) return; + if (pGlassResult == NULL) return; const SDefectFilter *pDefectFilter = m_pDoc->Etc_GetDefectFilter(); - if(pDefectFilter == NULL) return; + if (pDefectFilter == NULL) return; int nMarginX = nDefectMarginX; //5000; // um int nMarginY = nDefectMarginY; //5000; // um @@ -6386,6 +6704,9 @@ MapDefectResult *pMapReviewResult = pGlassResult->GetMapDefectResult(); + BOOL bFind = FALSE; + + //Defect if (pMapReviewResult) { CDefectResult* pDefectResult = NULL; @@ -6393,28 +6714,28 @@ { pDefectResult = static_cast<CDefectResult*>(it->second); - if(pDefectResult == NULL) continue; + if (pDefectResult == NULL) continue; - if (CDefectMap::FilterDefect(pDefectFilter, pDefectResult)==-1) continue; + //if (CDefectMap::FilterDefect(pDefectFilter, pDefectResult) == -1) continue; - if (pDefectResult->nUMOriginX >= nDefectPosX - nMarginX && - pDefectResult->nUMOriginX <= nDefectPosX + nMarginX && - pDefectResult->nUMOriginY >= nDefectPosY - nMarginY && + if (pDefectResult->nUMOriginX >= nDefectPosX - nMarginX && + pDefectResult->nUMOriginX <= nDefectPosX + nMarginX && + pDefectResult->nUMOriginY >= nDefectPosY - nMarginY && pDefectResult->nUMOriginY <= nDefectPosY + nMarginY) { + bFind = TRUE; + m_pView->UpdateSelectDefectList(pDefectResult->nDefectIdx); m_pView->UpdateSelectDefectMap(pDefectResult); - - m_pView->UpdateSelectDefectInfoMap(pDefectResult); //taek 201214 �꽑�깮�븳 �뵒�럺�쓽 �젙蹂대�� �꽆湲대떎 - m_pView->UpdateSelectDefectInfo(pDefectResult->nDefectIdx); //taek 201214 �꽑�깮�븳 �뵒�럺�쓽 �궗吏� �젙蹂대�� �꽆湲대떎. nSelectedModuleIndex = Module_GetSelectedModuleIndex(); // �씠�룞�븷 紐⑤뱢 �씤�뜳�뒪 �븣�븘�궡湲� (紐⑤뱢蹂� limit �뜲�씠�꽣 �궗�슜) - int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + int nGoModuleIndex = nSelectedModuleIndex; // �꽑�깮 紐⑤뱢�쓣 �젣�쇅�븳 �굹癒몄� �솃�룞�옉 �옉�룞 - if(nGoModuleIndex >= 0) + if (nGoModuleIndex >= 0) { Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); } @@ -6424,21 +6745,145 @@ break; } - if(IsManualProcessMode() != FALSE){ + if (IsManualProcessMode() != FALSE) { - Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera,pDefectResult ); + Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, pDefectResult); + return; } - // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); - // [2017:1:19]-[WEZASW] : WSI Manual Measurement 湲곕뒫 異붽� + // [2017:1:19]-[WEZASW] : WSI Manual Measurement 湲곕뒫 異붽� if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) { - WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); + WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, (int)pDefectResult->dUMCenterOriginX, (int)pDefectResult->dUMCenterOriginY, TRUE); } break; } } } + + //User + if (bFind == FALSE) + { + CDefectResult* pDefectResult = NULL; + + VectorReviewResult *pVecReviewResult = pGlassResult->GetVectorUserResult(); + if (pVecReviewResult == NULL) return; + + for (VectorReviewResultIt it = pVecReviewResult->begin(); it != pVecReviewResult->end(); it++) + { + CReviewResult *pReviewResult = static_cast<CReviewResult*>(&(*it)); + + for (VectorSReviewResultIt its = pReviewResult->m_vecSReviewResult.begin(); its != pReviewResult->m_vecSReviewResult.end(); its++) + { + + if (its->nUMOriginX >= nDefectPosX - nMarginX && + its->nUMOriginX <= nDefectPosX + nMarginX && + its->nUMOriginY >= nDefectPosY - nMarginY && + its->nUMOriginY <= nDefectPosY + nMarginY) + { + bFind = TRUE; + + pDefectResult = &(*its); + + m_pView->UpdateSelectDefectMap(pDefectResult); + + nSelectedModuleIndex = Module_GetSelectedModuleIndex(); + + // �씠�룞�븷 紐⑤뱢 �씤�뜳�뒪 �븣�븘�궡湲� (紐⑤뱢蹂� limit �뜲�씠�꽣 �궗�슜) + //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + int nGoModuleIndex = nSelectedModuleIndex; + + // �꽑�깮 紐⑤뱢�쓣 �젣�쇅�븳 �굹癒몄� �솃�룞�옉 �옉�룞 + if (nGoModuleIndex >= 0) + { + Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); + } + else + { + g_pLog->DisplayMessage(_T("[Error] Can't Move Motor to Home")); + break; + } + + if (IsManualProcessMode() != FALSE) { + + Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, NULL, 0, 0); + return; + } + // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + + // [2017:1:19]-[WEZASW] : WSI Manual Measurement 湲곕뒫 異붽� + if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) + { + WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); + } + break; + } + } + } + } + + //UserWSI + if (bFind == FALSE) + { + CDefectResult* pDefectResult = NULL; + + VectorReviewResult *pVecReviewResult = pGlassResult->GetVectorUserWsiResult(); + if (pVecReviewResult == NULL) return; + + for (VectorReviewResultIt it = pVecReviewResult->begin(); it != pVecReviewResult->end(); it++) + { + CReviewResult *pReviewResult = static_cast<CReviewResult*>(&(*it)); + + for (VectorSReviewResultIt its = pReviewResult->m_vecSReviewResult.begin(); its != pReviewResult->m_vecSReviewResult.end(); its++) + { + + if (its->nUMOriginX >= nDefectPosX - nMarginX && + its->nUMOriginX <= nDefectPosX + nMarginX && + its->nUMOriginY >= nDefectPosY - nMarginY && + its->nUMOriginY <= nDefectPosY + nMarginY) + { + bFind = TRUE; + + pDefectResult = &(*its); + + m_pView->UpdateSelectDefectMap(pDefectResult); + + nSelectedModuleIndex = Module_GetSelectedModuleIndex(); + + // �씠�룞�븷 紐⑤뱢 �씤�뜳�뒪 �븣�븘�궡湲� (紐⑤뱢蹂� limit �뜲�씠�꽣 �궗�슜) + //int nGoModuleIndex = Module_GetMoveIndex(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + int nGoModuleIndex = nSelectedModuleIndex; + + // �꽑�깮 紐⑤뱢�쓣 �젣�쇅�븳 �굹癒몄� �솃�룞�옉 �옉�룞 + if (nGoModuleIndex >= 0) + { + Motor_HomeGoExceptOne(nGoModuleIndex, pDefectFilter->bAutoSelectCamera, TRUE); + } + else + { + g_pLog->DisplayMessage(_T("[Error] Can't Move Motor to Home")); + break; + } + + if (IsManualProcessMode() != FALSE) { + + Motor_CameraGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera, NULL, 0, 0); + return; + } + // Motor_CameraCenterGo(nSelectedModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectFilter->bAutoSelectCamera); + + // [2017:1:19]-[WEZASW] : WSI Manual Measurement 湲곕뒫 異붽� + if (pDefectFilter->bUseWSI == TRUE && pDefectFilter->bUseWSIMeasurement == TRUE) + { + WSI_SetManualMeasurement(nGoModuleIndex, pDefectResult->nUMOriginX, pDefectResult->nUMOriginY, pDefectResult->dUMCenterOriginX, pDefectResult->dUMCenterOriginY, TRUE); + } + break; + } + } + } + } + } @@ -6525,10 +6970,6 @@ { if (m_pSequenceProcessor==NULL) return; - //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD START - m_pSequenceProcessor->SetSimulationMode(TRUE); - //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD END - if (nCommand == -1) // DBClick Date { @@ -6537,6 +6978,7 @@ m_pDlgDiagnosis->ShowWindow(SW_SHOW); + return; /* if (m_pSignalControl) { @@ -6554,6 +6996,14 @@ { g_pLog->DisplayMessage(_T("Machine Mode is not Manual or Review Mode!")); return; + } + + else + { + //#3584 210923 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD START + m_pSequenceProcessor->SetSimulationMode(TRUE); + g_pLog->DisplayMessage(_T("Set User Command = %d"),nCommand); + //#3584 210923 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD END } m_pSequenceProcessor->RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, nCommand); @@ -7039,12 +7489,12 @@ - if (dDefectPosX > dXposPlusLimitPos|| dDefectPosX<dXposMinusLimitPos|| dDefectPosY > dYposPlusLimitPos|| dDefectPosY < dYposMinusLimitPos) - { - IDNO == AfxMessageBox(_T("Limit�쓣 珥덇낵 �븯�뿬 媛덉닔 �뾾�뒿�땲�떎."), MB_YESNO | MB_ICONQUESTION); - g_pLog->DisplayMessage(_T("Limit 珥덇낵")); - return FALSE; - } +// if (dDefectPosX > dXposPlusLimitPos|| dDefectPosX<dXposMinusLimitPos|| dDefectPosY > dYposPlusLimitPos|| dDefectPosY < dYposMinusLimitPos) +// { +// IDNO == AfxMessageBox(_T("Limit�쓣 珥덇낵 �븯�뿬 媛덉닔 �뾾�뒿�땲�떎."), MB_YESNO | MB_ICONQUESTION); +// g_pLog->DisplayMessage(_T("Limit 珥덇낵")); +// return FALSE; +// } double n1stGantryXpos, n1stGantryYpos, n2ndGantryXpos, n2ndGantryYpos; double dDistance,dCameraDistance; @@ -7331,44 +7781,48 @@ dPosX += MagOffsetX * 1000;//GlassOffsetX*1000+MagOffsetX*1000; dPosY+= MagOffsetY * 1000;//GlassOffsetY*1000+MagOffsetY*1000; - double xpostemp = 0; - double ypostemp = 0; - - GetOffSetValue(nModuleIndex, pDefectResult->nAOICameraIdx, pDefectResult->nAOIScanIdx, nDefectPosX/1000, xpostemp, ypostemp); - xpostemp = floor(xpostemp * 1000); - ypostemp = floor(ypostemp * 1000); - //210127 - if (m_pDoc->System_GetMotorInfo()->GetOriginDirection() == 2) + if (pDefectResult != NULL) { - if (nModuleIndex == 0) + double xpostemp = 0; + double ypostemp = 0; + + GetOffSetValue(nModuleIndex, pDefectResult->nAOICameraIdx, pDefectResult->nAOIScanIdx, nDefectPosX / 1000, xpostemp, ypostemp); + xpostemp = floor(xpostemp * 1000); + ypostemp = floor(ypostemp * 1000); + //210127 + if (m_pDoc->System_GetMotorInfo()->GetOriginDirection() == 2) { - dPosX += xpostemp; - dPosY += ypostemp; + if (nModuleIndex == 0) + { + dPosX += xpostemp; + dPosY += ypostemp; + } + else + { + dPosX += xpostemp * -1; + dPosY += ypostemp; + } } else { - dPosX += xpostemp * -1; - dPosY += ypostemp; + if (nModuleIndex == 0) + { + dPosX += xpostemp; + dPosY += ypostemp * -1; + } + else + { + dPosX += xpostemp * -1; + dPosY += ypostemp * -1; + } } - } - else - { - if (nModuleIndex == 0) - { - dPosX += xpostemp; - dPosY += ypostemp * -1; - } - else - { - dPosX += xpostemp * -1; - dPosY += ypostemp * -1; - } - } - g_pLog->DisplayMessage(_T("[OFFSetOn]MotorOffset: %.3lf, %.3lf MagOffset: %.3lf, %.3lf Glass Pos : %.3lf, %.3lf"), xpostemp, ypostemp, MagOffsetX,MagOffsetY,dPosX/1000.0,dPosY/1000.0); - //dPosX= ApplyMagAndGlassOffset(nModuleIndex,0,dPosX, dPosY); - //dPosY= ApplyMagAndGlassOffset(nModuleIndex,1,dPosX, dPosY); + g_pLog->DisplayMessage(_T("[OFFSetOn]MotorOffset: %.3lf, %.3lf MagOffset: %.3lf, %.3lf Glass Pos : %.3lf, %.3lf"), xpostemp, ypostemp, MagOffsetX, MagOffsetY, dPosX / 1000.0, dPosY / 1000.0); + //dPosX= ApplyMagAndGlassOffset(nModuleIndex,0,dPosX, dPosY); + //dPosY= ApplyMagAndGlassOffset(nModuleIndex,1,dPosX, dPosY); + } + } return Motor_CameraGo(nModuleIndex, dPosX/1000.0, dPosY/1000.0, bAutoSelectCamera, bGoEnd); @@ -8213,6 +8667,62 @@ return m_pDoc->Etc_GetTransferData(); } +BOOL CReviewInterface::ISP2P_GetReview00ImageContrast() +{ + return m_nReview00ImageContrast; +} + +BOOL CReviewInterface::ISP2P_GetReview01ImageContrast() +{ + return m_nReview01ImageContrast; +} + +void CReviewInterface::ISP2P_SetReview00ImageContrast(int n_Value) +{ + m_nReview00ImageContrast = n_Value; +} + +void CReviewInterface::ISP2P_SetReview01ImageContrast(int n_Value) +{ + m_nReview01ImageContrast = n_Value; +} + +int CReviewInterface::ISP2P_GetReviewSWVersion() +{ + return m_nFDCReviewSWVersion; +} + +int CReviewInterface::ISP2P_GetSyncSWVersion() +{ + return m_nFDCSyncSWVersion; +} + +int CReviewInterface::ISP2P_GetGRMSWVersion() +{ + return m_nFDCGRMSWVersion; +} + +int CReviewInterface::ISP2P_GetFTPUploaderSWVersion() +{ + return m_nFDCFTPUploaderSWVersion; +} + +int CReviewInterface::ISP2P_GetWSISWVersion(int nModuleIndex) +{ + switch (nModuleIndex) + { + case 0: + return m_nFDCWSISWVersion00; + break; + case 1: + return m_nFDCWSISWVersion01; + break; + default: + return m_nFDCWSISWVersion00; + break; + } +} + SDefectFilter* CReviewInterface::ISP2P_GetDefectFilter() { if (m_pDoc==NULL) return NULL; @@ -8546,6 +9056,66 @@ m_pView->ShowHistoryTool(); } +void CReviewInterface::IDL2P_OpenHWSettingTool() +{ + m_pView->ShowHWSettingMode(); +} + +BOOL CReviewInterface::IDL2P_IsManualProcessMode() +{ + return IsManualProcessMode(); +} + +int CReviewInterface::IDHM2P_InitReviewCamera() +{ + return InitReviewCamera(); +} + +void CReviewInterface::IDHM2P_DeinitReviewCamera() +{ + DeinitReviewCamera(); +} + +int CReviewInterface::IDHM2P_ConnectReviewCamera() +{ + return ConnectReviewCamera(); +} + +void CReviewInterface::IDHM2P_DisconnectReviewCamera() +{ + DisconnectReviewCamera(); +} + +void CReviewInterface::IDHM2P_ClearCameraControlObserverVector() +{ + ClearCameraControlObserverVector(); +} + +int CReviewInterface::IDHM2P_InitAFMControl() +{ + return InitAFMControl(); +} + +void CReviewInterface::IDHM2P_DeinitAFMControl() +{ + DeinitAFMControl(); +} + +int CReviewInterface::IDHM2P_InitAlignCamera() +{ + return InitAlignCamera(); +} + +void CReviewInterface::IDHM2P_DeinitAlignCamera() +{ + DeinitAlignCamera(); +} + +BOOL CReviewInterface::IDHM2P_IsManualProcessMode() +{ + return IsManualProcessMode(); +} + //181203 BOOL CReviewInterface::IRP2P_SaveDefectMap(const CString& strPath) { @@ -8865,6 +9435,13 @@ g_pLog->DisplayMessage(_T("[WSI_%d] Send Motion End to WSI SUCCESS! [%02d][%02d]"), nWsiIndex, nModuleIndex, nWsiIndex); } +void CReviewInterface::IMC2P_SendMotorAliveErrorAlram() +{ + IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(PCControlSendSignalIndex_State, PCControlSend_Review_Motor_Communication_Fail, 1000); + + return; +} + void CReviewInterface::IWC2P_SetScanEnd( int nIndex, int nPointIndex, int nPositionX, int nPositionY ) { int nModuleIndex=-1, nWsiIndex=-1; -- Gitblit v1.9.3