SDC C-Project CF Review 프로그램
LYW
2021-08-17 572aebd50409d2f11183d6ebbb9d12fe9041e7a5
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -428,6 +428,8 @@
       g_pLog->DisplayMessage(_T("[AlignResult] Glass Result is NULL!"));
       SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Signal!"));
      AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
       return;
   }
@@ -544,6 +546,8 @@
      SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!"));
   }
   AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence 변경
   SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
@@ -759,7 +763,7 @@
         if (( nTotalCount += pGlassResult->GetTotalSReviewResultCount()) > 0)
         {
            m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] Review Plan Start!"));
            //LYW DCOLL 임시조치
            //LYW DCOLL �ӽ���ġ
            CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
            if (pDitRawClient->isConnect() == TRUE)
            {
@@ -772,7 +776,7 @@
               strcpy(pSharedDefectReview->m_strRevImageName, "");
            }
            //LYW DCOLL 임시조치
            //LYW DCOLL �ӽ���ġ
            ::Sleep(nWaitTime);
            m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone();
            bExcute = ReviewStartProcessing(pGlassResult, nPlanIdx);
@@ -901,6 +905,9 @@
      break;
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
   SetSimulationMode(FALSE);
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
   return;
}
@@ -920,10 +927,18 @@
   m_pSP2P->ISP2P_SetFirstReviewLeft(TRUE);
   m_pSP2P->ISP2P_SetFirstReviewRight(TRUE);
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //Original
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!"));
    // read config file
    if(!m_pSP2P->ISP2P_System_ReadConfigFile())
       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] System Value Loading FAIL!"));   
@@ -993,7 +1008,14 @@
            {
               if (nReconnect == 3)
               {
                  SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
                  //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
                  if (GetSimulationMode() == FALSE)
                  {
                     SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
                  }
                  //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
                  //original
                  /*SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);*/
                  m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!"));
                  break;
@@ -1036,11 +1058,20 @@
         strFileName.Format(_T("%s_%s"), strGlassIDTemp, strGlassStepIdTemp);
         //업데이트시
         //������Ʈ��
         //bFileFind = FindRawBinFile(strFileName);
         bFileFind = TRUE;
         //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
         if (GetSimulationMode() == FALSE)
         {
            bFileFind = FindRawBinFile(strFileName);
         }
         else
         {
            bFileFind = TRUE;
         }
         //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
         //original
         /*bFileFind = FindRawBinFile(strFileName);*/
         pDitRawClient->SetReviewStart();
         Sleep(1000);
@@ -1145,19 +1176,36 @@
    // review camera stop
   ReviewCamera_CameraControl(CameraControlStop);   
   //AlignCamera_CameraControl(CameraControlLive);
   AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
    // send signal to plc
    if (nResultCode==0)
    {
       SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!"));
    }
    else
    {
       SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!"));
    }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      // send signal to plc
   if (GetSimulationMode() == FALSE)
   {
      if (nResultCode == 0)
      {
         SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!"));
      }
      else
      {
         SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!"));
      }
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//     send signal to plc
//         if (nResultCode==0)
//         {
//            SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//            m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!"));
//         }
//         else
//         {
//            SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
//            m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!"));
//         }
 
    // send cell data to review processorm_pDitGlass
    CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor();
@@ -1185,8 +1233,16 @@
       m_pSP2P->ISP2P_UpdateDefectFilter(pDefectFilter);
    }   
   
   SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT);
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//    SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT);
//    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!"));
    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] Loading!"));
@@ -1202,16 +1258,37 @@
{
    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] AlignStart!"));
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!"));
   AlignCamera_CameraControl(CameraControlLive);  // 210805 Align Camera Sequence ����
   Sleep(300);
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!"));
    // 1. get current glass result
    CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult();
    if (pGlassResult==NULL) {   return;   }
    if (pGlassResult==NULL)
   {
      Sleep(350);
      AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
      return;
   }
 
   const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo();
   if(pRsRcpAlignInfo == NULL)   return;
   if (pRsRcpAlignInfo == NULL)
   {
      Sleep(350);
      AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
      return;
   }
    // 2. get align camera control   
    CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl();
 
