SDC C-Project CF Review 프로그램
kojingeun
2023-06-30 0d1dc43291d094add1afbd40d39ae48760041176
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,13 @@
   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.SetParam(CDisplayMessage::GetSingletonPtr(), strDummyFilePath);
   m_threadFileMonitor.StartThread();
   /* < KJG 20230630 - #4517 ADD End >*/
}
CReviewProcessor_CPJT::~CReviewProcessor_CPJT(void)
@@ -1228,7 +1262,8 @@
           int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
           int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
           m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
           //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
           m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
           m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
           m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
@@ -1243,7 +1278,8 @@
           int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
           int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
           m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
           //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
           m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
           m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
           m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
@@ -1278,7 +1314,8 @@
         int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
         int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
         m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
         //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
         m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
         m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
         m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
         
@@ -1294,7 +1331,8 @@
         int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
         int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
         m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
         //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
         m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
         m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
         m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
@@ -1412,7 +1450,8 @@
               int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
               int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
               m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
               //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
               m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
               m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
               m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
@@ -1427,7 +1466,8 @@
               int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
               int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
               m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
               //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
               m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
               m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
               m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
@@ -1483,7 +1523,8 @@
         int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
         int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
         m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
         //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
         m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
         m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
         m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
@@ -1498,7 +1539,8 @@
         int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
         int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
         m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
         //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
         m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
         m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
         m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
@@ -3838,6 +3880,8 @@
   }
   dFocus = dSum / double(nCalWidth*nCalHeight);
   if (dFocus >= 10.0) dFocus = 10.0;
   return dFocus;
   //#3524_210902_LYW_MOD END
   //Origin
@@ -3887,3 +3931,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;
}