| | |
| | | #include "akAOISharedSystem.h" |
| | | #include "DlgModuleInfo.h" |
| | | |
| | | #include <Psapi.h> |
| | | |
| | | using namespace CHReviewResult; |
| | | using namespace CHImageControls; |
| | | |
| | |
| | | |
| | | // 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 |
| | |
| | | |
| | | 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); |
| | |
| | | //시작할때 다 지우고 다시 복사가 필요할지 |
| | | //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) |
| | |
| | | { |
| | | 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); |
| | |
| | | { |
| | | 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(); |
| | | |
| | | 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(); |
| | |
| | | AFM_SetAFMZoomLevel(0, 0); |
| | | } |
| | | |
| | | |
| | | void CReviewInterface::SetProgramVersion() |
| | | /*< LYW 20220415 - #4086 ADD Start >*/ |
| | | void CReviewInterface::threadSet3rdPartyProgramVersion(void* pArg) |
| | | { |
| | | BOOL bReturn; |
| | | 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; |
| | | |
| | | ::GetModuleFileName( AfxGetInstanceHandle(), currentPath, MAX_PATH); |
| | | |
| | | bReturn = finder.FindFile(currentPath); |
| | | |
| | | while(bReturn) |
| | | while ((bRetFTPUploader&bRetGRM&bRetSync) != TRUE) |
| | | { |
| | | bReturn = finder.FindNextFile(); |
| | | bReturn = FALSE; |
| | | |
| | | if(finder.IsDots()) continue; |
| | | if(finder.IsDirectory()) continue; |
| | | //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); |
| | | |
| | | finder.GetLastWriteTime(timeLastWrite); |
| | | m_strProgramVersion.Format(_T("Build[ %04d.%02d.%02d %02d:%02d ]"), |
| | | timeLastWrite.GetYear(), timeLastWrite.GetMonth(), timeLastWrite.GetDay(), timeLastWrite.GetHour(), timeLastWrite.GetMinute()); |
| | | 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(); |
| | | } |
| | | |
| | | void CReviewInterface::SetReviewProgramVersion() |
| | | { |
| | | //LYW0412 |
| | | BOOL bReturn; |
| | | CFileFind finder; |
| | | CTime timeLastWrite; |
| | | TCHAR currentPath[MAX_PATH]; |
| | | CString strTemp; |
| | | |
| | | //Review S/W Version Start |
| | | ::GetModuleFileName(AfxGetInstanceHandle(), currentPath, MAX_PATH); |
| | | |
| | | bReturn = finder.FindFile(currentPath); |
| | | |
| | | while (bReturn) |
| | | { |
| | | bReturn = finder.FindNextFile(); |
| | | |
| | | if (finder.IsDots()) continue; |
| | | if (finder.IsDirectory()) continue; |
| | | |
| | | finder.GetLastWriteTime(timeLastWrite); |
| | | 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); |
| | | } |
| | | //Review S/W Version End |
| | | } |
| | | |
| | | /*< LYW 20220415 - #4086 ADD End >*/ |
| | | |
| | | void CReviewInterface::CreateSystemDirectory() |
| | | { |
| | |
| | | |
| | | 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 |
| | |
| | | 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(""); |
| | |
| | | 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; |
| | |
| | | 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) |
| | | { |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | |
| | | else |
| | | { |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START |
| | | //#3584 210923 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START |
| | | m_pSequenceProcessor->SetSimulationMode(TRUE); |
| | | g_pLog->DisplayMessage(_T("SetUserCommand = %d"), nCommand); |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END |
| | | g_pLog->DisplayMessage(_T("Set User Command = %d"),nCommand); |
| | | //#3584 210923 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END |
| | | } |
| | | |
| | | m_pSequenceProcessor->RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, nCommand); |
| | |
| | | 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; |
| | |
| | | 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) |
| | | { |