@@ -1219,11 +1296,23 @@
   if(pRsRcpAlignInfo->m_bAlignSkipMode)
   {
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Align Skip Mode !!!!!!!"));
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      if (GetSimulationMode() == FALSE)
      {
         SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
         SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
         //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
      }
      //original
//       SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
//       SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
      SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
      Sleep(350);
      AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
   }
   else
   {
@@ -1232,10 +1321,23 @@
      {
         if(pAlignCameraControl->AlignCameraDisconnectCheck() == FALSE)
         {
            SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
            m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!"));
            //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
            if (GetSimulationMode() == FALSE)
            {
               SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
               m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!"));
            }
            //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
            //original
//             SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
//             m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!"));
         }
      }      
      else
      {
         Sleep(350);
         AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
      }
      if (pGlassResult && pAlignCameraControl && pAlignCameraControl->AlignProcess())
      {
@@ -1245,18 +1347,32 @@
      {
         Sleep(1000);
         {
            SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
            m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
         SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
      }
            //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
            if (GetSimulationMode() == FALSE)
            {
               SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
               m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
               SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
               m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
            }
            //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
            //original
//             SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//             m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!"));
//             SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
//             m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
         }
         Sleep(350);
         AlignCamera_CameraControl(CameraControlStop);  // 210805 Align Camera Sequence ����
         //�ּ� Ǯ��
         // 4. send align fail signal to plc
         //SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
         //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!"));
         //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT);
         //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!"));
   }
      }
   }
@@ -1278,13 +1394,29 @@
   m_pSP2P->ISP2P_GetSignalControl()->WriteData(_T("17110"), sizeof(pDitRawClient->GetGlassData()->m_strGlassJudge), pDitRawClient->GetGlassData()->m_strGlassJudge);
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReadRawFile!"));
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!"));
    if (bFileFind == FALSE)
   {
      SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail"));
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      if (GetSimulationMode() == FALSE)
      {
         SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail"));
      }
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
      //original
//       SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail"));
      return;
   }   
@@ -1320,9 +1452,18 @@
      Sleep(1000);
      // send review ready
      SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      if (GetSimulationMode() == FALSE)
      {
         SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
         SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
      }
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
      //original
//       SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//       SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
   }
   else
   {
@@ -1350,8 +1491,16 @@
               m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount);
               // send review ready
               SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
               m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
               //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
               if (GetSimulationMode() == FALSE)
               {
                  SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
                  m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
               }
               //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
               //original
//                SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT);
//                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!"));
            }
         }
      }
@@ -1393,9 +1542,16 @@
   SetLastPointCheck(FALSE);
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] %d Tick Count"), dwTime);
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!"));
   const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo();
   if(pRsRcpAlignInfo == NULL)   return;
@@ -1458,9 +1614,18 @@
   if(FirstReviewPlanStart() <= 0)
   {
      //Sleep(1000);
      SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      if (GetSimulationMode() == FALSE)
      {
         SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
         SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
      }
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
      //original
//       SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//       SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
   }
   else
   {
@@ -1483,8 +1648,16 @@
{
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReviewEnd!"));
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
   //original
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
   CDitGlassRawClient* m_pDitGlassRaw = CDitGlassRawClient::GetInstance();
   if (m_pSP2P->ISP2P_GetWSIControl(0)!=NULL)
@@ -1509,9 +1682,18 @@
   if (GetLastPointCheck() == FALSE)
   {
      SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
      if (GetSimulationMode() == FALSE)
      {
         SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
         SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
      }
      //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
      //original
//       SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//       SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT);
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!"));
   }
   CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult();
@@ -1575,9 +1757,17 @@
      g_pLog->DisplayMessage(_T("PCControl Update Signal"));
   }
   SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
   SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT);
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
      SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT);
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!"));
   }
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
//    SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS);
//    SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT);
//    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!"));
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] ReviewEnd!"));
}
@@ -1585,9 +1775,16 @@
void CSequenceProcessor_CPJT::Process_ReviewUnloading()
{
   m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] Review Unloading!"));
   if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT))
      m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!"));
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
   if (GetSimulationMode() == FALSE)
   {
      if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT))
         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!"));
   }
   //original
   //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
//    if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT))
//       m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!"));
   
}
@@ -8605,12 +8802,12 @@
   break;
   case PCControlRecv_Autodiagnosis:
   {
      //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
      //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
      CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl();
      CString strDiagnosisMode;
      pSignalControl->ReadData(_T("11160"), 2, strDiagnosisMode);
      int nDiagnosisMode = atoi(strDiagnosisMode);
      //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
      //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
      m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d, DiagnosisMode => %d"), bSignalOn, nDiagnosisMode);
      if (bSignalOn) {
@@ -8620,7 +8817,7 @@
         
         m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode);
      }
      //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
      //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
      else
         bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0);