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/DisplayMessage.h | 22 +++++- ReviewSystem/ReviewSystem/DisplayMessage.cpp | 55 ++++++++++++----- ReviewSystem/bin/ReviewSystem.exe | 0 ReviewSystem/bin/CHSignalControls_x64_vc15.pdb | 0 ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp | 41 +++++++++++-- ReviewSystem/ReviewSystem/ReviewInterface.cpp | 2 ReviewSystem/include/CHSignalControls/SignalControl_DitSharedMemorySync.h | 5 + ReviewSystem/ReviewSystem/CameraControlAlign.cpp | 3 ReviewSystem/bin/ReviewSystem.pdb | 0 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp | 27 ++++++-- ReviewSystem/lib/CHSignalControls_x64_vc15.lib | 0 ReviewSystem/bin/CHSignalControls_x64_vc15.dll | 0 12 files changed, 117 insertions(+), 38 deletions(-) diff --git a/ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp b/ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp index bc35c12..20ec966 100644 --- a/ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp +++ b/ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp @@ -191,6 +191,13 @@ // return m_pSignalThread->AddThreadData(signalData); // } // + /*< SWK 20221226 - #4403 ADD Start >*/ + if (0 == nOnTime) + { + Write_SendSignal(nAddrIndex, nSignalIndex, wSignalValue != 0); + return TRUE; + } + /*< SWK 20221226 - #4403 ADD End >*/ if (m_pSignalThread == NULL) return FALSE; CSignalData signalData; @@ -202,6 +209,21 @@ return m_pSignalThread->AddThreadData(signalData); /*< SWK 20221221 - #4403 MOD End >*/ } + +/*< SWK 20221226 - #4403 ADD Start >*/ +inline void CSignalControl_DitSharedMemorySync::Write_SendSignal(int nAddrIndex, int nSignalIndex, bool bOn) +{ + int nAddress = m_pSendSignalValueAddr[nAddrIndex]; + WORD wSendValue = 1 << nSignalIndex; + + WORD wCurValue = 0; + CSingleLock localLock(&m_csWriteSignal, TRUE); + memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD)); + if (bOn) wCurValue |= wSendValue; + else wCurValue &= ~wSendValue; + memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD)); +} +/*< SWK 20221226 - #4403 ADD End >*/ void CSignalControl_DitSharedMemorySync::IST2P_RunThreadProcess(const CSignalData& signalData) { @@ -266,15 +288,18 @@ m_pSignalThread->AddThreadData(NewSignalData); return; } + /*< SWK 20221226 - #4403 MOD Start >*/ +// int nAddress = m_pSendSignalValueAddr[signalData.nAddrIndex]; +// WORD wSendValue = 1 << signalData.nSignalIndex; +// +// WORD wCurValue = 0; +// memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD)); +// if (true == signalData.wSignalValue) wCurValue |= wSendValue; +// else wCurValue &= ~wSendValue; +// memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD)); - int nAddress = m_pSendSignalValueAddr[signalData.nAddrIndex]; - WORD wSendValue = 1 << signalData.nSignalIndex; - - WORD wCurValue = 0; - memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD)); - if (true == signalData.wSignalValue) wCurValue |= wSendValue; - else wCurValue &= ~wSendValue; - memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD)); + Write_SendSignal(signalData.nAddrIndex, signalData.nSignalIndex, signalData.wSignalValue != 0); + /*< SWK 20221226 - #4403 MOD End >*/ /*< SWK 20221221 - #4403 MOD End >*/ } diff --git a/ReviewSystem/ReviewSystem/CameraControlAlign.cpp b/ReviewSystem/ReviewSystem/CameraControlAlign.cpp index 8e2f5d0..c9a8055 100644 --- a/ReviewSystem/ReviewSystem/CameraControlAlign.cpp +++ b/ReviewSystem/ReviewSystem/CameraControlAlign.cpp @@ -766,7 +766,8 @@ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); pAlignFinder->SaveResultImage(strPath); - Sleep(10); + //< SWK 20221226 - #4403 DEL > +// Sleep(10); if (nCameraIdx == 0) { m_AlignResult.strAlignFirest = strPath; diff --git a/ReviewSystem/ReviewSystem/DisplayMessage.cpp b/ReviewSystem/ReviewSystem/DisplayMessage.cpp index 0ba0382..a223f03 100644 --- a/ReviewSystem/ReviewSystem/DisplayMessage.cpp +++ b/ReviewSystem/ReviewSystem/DisplayMessage.cpp @@ -73,8 +73,14 @@ // { // m_pDM2P->DM2P_DisplayMessage(strMessage); // } - CString* pstrLog = new CString(strMessage); - PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); + /*< SWK 20221226 - #4403 MOD Start >*/ +// CString* pstrLog = new CString(strMessage); +// PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); + pLogData plogdata = new LogData; + ::GetLocalTime(&plogdata->currentTime); + plogdata->strLog = strMessage; + PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(plogdata), 0); + /*< SWK 20221226 - #4403 MOD End >*/ } // #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END @@ -90,8 +96,14 @@ _vstprintf_s(strText, lpstrFormat, list); va_end(list); - CString* pstrLog = new CString(strText); - PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); + /*< SWK 20221226 - #4403 MOD Start >*/ +// CString* pstrLog = new CString(strText); +// PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); + pLogData plogdata = new LogData; + ::GetLocalTime(&plogdata->currentTime); + plogdata->strLog = strText; + PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(plogdata), 0); + /*< SWK 20221226 - #4403 MOD End >*/ } catch (...) { @@ -109,23 +121,28 @@ // #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD END // #3417 LYWCF AOI Review �쟾�꽕鍮� Log Process媛쒖꽑 ADD START -void CDisplayMessage::ThreadDisplayMessage(const CString& strMessage) +//< SWK 20221226 - #4403 MOD > +//void CDisplayMessage::ThreadDisplayMessage(const CString& strMessage) +void CDisplayMessage::ThreadDisplayMessage(const LogData& logdata) { - WriteToFile(strMessage); + WriteToFile(logdata.currentTime, logdata.strLog); if (m_pDM2P) { - m_pDM2P->DM2P_DisplayMessage(strMessage); + m_pDM2P->DM2P_DisplayMessage(logdata.strLog); } } - -BOOL CDisplayMessage::WriteToFile(const CString& strMessage) +//< SWK 20221226 - #4403 MOD > +//BOOL CDisplayMessage::WriteToFile(const CString& strMessage) +BOOL CDisplayMessage::WriteToFile(const SYSTEMTIME& t, const CString& strMessage) { if(m_pFileLog == NULL) return FALSE; //EnterCriticalSection(&m_csLog); - CTime time = CTime::GetCurrentTime(); + //< SWK 20221226 - #4403 MOD > +// CTime time = CTime::GetCurrentTime(); + CTime time(t); CString strTimeStamp = _T(""); // �궇吏쒓� 諛붾�뚮㈃ �뙆�씪紐낆쓣 媛깆떊�빐�꽌 �벖�떎. if ((time.GetMonth() != m_TimeLogFile.GetMonth()) || (time.GetDay() != m_TimeLogFile.GetDay()) || !m_pFileLog) @@ -139,9 +156,7 @@ //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); + strTimeStamp.Format(_T("[%02d:%02d:%02d_%02d:%02d:%02d.%03d]"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(), t.wMilliseconds); /*< SWK 20221221 - #4403 MOD End >*/ #ifdef UNICODE strLog.Format(_T("%c%s %s\r\n"), strCommand, strTimeStamp, strMessage); @@ -159,18 +174,24 @@ return TRUE; } -DWORD RunThreadDisplayLog(LPVOID param) +DWORD CDisplayMessage::RunThreadDisplayLog(LPVOID param) { MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { - CString* pstrLog = reinterpret_cast<CString*>(msg.wParam); + //< SWK 20221226 - #4403 MOD > +// CString* pstrLog = reinterpret_cast<CString*>(msg.wParam); + CDisplayMessage::pLogData plogdata = reinterpret_cast<CDisplayMessage::pLogData>(msg.wParam); switch (msg.message) { case WM_DIPLAY_LOG: - g_pLog->ThreadDisplayMessage(*pstrLog); - delete pstrLog; + /*< SWK 20221226 - #4403 MOD Start >*/ +// g_pLog->ThreadDisplayMessage(*pstrLog); +// delete pstrLog; + g_pLog->ThreadDisplayMessage(*plogdata); + delete plogdata; + /*< SWK 20221226 - #4403 MOD End >*/ break; default: diff --git a/ReviewSystem/ReviewSystem/DisplayMessage.h b/ReviewSystem/ReviewSystem/DisplayMessage.h index 4c5800c..70533f9 100644 --- a/ReviewSystem/ReviewSystem/DisplayMessage.h +++ b/ReviewSystem/ReviewSystem/DisplayMessage.h @@ -11,10 +11,16 @@ virtual void DM2P_DisplayMessage(const TCHAR* lpstrFormat, ...) = 0; }; -DWORD RunThreadDisplayLog(LPVOID param); class CDisplayMessage : public Singleton<CDisplayMessage> { + /*< SWK 20221226 - #4403 ADD Start >*/ + typedef struct _Log_Data + { + SYSTEMTIME currentTime; + CString strLog; + }LogData, *pLogData; + /*< SWK 20221226 - #4403 ADD End >*/ public: CDisplayMessage(const CString& strPath); virtual ~CDisplayMessage(void); @@ -22,13 +28,19 @@ public: void SetDM2P(IDisplayMessage2Parent* pDM2P) { m_pDM2P = pDM2P; } void SetPath(const CString& strPath); - BOOL MakeLogFile(); - BOOL WriteToFile(const CString& strMessage); void DisplayMessage(const CString& strMessage); void DisplayMessage(const TCHAR* lpstrFormat, ...); - void ThreadDisplayMessage(const CString & strMessage); + //< SWK 20221226 - #4403 MOD > +// void ThreadDisplayMessage(const CString & strMessage); + void ThreadDisplayMessage(const LogData& logdata); +protected: + BOOL MakeLogFile(); + //< SWK 20221226 - #4403 MOD > +// BOOL WriteToFile(const CString& strMessage); + BOOL WriteToFile(const SYSTEMTIME& time, const CString& strMessage); -public: + static DWORD RunThreadDisplayLog(LPVOID param); +private: CTime m_TimeLogFile; CFile* m_pFileLog; CString m_strLogPath; diff --git a/ReviewSystem/ReviewSystem/ReviewInterface.cpp b/ReviewSystem/ReviewSystem/ReviewInterface.cpp index c1b86eb..944250b 100644 --- a/ReviewSystem/ReviewSystem/ReviewInterface.cpp +++ b/ReviewSystem/ReviewSystem/ReviewInterface.cpp @@ -732,6 +732,7 @@ bRetFTPUploader = TRUE; } } + Sleep(1); //Dit Glass Raw Messenger S/W Version if (bRetGRM == FALSE) { @@ -741,6 +742,7 @@ bRetGRM = TRUE; } } + Sleep(1); //Dit Shared Memory Sync Client S/W Version Start if (bRetSync == FALSE) { diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp index d9e48c2..4885de2 100644 --- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp +++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp @@ -550,10 +550,16 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); } - AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 蹂�寃� - + /*< SWK 20221226 - #4403 MOD Start >*/ +// AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 蹂�寃� +// +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); + + AlignCamera_CameraControl(CameraControlStop); + /*< SWK 20221226 - #4403 MOD End >*/ // LJY-20180905 m_pSP2P->ISP2P_UpdateAlignResultStatus(0, pGlassResult); @@ -1101,7 +1107,8 @@ /*bFileFind = FindRawBinFile(strFileName);*/ pDitRawClient->SetReviewStart(); - Sleep(1000); + //< SWK 20221226 - #4403 DEL > +// Sleep(1000); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data Read Success!")); @@ -1318,7 +1325,8 @@ } //#3561 210908 LYW ADD End - Sleep(300); + //< SWK 20221226 - #4403 MOD > + Sleep(100); //original // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) @@ -1440,7 +1448,9 @@ //pDitRawClient->SetReviewStart(); - Sleep(500); + //< SWK 20221226 - #4403 DEL > +// Sleep(500); + //CString strJudgeData; m_pSP2P->ISP2P_GetSignalControl()->WriteData(_T("17110"), sizeof(pDitRawClient->GetGlassData()->m_strGlassJudge), pDitRawClient->GetGlassData()->m_strGlassJudge); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReadRawFile!")); @@ -1501,7 +1511,8 @@ int nTotalPlanCount = CalculatePlanData(pGlassResult); m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); - Sleep(1000); + //< SWK 20221226 - #4403 DEL > +// Sleep(1000); // send review ready //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START if (GetSimulationMode() == FALSE) @@ -3674,7 +3685,9 @@ tmServerLoadingTime = CTime::GetCurrentTime(); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] access Shared Memory Fail")); strPath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), pNetworkInfo->m_strUploadImagePath, strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); - strImagePath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); + //< SWK 20221226 - #4403 MOD > +// strImagePath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); + strImagePath.Format(_T("%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); CreateDirectory(strPath, NULL); pReviewProcessor->SetUploadImagePath(strPath); pReviewProcessor->SetReviewImagePath(strImagePath); diff --git a/ReviewSystem/bin/CHSignalControls_x64_vc15.dll b/ReviewSystem/bin/CHSignalControls_x64_vc15.dll index 9b04048..edabec8 100644 --- a/ReviewSystem/bin/CHSignalControls_x64_vc15.dll +++ b/ReviewSystem/bin/CHSignalControls_x64_vc15.dll Binary files differ diff --git a/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb b/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb index 4286b2a..9626f6f 100644 --- a/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb +++ b/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb Binary files differ diff --git a/ReviewSystem/bin/ReviewSystem.exe b/ReviewSystem/bin/ReviewSystem.exe index bad3dcb..195b9fa 100644 --- a/ReviewSystem/bin/ReviewSystem.exe +++ b/ReviewSystem/bin/ReviewSystem.exe Binary files differ diff --git a/ReviewSystem/bin/ReviewSystem.pdb b/ReviewSystem/bin/ReviewSystem.pdb index 391ff2a..aa837ae 100644 --- a/ReviewSystem/bin/ReviewSystem.pdb +++ b/ReviewSystem/bin/ReviewSystem.pdb Binary files differ diff --git a/ReviewSystem/include/CHSignalControls/SignalControl_DitSharedMemorySync.h b/ReviewSystem/include/CHSignalControls/SignalControl_DitSharedMemorySync.h index 4a62bfb..cf654d5 100644 --- a/ReviewSystem/include/CHSignalControls/SignalControl_DitSharedMemorySync.h +++ b/ReviewSystem/include/CHSignalControls/SignalControl_DitSharedMemorySync.h @@ -14,6 +14,11 @@ virtual BOOL Read_ReceiveSignal(int nAddrIndex, WORD& dwValue); virtual BOOL Write_SendSignal(int nAddrIndex, int nSignalIndex, WORD wSignalValue, int nOnTime=1000); + /*< SWK 20221226 - #4403 ADD Start >*/ +protected: + inline void Write_SendSignal(int nAddrIndex, int nSignalIndex, bool bOn); +public: + /*< SWK 20221226 - #4403 ADD End >*/ virtual BOOL Read_SendSignal(int nAddrIndex, WORD& dwValue); virtual BOOL ReadData(const CString strAddr, int nSize, CString& strData); virtual BOOL ReadData(const CString strAddr, int nSize, char* pData); diff --git a/ReviewSystem/lib/CHSignalControls_x64_vc15.lib b/ReviewSystem/lib/CHSignalControls_x64_vc15.lib index d6d1993..ce2773d 100644 --- a/ReviewSystem/lib/CHSignalControls_x64_vc15.lib +++ b/ReviewSystem/lib/CHSignalControls_x64_vc15.lib Binary files differ -- Gitblit v1.9.3