From c70166f3e86ffd0528884911483c067a6b21ebdd Mon Sep 17 00:00:00 2001
From: kojingeun <diteam.co.kr>
Date: 금, 30 6월 2023 15:48:59 +0900
Subject: [PATCH] Ongoing60 #4517 CF AOI Review 결과 파일 찾기 실패 개선 1. AOIServer RawBin 폴더 연결 TimerThread 추가  - file_dummy 생성 후 Open/Close 반복(10초) 2. 프로젝트 누락 경로 및 설정 추가  - FTPUploader Include Path, Debug모드 psapi.lib

---
 ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp   |   69 ++++++++++++++++++++++++++++++++++
 ReviewSystem/ReviewSystem/ReviewSystem.vcxproj       |    4 +-
 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp |    9 ++++
 ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h     |   26 ++++++++++++
 ReviewSystem/ReviewSystem/ReviewProcessor.h          |    2 +
 5 files changed, 105 insertions(+), 5 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor.h b/ReviewSystem/ReviewSystem/ReviewProcessor.h
index b5a7c74..e2b4678 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor.h
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor.h
@@ -161,6 +161,8 @@
 	virtual int		PostProcessWsiMultiShotResult(int nThreadIdx, SReviewResult* pReviewResult)=0;
 	virtual int		PostProcessWsiVLSIResult(int nThreadIdx, SReviewResult* pReviewResult)=0;
 	virtual int		CheckMotionComplete() = 0;
+	virtual void	FileMonitorThreadStart() = 0; /* < KJG 20230630 - #4517 ADD >*/
+	virtual void	FileMonitorThreadStop() = 0; /* < KJG 20230630 - #4517 ADD >*/
 
 	virtual CString MakeWSIImageFileName( SReviewResult* pReviewResult )=0;
 	virtual double GetCentertoOrginCoordinate(double dPosX,double dPosY,int nCornercut,int nOriginDirection)=0;
diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
index 086a65f..9c8d564 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -12,10 +12,37 @@
 #include "CHReviewRecipe/RsRcpReviewInfo.h"
 #include "DitGlassRawClient.h"
 #include "LineChecker/LineChecker.h"
+
+#include <fstream> /* < KJG 20230630 - #4517 ADD >*/
 enum StackInfo { Stack_Unknown = 0, Stack_TD, Stack_SD, Stack_PD, Stack_SP, Stack_CD };
 using namespace CHImageControls;
 
-CReviewProcessor_CPJT::CReviewProcessor_CPJT(int nThreadCount) : CReviewProcessor(nThreadCount)
+const CString AOIRAWBIN_PATH = _T("\\\\126.100.100.1\\d\\DIT_ResultData\\RawBin");
+
+CString GetFormatMessageString(DWORD dwError) /* < KJG 20230630 - #4517 ADD >*/
+{
+	LPVOID lpMsgBuf;
+
+	FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
+		| FORMAT_MESSAGE_FROM_SYSTEM
+		| FORMAT_MESSAGE_IGNORE_INSERTS
+		, NULL
+		, dwError
+		, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
+		, (LPTSTR)&lpMsgBuf
+		, 0
+		, NULL
+	);
+
+	CString str;
+	str.Format(_T("%s"), lpMsgBuf);
+
+	LocalFree(lpMsgBuf);
+	return str;
+}
+
+CReviewProcessor_CPJT::CReviewProcessor_CPJT(int nThreadCount) 
+	: CReviewProcessor(nThreadCount)
 {
 	bProcessSuccess[CPJT_REVIEW_SUCCESS] = FALSE;
 	bProcessSuccess[CPJT_MEASURE_SUCCESS] = FALSE;
@@ -44,6 +71,12 @@
 	ErrorStringCode[17].Insert(17,_T("CircleCoefficientFail"));
 	ErrorStringCode[18].Insert(18,_T("ProcessSuccess"));
 	ErrorStringCode[19].Insert(19,_T("ProcessNone"));
+	
+	/* < KJG 20230630 - #4517 ADD Start >*/
+	CString strDummyFilePath;
+	strDummyFilePath.Format(_T("%s\\file_dummy"), AOIRAWBIN_PATH);
+	m_threadFileMonitor.StartThread();
+	/* < KJG 20230630 - #4517 ADD End >*/
 }
 
 CReviewProcessor_CPJT::~CReviewProcessor_CPJT(void)
