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. 로그 시간 출력 불합리 개선  - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음  - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경

---
 DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp |  176 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 120 insertions(+), 56 deletions(-)

diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
index d5d79d1..290b0fd 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
@@ -59,11 +59,15 @@
 
 	strFileName.Format("%s\\%s", m_strLocalPath, pGlassID);
 
+
 	FILE* pf = fopen(strFileName.GetBuffer(0), "r");
 
 	if (pf == NULL)
 		return FALSE;
 		
+	/* <KMH 20220407 : #4053 ADD Start> */
+	AKLOG("Function : Read File Path: %s" , strFileName);
+	/* <KMH 20220407 : #4053 ADD End> */
 	/*< KJG 20211208 : #3696 ADD Start >*/
 	CDitGlassRawClient	GlassRawClient;
 	GlassRawClient.ConnectServer();
@@ -178,8 +182,12 @@
 				StackDefect.m_StackInfo = Stack_Unknown;
 
 			pReadPoint = getParsingData(pReadPoint, 2, &StackDefect.m_nStackStepCount);
-			pReadPoint = getParsingData(pReadPoint, 60, &strtemp); // Stack Step m_strStackFirst	
-			strncpy(StackDefect.m_strStackFirst, strtemp.GetBuffer(0), 60);
+		/* < KMH 20220712 : #4230 MOD Start > */
+			//pReadPoint = getParsingData(pReadPoint, 60, &strtemp); // Stack Step m_strStackFirst	
+			//strncpy(StackDefect.m_strStackFirst, strtemp.GetBuffer(0), 60);
+			pReadPoint = getParsingData(pReadPoint, 400, &strtemp); // Stack Step m_strStackFirst
+			strncpy(StackDefect.m_strStackFirst, strtemp.GetBuffer(0), 400);
+		/* < KMH 20220712 : #4230 MOD End > */
 			pReadPoint = getParsingData(pReadPoint, 16, &strtemp); // ReviewImageName m_strRevImageName
 			pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미사용
 			pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미사용
@@ -368,7 +376,9 @@
 	akFileDB.getItem("RawMerge_Use", &m_bStackUse, 0);
 	akFileDB.getItem("RawMerge_LocalPath", m_strLocalPath, "D:\\DIT_ResultData\\RawMerge");
 
-	if (m_bStackUse && m_nThreadStackFileReadFlag == 0)
+	//< SWK 20220413 - #4053 MOD >
+//	if (/*m_bStackUse && */m_nThreadStackFileReadFlag == 0)
+	if (m_nThreadStackFileReadFlag == 0)
 	{
 		_beginthread(threadResultFileRead, NULL, this);
 	}
@@ -395,7 +405,8 @@
 			nReadFailCount = 0;
 
 			AKLOG("RawMerge File Read Start : %s\\%s", pThis->m_strLocalPath, strGlassID);
-			Sleep(3000);
+			//< SWK 20220413 - #4053 DEL >
+//			Sleep(3000);
 			while (pThis->m_nProcessState == RPS_StateFileRead && pThis->m_nThreadStackFileReadFlag == 1)
 			{
 				if ((nThreadCount++ % 20) != 0) //명령 수행을 빠르게 감지 위한 조치
@@ -411,15 +422,19 @@
 				}
 
 				nReadFailCount++;
-				AKLOG("RawMerge File Read Try : %d", nReadFailCount);
+				//< SWK 20220413 - #4053 DEL >
+//				AKLOG("RawMerge File Read Try : %d", nReadFailCount);
 
 				if (nReadFailCount > 10)
 				{
 					pThis->m_nProcessState = RPS_ResultReadFail;
 					break;
 				}
+				//< SWK 20220413 - #4053 ADD >
+				AKLOG("RawMerge File Read Try : %d", nReadFailCount);
 
-				Sleep(50);
+				//< SWK 20220413 - #4053 DEL >
+//				Sleep(50);
 			}
 			if (pThis->m_nProcessState != RPS_ResultReadOK)
 			{
@@ -433,57 +448,90 @@
 	pThis->m_nThreadStackFileReadFlag = 0;
 }
 /* <LJC 20211122 : #3820 ADD Start> */
