SDC C-Project CF Review 프로그램
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;
}