@@ -3897,3 +3930,37 @@
 // 	return dFocus;
 }
 
+CTimerThreadFileMonitor::CTimerThreadFileMonitor(DWORD dwPeriod /*=10000*/, int nThreadCount /*=1*/)
+	: CTimerThreadPools(dwPeriod, nThreadCount), m_pLog(nullptr)
+{
+
+}
+
+void CTimerThreadFileMonitor::TimerThreadProcess(PVOID pParameter)
+{
+	if (m_strFilePath.IsEmpty())
+		return;
+
+	std::ofstream file(m_strFilePath);
+
+	if (file.is_open())
+	{
+
+	}
+	else
+	{
+		DWORD dwError = GetLastError();
+
+		if(m_pLog)
+			m_pLog->DisplayMessage(_T("[FileMonitor Thread] Abort! Error Code[%d][%s] File Path[%s]"), dwError, GetFormatMessageString(dwError), m_strFilePath);
+
+		AfxBeginThread([](LPVOID pParam)->UINT {
+			CTimerThreadFileMonitor *pMain = static_cast<CTimerThreadFileMonitor*>(pParam);
+			pMain->StopThread();
+
+			return 0;
+		}, this);
+	}
+
+	return;
+}
\ No newline at end of file
diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h
index 6f456d3..237549c 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h
@@ -3,6 +3,7 @@
 #include "ReviewProcessor.h"
 #include "CHEdgeTriangle/EdgeTriangle.h"
 #include "LineChecker/LineChecker.h"
+#include "CHThreadPools/TimerThreadPools.h" /* < KJG 20230630 - #4517 ADD Start >*/
 
 #define ErrorCount 20
 
@@ -14,6 +15,23 @@
 #define GLASS_SIZE_HEIGHT	2200000
 enum RPCornerCutDirection	{ RPCLeftTop=0, RPCRightTop, RPCLeftBottom,   RPCRightBottom };
 enum RPOriginDirection	{ RPOLeftTop=0, RPORightTop, RPOLeftBottom,   RPORightBottom };
