From 3ce48f6dbeb537e252edb0d62c88a28796e36674 Mon Sep 17 00:00:00 2001
From: SWK <sungwk82@diteam.co.kr>
Date: 월, 26 12월 2022 15:04:42 +0900
Subject: [PATCH] ongoing60 #4403 CF AOI Review TACT 지연 개선 1. 신호 출력 방식 재개선  - 유지 시간이 없는 신호는 바로 출력 진행하도록 변경 2. 불필요 Delay 제거 및 시퀀스 변경  - 얼라인 측정 종료 처리 간 제어 신호 먼저 출력 후 카메라 Stop으로 변경  - 물류 정보 읽기 처리 후 1000ms Delay 삭제  - 얼라인 측정 시작(카메라 Live Start) 후 Delay 300ms -> 100ms(이미지 들어오는 시간 확보 필요)  - ReadRawFile 처리 시작 전 500ms Delay 삭제  - Path Scheduling 완료 후 Review Ready 신호 출력 전 1000ms Delay 삭제 3. 버그 수정  - 이미지 저장 경로 생성 간 예외 처리 부분 버그 수정 4. 로그 시간 출력 불합리 개선  - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음  - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경

---
 ReviewSystem/ReviewSystem/ReviewInterface.cpp |  255 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 164 insertions(+), 91 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/ReviewInterface.cpp b/ReviewSystem/ReviewSystem/ReviewInterface.cpp
index 4bb293d..944250b 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()
@@ -9369,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