-void CRawResultReader::ProcessResultFileRead(void * pArg)
+/*< SWK 20220413 - #4053 MOD Start >*/
+//void CRawResultReader::ProcessResultFileRead(void * pArg)
+void CRawResultReader::ProcessResultFileRead()
+/*< SWK 20220413 - #4053 MOD End >*/
 {
-	CRawResultReader* pThis = (CRawResultReader*)pArg;
-
-	pThis->m_nThreadStackFileReadFlag = 1;
+	/*< SWK 20220413 - #4053 MOD Start >*/
+//	CRawResultReader* pThis = (CRawResultReader*)pArg;
+//
+//	pThis->m_nThreadStackFileReadFlag = 1;
+// 	int nReadFailCount = 0;
+// 	int nThreadCount = 0;
+//	CString strGlassID;
+//
+// 	while (pThis->m_nThreadStackFileReadFlag == 1)
+// 	{
+//		if (pThis->m_nProcessState == RPS_CmdFileRead) //스택파일 읽기 수행 [김태현 2019/1/12]
+//		{
+//			strGlassID = pThis->m_strGlassID;
+//
+//			pThis->m_nProcessState = RPS_StateFileRead;
+// 			nThreadCount = 0;
+// 			nReadFailCount = 0;
+//			AKLOG("RawMerge File Read Start : %s\\%s", pThis->m_strLocalPath, strGlassID);
+//			Sleep(3000);
+// 			while (pThis->m_nProcessState == RPS_StateFileRead && pThis->m_nThreadStackFileReadFlag == 1)
+// 			{
+// 				if (pThis->openFile(strGlassID.GetBuffer(0)) == TRUE)
+// 				{
+// 					pThis->m_nProcessState = RPS_ResultReadOK;
+// 					AKLOG("RawMerge File Read Complete ");
+// 					break;
+// 				}
+// 				nReadFailCount++;
+//				AKLOG("RawMerge File Read Try : %d", nReadFailCount);
+// 				if (nReadFailCount > 10)
+// 				{
+// 					pThis->m_nProcessState = RPS_ResultReadFail;
+// 					break;
+// 				}
+//				Sleep(50);
+// 			}
+// 			if (pThis->m_nProcessState != RPS_ResultReadOK)
+// 			{
+// 				pThis->m_nProcessState = RPS_ResultReadFail;
+// 			}
+//		}
+// 		if (nReadFailCount)
+// 			Sleep(500);
+// 	}
+// 	pThis->m_nThreadStackFileReadFlag = 0;
+	m_nProcessState = RPS_StateFileRead;
 	int nReadFailCount = 0;
 	int nThreadCount = 0;
-	CString strGlassID;
-
-	while (pThis->m_nThreadStackFileReadFlag == 1)
+	AKLOG("RawMerge File Read Start : %s\\%s", m_strLocalPath, m_strGlassID);
+	while (m_nProcessState == RPS_StateFileRead && m_nThreadStackFileReadFlag == 1)
 	{
-		if (pThis->m_nProcessState == RPS_CmdFileRead) //스택파일 읽기 수행 [김태현 2019/1/12]
+		if (openFile(m_strGlassID.GetBuffer(0)) == TRUE)
 		{
-			strGlassID = pThis->m_strGlassID;
-
-			pThis->m_nProcessState = RPS_StateFileRead;
-			nThreadCount = 0;
-			nReadFailCount = 0;
-
-			AKLOG("RawMerge File Read Start : %s\\%s", pThis->m_strLocalPath, strGlassID);
-			Sleep(3000);
-			while (pThis->m_nProcessState == RPS_StateFileRead && pThis->m_nThreadStackFileReadFlag == 1)
-			{
-				if (pThis->openFile(strGlassID.GetBuffer(0)) == TRUE)
-				{
-					pThis->m_nProcessState = RPS_ResultReadOK;
-					AKLOG("RawMerge File Read Complete ");
-					break;
-				}
-				nReadFailCount++;
-				AKLOG("RawMerge File Read Try : %d", nReadFailCount);
-				if (nReadFailCount > 10)
-				{
-					pThis->m_nProcessState = RPS_ResultReadFail;
-					break;
-				}
-				Sleep(50);
-			}
-			if (pThis->m_nProcessState != RPS_ResultReadOK)
-			{
-				pThis->m_nProcessState = RPS_ResultReadFail;
-			}
+			m_nProcessState = RPS_ResultReadOK;
+			AKLOG("RawMerge File Read Complete ");
+			break;
 		}
-		if (nReadFailCount)
-			Sleep(500);
+		nReadFailCount++;
+		if (nReadFailCount > 10)
+		{
+			m_nProcessState = RPS_ResultReadFail;
+			break;
+		}
+		AKLOG("RawMerge File Read Try : %d", nReadFailCount);
 	}
-	pThis->m_nThreadStackFileReadFlag = 0;
+	if (m_nProcessState != RPS_ResultReadOK)
+	{
+		m_nProcessState = RPS_ResultReadFail;
+	}
+	/*< SWK 20220413 - #4053 MOD End >*/
 }
 /* <LJC 20211122 : #3820 ADD End> */
 BOOL CRawResultReader::RawMergeFileReadStart(char* pGlassID)
 {
+	/*< SWK 20220413 - #4053 ADD Start >*/
+	m_strGlassID = pGlassID;
+	m_nProcessState = RPS_CmdFileRead;
+	/*< SWK 20220413 - #4053 ADD End >*/
+
 	if (m_nThreadStackFileReadFlag == 0)
 	{
 		_beginthread(threadResultFileRead, NULL, this);
@@ -495,27 +543,43 @@
 		while (m_nProcessState == RPS_CmdFileStop) Sleep(0);
 	}
 
-	m_strGlassID = pGlassID;
-	m_nProcessState = RPS_CmdFileRead;
+	/*< SWK 20220413 - #4053 DEL Start >
+// 	m_strGlassID = pGlassID;
+// 	m_nProcessState = RPS_CmdFileRead;
+	< SWK 20220413 - #4053 DEL End >*/
 	
 	return TRUE;
 }
 /* <LJC 20211122 : #3820 ADD Start> */
 BOOL CRawResultReader::ProcessRawMergeFileReadStart(char * pGlassID)
 {
-
 	if (m_nThreadStackFileReadFlag == 0)
 	{
-		ProcessResultFileRead(this);
+		//< SWK 20220413 - #4053 MOD >
+//		ProcessResultFileRead(this);
+		ProcessResultFileRead();
 	}
-	if (m_nProcessState == RPS_StateFileRead)
+	/*< SWK 20220413 - #4053 MOD Start >*/
+// 	if (m_nProcessState == RPS_StateFileRead)
+// 	{
+// 		m_nProcessState = RPS_CmdFileStop;
+// 		while (m_nProcessState == RPS_CmdFileStop) Sleep(0);
+// 	}
+// 
+// 	m_strGlassID = pGlassID;
+// 	m_nProcessState = RPS_CmdFileRead;
+	else
 	{
-		m_nProcessState = RPS_CmdFileStop;
-		while (m_nProcessState == RPS_CmdFileStop) Sleep(0);
-	}
+		if (m_nProcessState == RPS_StateFileRead)
+		{
+			m_nProcessState = RPS_CmdFileStop;
+			while (!(m_nProcessState == RPS_ResultReadOK || m_nProcessState == RPS_ResultReadFail)) Sleep(0);
+		}
 
-	m_strGlassID = pGlassID;
-	m_nProcessState = RPS_CmdFileRead;
+		m_strGlassID = pGlassID;
+		m_nProcessState = RPS_CmdFileRead;
+	}
+	/*< SWK 20220413 - #4053 MOD End >*/
 
 	return TRUE;
 }

--
Gitblit v1.9.3