From 6d5796902a980f189f470a4e8ea7084548c52f49 Mon Sep 17 00:00:00 2001 From: KEJ <kimeungju@diteam.co.kr> Date: 월, 26 6월 2023 17:43:48 +0900 Subject: [PATCH] Ongoing80 #4528 CF AOI Review Motor Offset 기능 추가 1. Motor Offset 설정 Dlg 추가. 2. Offset 파라미터 추가. 3. Motor Offset 기능 적용 --- ReviewSystem/ReviewSystem/ReviewInterface.cpp | 517 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 371 insertions(+), 146 deletions(-) diff --git a/ReviewSystem/ReviewSystem/ReviewInterface.cpp b/ReviewSystem/ReviewSystem/ReviewInterface.cpp index 73bc99f..396ee3f 100644 --- a/ReviewSystem/ReviewSystem/ReviewInterface.cpp +++ b/ReviewSystem/ReviewSystem/ReviewInterface.cpp @@ -585,110 +585,176 @@ void CReviewInterface::threadSet3rdPartyProgramVersion(void* pArg) { CReviewInterface* pThis = (CReviewInterface*)pArg; - //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; + /*< 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(); - while ((bRetFTPUploader&bRetGRM&bRetSync) != TRUE) + 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) { - bReturn = FALSE; - - //FTPUploader S/W Version Start + //FTPUploader S/W Version 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); + if (pThis->m_nFDCFTPUploaderSWVersion = GetModuleFileLastTime(_T("FTPUploader"))) + { + g_pLog->DisplayMessage(_T("FDCFTPUploaderSWVersion = %d "), pThis->m_nFDCFTPUploaderSWVersion); + bRetFTPUploader = TRUE; + } } - - 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 + Sleep(1); + //Dit Glass Raw Messenger S/W Version 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); + if (pThis->m_nFDCGRMSWVersion = GetModuleFileLastTime(_T("Dit Glass Raw Messenger"))) + { + g_pLog->DisplayMessage(_T("FDCGRMSWVersion = %d "), pThis->m_nFDCGRMSWVersion); + bRetGRM = TRUE; + } } - - 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; - + Sleep(1); //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); + if (pThis->m_nFDCSyncSWVersion = GetModuleFileLastTime(_T("Dit Shared Memory Sync Client"))) + { + g_pLog->DisplayMessage(_T("FDCSyncSWVersion = %d "), pThis->m_nFDCSyncSWVersion); + bRetSync = TRUE; + } } - - 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 + Sleep(1); } - - finder.Close(); + /*< SWK 20221222 - #4403 MOD End >*/ } void CReviewInterface::SetReviewProgramVersion() @@ -3694,6 +3760,23 @@ pReviewOffSetTool->GetOffSetInfo(nModule, nCam, nScan, dGlassXPos,dXpos, dYpos); return TRUE; } +/* < KEJ 20230621 - #4528 ADD Start > */ +BOOL CReviewInterface::IDMO2P_GetMotorPos(int nModule, double &dXpos, double &dYpos) +{ + dXpos = m_vecModuleStatus[nModule].GetMotorPosition()->dMotorPosX; + dYpos = m_vecModuleStatus[nModule].GetMotorPosition()->dMotorPosY; + return TRUE; + +} + +BOOL CReviewInterface::CalcMotorOffSetValue(int nModule, double &dXpos, double &dYpos) +{ + CDlgMotorOffSetTool* pMotorOffSetTool = m_pView->GetMotorOffSetToolHandle(); + + pMotorOffSetTool->CalOffsetInfo(nModule, dXpos, dYpos); + return TRUE; +} +/* < KEJ 20230621 - #4528 ADD End > */ BOOL CReviewInterface::IDRO2P_SetGlassMode(BOOL bMode, int nCamidx, int nScanidx, double nXpos, double nYpos) { @@ -6626,12 +6709,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 @@ -6639,6 +6721,9 @@ MapDefectResult *pMapReviewResult = pGlassResult->GetMapDefectResult(); + BOOL bFind = FALSE; + + //Defect if (pMapReviewResult) { CDefectResult* pDefectResult = NULL; @@ -6646,28 +6731,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); } @@ -6677,21 +6762,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; + } + } + } + } + } @@ -7297,12 +7506,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; @@ -7589,44 +7798,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); @@ -8864,7 +9077,12 @@ { m_pView->ShowHWSettingMode(); } - +/* < KEJ 20230621 - #4528 ADD Start > */ +void CReviewInterface::IDL2P_OpenMotorOffSetTool() +{ + m_pView->ShowMotorOffSetTool(); +} +/* < KEJ 20230621 - #4528 ADD End > */ BOOL CReviewInterface::IDL2P_IsManualProcessMode() { return IsManualProcessMode(); @@ -9239,6 +9457,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