From 1fd49a571338b6c946bb05dcdf59ec1468df5c50 Mon Sep 17 00:00:00 2001 From: SWK <sungwk82@diteam.co.kr> Date: 목, 22 12월 2022 12:31:43 +0900 Subject: [PATCH] ongoing50 #4403 CF AOI Reveiw TACT 지연 개선 1. 일정 시간 유지 신호 처리 시 동기화로 인한 불합리 개선 - 일정 시간 유지 필요 시 스래드풀 작업큐를 이용하여 루프처리 방식으로 변경 - 유지 신호 처리 중 출력 신호 발생 시 작업큐에 등록하여 유지 신호와 결합하여 출력 처리 2. FDC 보고 항목 중 SW 버전 체크 루프 불합리 개선 - 프로그램 시작 시 연동 프로그램 버전 체크 간 실행되지 않는 프로그램이 있는 경우 무한 루프 발생 - 무한 루프로 인한 CPU 점유 상승->루프 중간 Sleep추가 및 코드 간소화 3. 로그 메시지에 시간 ms단위 추가(황만수SM 작업 내역 병합) --- ReviewSystem/ReviewSystem/DisplayMessage.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 86 insertions(+), 20 deletions(-) diff --git a/ReviewSystem/ReviewSystem/DisplayMessage.cpp b/ReviewSystem/ReviewSystem/DisplayMessage.cpp index 8d7f0e2..0ba0382 100644 --- a/ReviewSystem/ReviewSystem/DisplayMessage.cpp +++ b/ReviewSystem/ReviewSystem/DisplayMessage.cpp @@ -8,6 +8,12 @@ SetPath(strPath); + // #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD START + DWORD dwThreadId = 0; + HANDLE hThread = CreateThread(NULL, 0, RunThreadDisplayLog, NULL, 0, &dwThreadId); + m_ThreadId = dwThreadId; + // #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END + InitializeCriticalSection(&m_csLog); } @@ -19,13 +25,17 @@ m_pFileLog = NULL; } + PostThreadMessage(m_ThreadId, WM_QUIT, 0, 0); + DeleteCriticalSection(&m_csLog); } void CDisplayMessage::SetPath(const CString& strPath) { m_strLogPath = strPath; - + CString m_GlobalLogPath; + m_strLogFile.Format(_T("D:\\DIT_LogData\\%04d%02d%02d"), m_strLogPath, m_TimeLogFile.GetYear(), m_TimeLogFile.GetMonth(), m_TimeLogFile.GetDay()); + CreateDirectory(m_strLogFile, NULL); CreateDirectory(m_strLogPath, NULL); MakeLogFile(); @@ -34,6 +44,10 @@ BOOL CDisplayMessage::MakeLogFile() { // Log 泥섎━ + CString m_GlobalLogPath; + m_strLogFile.Format(_T("D:\\DIT_LogData\\%04d%02d%02d"), m_TimeLogFile.GetYear(), m_TimeLogFile.GetMonth(), m_TimeLogFile.GetDay()); + CreateDirectory(m_strLogFile, NULL); + if (m_strLogPath.IsEmpty()) return FALSE; @@ -50,31 +64,58 @@ return TRUE; } - +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD START void CDisplayMessage::DisplayMessage(const CString& strMessage) { - WriteToFile(strMessage); +// WriteToFile(strMessage); +// +// if(m_pDM2P) +// { +// m_pDM2P->DM2P_DisplayMessage(strMessage); +// } + CString* pstrLog = new CString(strMessage); + PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); - if(m_pDM2P) - { - m_pDM2P->DM2P_DisplayMessage(strMessage); - } } +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD START void CDisplayMessage::DisplayMessage(const TCHAR* lpstrFormat, ...) { va_list list; TCHAR strText[2000] = {0}; - - va_start(list, lpstrFormat); - _vstprintf_s(strText, lpstrFormat, list); - va_end(list); - - WriteToFile(strText); - - if(m_pDM2P) + try { - m_pDM2P->DM2P_DisplayMessage(strText); + va_start(list, lpstrFormat); + _vstprintf_s(strText, lpstrFormat, list); + va_end(list); + + CString* pstrLog = new CString(strText); + PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); + } + catch (...) + { + return; + } + + +// WriteToFile(strText); +// +// if(m_pDM2P) +// { +// m_pDM2P->DM2P_DisplayMessage(strText); +// } +} +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END + +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD START +void CDisplayMessage::ThreadDisplayMessage(const CString& strMessage) +{ + WriteToFile(strMessage); + + if (m_pDM2P) + { + m_pDM2P->DM2P_DisplayMessage(strMessage); } } @@ -82,7 +123,7 @@ { if(m_pFileLog == NULL) return FALSE; - EnterCriticalSection(&m_csLog); + //EnterCriticalSection(&m_csLog); CTime time = CTime::GetCurrentTime(); CString strTimeStamp = _T(""); @@ -95,7 +136,13 @@ // �쑀�땲肄붾뱶 �뙆�씪�쓽 �떆�옉�� BOM(0xFEFF) �씠�뼱�빞 �븳�떎. TCHAR strCommand = 0xFEFF; CString strLog = _T(""); - strTimeStamp.Format(_T("[%02d:%02d:%02d]"), time.GetHour(), time.GetMinute(), time.GetSecond()); + //strTimeStamp.Format(_T("[%02d:%02d:%02d]"), time.GetHour(), time.GetMinute(), time.GetSecond()); + /*< SWK 20221221 - #4403 MOD Start >*/ +// strTimeStamp.Format(_T("[%02d:%02d:%02d_%02d:%02d:%02d]"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); + SYSTEMTIME currentTime; + ::GetLocalTime(¤tTime); + strTimeStamp.Format(_T("[%02d:%02d:%02d_%02d:%02d:%02d.%03d]"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(), currentTime.wMilliseconds); + /*< SWK 20221221 - #4403 MOD End >*/ #ifdef UNICODE strLog.Format(_T("%c%s %s\r\n"), strCommand, strTimeStamp, strMessage); #else @@ -107,10 +154,29 @@ m_pFileLog->Close(); } - LeaveCriticalSection(&m_csLog); + //LeaveCriticalSection(&m_csLog); return TRUE; } +DWORD RunThreadDisplayLog(LPVOID param) +{ + MSG msg; + while (GetMessage(&msg, NULL, 0, 0)) + { + CString* pstrLog = reinterpret_cast<CString*>(msg.wParam); + switch (msg.message) + { + case WM_DIPLAY_LOG: + + g_pLog->ThreadDisplayMessage(*pstrLog); + delete pstrLog; + break; - + default: + break; + } + } + return 0; +} +// #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END -- Gitblit v1.9.3