+
+
+class CTimerThreadFileMonitor : public CTimerThreadPools /* < KJG 20230630 - #4517 ADD Start >*/
+{
+public:
+	explicit CTimerThreadFileMonitor(DWORD dwPeriod = 10000, int nThreadCount = 1);
+	~CTimerThreadFileMonitor() = default;
+
+	void SetParam(CDisplayMessage* pLog, CString strPath) { m_pLog = pLog; m_strFilePath = strPath; }
+
+private:
+	CDisplayMessage* m_pLog;
+	CString m_strFilePath;
+
+	void TimerThreadProcess(PVOID pParameter);
+
+};
 
 class CReviewProcessor_CPJT : public CReviewProcessor
 {
@@ -48,6 +66,9 @@
 
 	BOOL			CheckProcessSuccess(CRsRcpReviewInfo* pRsRcpReviewInfo);
 	void			ProcessSuccessReset();
+
+	void			FileMonitorThreadStart() { m_threadFileMonitor.StartThread(); } /* < KJG 20230630 - #4517 ADD Start >*/
+	void			FileMonitorThreadStop() { m_threadFileMonitor.StopThread(); } /* < KJG 20230630 - #4517 ADD Start >*/
 
 protected:
 	virtual void	WorkThreadProcess(PVOID pParameter);
@@ -111,6 +132,9 @@
 	CString m_strReviewFirst;
 	CString m_strReviewSecned;
 
+	CTimerThreadFileMonitor m_threadFileMonitor; /* < KJG 20230630 - #4517 ADD Start >*/
+
 protected:
 	CString				ErrorStringCode[ErrorCount];
-};
\ No newline at end of file
+};
+
diff --git a/ReviewSystem/ReviewSystem/ReviewSystem.vcxproj b/ReviewSystem/ReviewSystem/ReviewSystem.vcxproj
index e2bf5ed..dd5e65a 100644
--- a/ReviewSystem/ReviewSystem/ReviewSystem.vcxproj
+++ b/ReviewSystem/ReviewSystem/ReviewSystem.vcxproj
@@ -102,7 +102,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../include;../../Internal_Library/include;../../External_Library/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../include;../../Internal_Library/include;../../External_Library/include;../../FTPUploader/FTPUploader;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -118,7 +118,7 @@
       <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>CHVirtualGlassMapd_x64_vc15.lib;chartdir51.lib;CHCameraControlsd_x64_vc15.lib;LineCheckerd_x64_vc15.lib;CHImageControlsd_x64_vc15.lib;CHCommonClassesd_x64_vc15.lib;CHCommonControlsd_x64_vc15.lib;CHResultFileManagerd_x64_vc15.lib;CHReviewReciped_x64_vc15.lib;CHReviewSettingd_x64_vc15.lib;CHReviewResultd_x64_vc15.lib;CHEdgeTriangled_x64_vc15.lib;CHPathSchedulerd_x64_vc15.lib;CHMotorCalibratord_x64_vc15.lib;CHAutoLightControlsd_x64_vc15.lib;CHAlignFinderd_x64_vc15.lib;CHThreadPoolsd_x64_vc15.lib;CHReviewResultParserd_x64_vc15.lib;CHReviewDefectFinderd_x64_vc15.lib;CHReviewPrioritySorterd_x64_vc15.lib;CHDefectPickerd_x64_vc15.lib;IOCPNetworkd_x64_vc15.lib;CHMotorControlsd_x64_vc15.lib;CHLensChangeControlsd_x64_vc15.lib;CHLightControlsd_x64_vc15.lib;CHAfmControlsd_x64_vc15.lib;CHSignalControlsd_x64_vc15.lib;CHVcrControlsd_x64_vc15.lib;CHWsiControlsd_x64_vc15.lib;CHTotalPitchMeasured_x64_vc15.lib;M_AutoDiagnosisManagerd_x64_vc17.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>CHVirtualGlassMapd_x64_vc15.lib;chartdir51.lib;CHCameraControlsd_x64_vc15.lib;LineCheckerd_x64_vc15.lib;CHImageControlsd_x64_vc15.lib;CHCommonClassesd_x64_vc15.lib;CHCommonControlsd_x64_vc15.lib;CHResultFileManagerd_x64_vc15.lib;CHReviewReciped_x64_vc15.lib;CHReviewSettingd_x64_vc15.lib;CHReviewResultd_x64_vc15.lib;CHEdgeTriangled_x64_vc15.lib;CHPathSchedulerd_x64_vc15.lib;CHMotorCalibratord_x64_vc15.lib;CHAutoLightControlsd_x64_vc15.lib;CHAlignFinderd_x64_vc15.lib;CHThreadPoolsd_x64_vc15.lib;CHReviewResultParserd_x64_vc15.lib;CHReviewDefectFinderd_x64_vc15.lib;CHReviewPrioritySorterd_x64_vc15.lib;CHDefectPickerd_x64_vc15.lib;IOCPNetworkd_x64_vc15.lib;CHMotorControlsd_x64_vc15.lib;CHLensChangeControlsd_x64_vc15.lib;CHLightControlsd_x64_vc15.lib;CHAfmControlsd_x64_vc15.lib;CHSignalControlsd_x64_vc15.lib;CHVcrControlsd_x64_vc15.lib;CHWsiControlsd_x64_vc15.lib;CHTotalPitchMeasured_x64_vc15.lib;M_AutoDiagnosisManagerd_x64_vc17.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../lib;../../Internal_Library/lib;../../External_Library/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>
diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
index 78fd1fe..6f4417f 100644
--- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -954,6 +954,10 @@
 	//SetUploadResultFailCount(0);
 
 	bFileFind = FALSE;
+	
+	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] FileMonitor Thread Stop Ready"));
+	m_pSP2P->ISP2P_GetReviewProcessor()->FileMonitorThreadStop(); /* < KJG 20230630 - #4517 ADD Start >*/
+	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] FileMonitor Thread Stop Complete"));
 
 	/*< LYW 20211109 - #3662 Delete Start >*/
 	//m_pSP2P->ISP2P_GetDiagnosisHistory();
@@ -1884,7 +1888,10 @@
 	//#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END
 // 	if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT))
 // 		m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!"));
-	
+
+	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] FileMonitor Thread Start Ready"));
+	m_pSP2P->ISP2P_GetReviewProcessor()->FileMonitorThreadStart(); /* < KJG 20230630 - #4517 ADD Start >*/
+	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] FileMonitor Thread Start Complete"));
 }
 
 

--
Gitblit v1.9.3