SDC C-Project CF Review 프로그램
Merge branch 'feature/#3561_CF_AOI_Review_Align_카메라_끊김_현상_조치' into feature/#3562_CF_AOI_Review_실행_프로그램_경로_변경
13개 파일 변경됨
410 ■■■■ 파일 변경됨
ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp 21 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewRecipeEditor/DlgReview.cpp 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DisplayMessage.cpp 17 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgControl.cpp 28 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgControl.h 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewInterface.cpp 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp 16 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewSystem.rc 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor.cpp 4 ●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor.h 15 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp 292 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.h 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/resource.h 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp
@@ -303,7 +303,7 @@
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
            //if (11000 <= GetTickCount() - stTime)
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
            if (1000 <= GetTickCount() - stTime)
            if (1500 <= GetTickCount() - stTime)
            {
                break;
            }
@@ -313,7 +313,7 @@
        m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE);
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
        //Sleep(1000);
        Sleep(500);
        Sleep(1000);
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
        CString strimagename;
@@ -888,8 +888,21 @@
        for (int nIdx = 0; nIdx < nPanelCount; nIdx++)
        {
            const SPositionData* pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx);
            const SPositionData* pDataPos = pProcessResult->GetPositionData_Squareness(nIdx);
            //LYW 210811
            const SPositionData* pSettingPos;
            const SPositionData* pDataPos;
            if (nSelModuleIndex == 1)
            {
                pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx);
                pDataPos = pProcessResult->GetPositionData_Squareness(nIdx + 3);
            }
            else
            {
                pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx);
                pDataPos = pProcessResult->GetPositionData_Squareness(nIdx);
            }
            //LYW 210811
            if (pSettingPos == NULL || pDataPos == NULL) continue;
            dMotorPosX[nIdx] = pSettingPos->dPosX;
ReviewSystem/ReviewRecipeEditor/DlgReview.cpp
@@ -290,7 +290,8 @@
                if(strArrayOption.GetSize() > 0)
                {
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityStackData());
                    //LYW ERR수정
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityGrayData());
                    m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText);
                }
            }
ReviewSystem/ReviewSystem/DisplayMessage.cpp
@@ -78,13 +78,20 @@
{
    va_list list;
    TCHAR strText[2000] = {0};
    try
    {
        va_start(list, lpstrFormat);
        _vstprintf_s(strText, lpstrFormat, list);
        va_end(list);
    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;
    }
    CString* pstrLog = new CString(strText);
    PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0);
//     WriteToFile(strText);
// 
ReviewSystem/ReviewSystem/DlgControl.cpp
@@ -30,6 +30,7 @@
    m_nMoveAxis            = MoveAxis_Center;
    m_nGlassGridViewIndex = 0;
    pDlgContol          = NULL;
    m_bAlignCamGrab        = FALSE;
}
#define ENABLE_RADIO_TIMER
@@ -111,6 +112,7 @@
    ON_BN_CLICKED(IDC_BT_REVIEW_POPUP, &CDlgControl::OnBnClickedBtReviewPopup)
    ON_BN_CLICKED(IDC_CHECK_USE_SIMULATION, &CDlgControl::OnBnClickedCheckUseSimulation)
    ON_STN_DBLCLK(IDC_STATIC_MAGNIFICATION, &CDlgControl::OnDblclkStaticMagnification)
    ON_BN_CLICKED(IDC_BUTTON_ALIGNCAM_GRAB, &CDlgControl::OnBnClickedButtonAligncamGrab)
END_MESSAGE_MAP()
@@ -184,6 +186,10 @@
                m_ctrlButtonColorCtrl.addControl(IDC_BT_REVIEW_POPUP, this);
                m_ctrlButtonColorCtrl.addControl(IDC_CHECK_USE_SIMULATION, this);
                //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD START
                m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_ALIGNCAM_GRAB, this);
                //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD END
@@ -1450,4 +1456,24 @@
    {
        (GetDlgItem(IDC_CHECK_USE_SIMULATION))->ShowWindow(SW_SHOW);
    }
}
}
//#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD START
void CDlgControl::OnBnClickedButtonAligncamGrab()
{
    CSequenceProcessor* pSequenceProcessor = m_pDC2P->IRP2P_GetSequenceProcessor();
    if (pSequenceProcessor == NULL) return;
    if (m_bAlignCamGrab == FALSE)
    {
        pSequenceProcessor->AlignCamera_CameraControl(CameraControlLive);
        m_bAlignCamGrab = TRUE;
    }
    else
    {
        pSequenceProcessor->AlignCamera_CameraControl(CameraControlStop);
        m_bAlignCamGrab = FALSE;
    }
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
}
//#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD END
ReviewSystem/ReviewSystem/DlgControl.h
@@ -209,4 +209,5 @@
    afx_msg void OnBnClickedBtReviewPopup();
    afx_msg void OnBnClickedCheckUseSimulation();
    afx_msg void OnDblclkStaticMagnification();
    afx_msg void OnBnClickedButtonAligncamGrab();
};
ReviewSystem/ReviewSystem/ReviewInterface.cpp
@@ -6525,6 +6525,10 @@
{
    if (m_pSequenceProcessor==NULL) return;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    m_pSequenceProcessor->SetSimulationMode(TRUE);
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    if (nCommand == -1)        // DBClick Date
    {
ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -1232,7 +1232,7 @@
              m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
              m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
              if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
              if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
              {
                  m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
              }
@@ -1247,7 +1247,7 @@
              m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
              m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
              if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
              if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
              {
                  m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
              }
@@ -1282,7 +1282,7 @@
            m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
            m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
            
            if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
            if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
            {
                m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
            }
@@ -1298,7 +1298,7 @@
            m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
            m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
            if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
            if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
            {
                m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
            }
@@ -1416,7 +1416,7 @@
                    m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
                    m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
                    if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
                    if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
                    {
                        m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
                    }
@@ -1431,7 +1431,7 @@
                    m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
                    m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
                    if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
                    if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
                    {
                        m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
                    }
@@ -1487,7 +1487,7 @@
            m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
            m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
            if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
            if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
            {
                m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
            }
@@ -1502,7 +1502,7 @@
            m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
            m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
            if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
            if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
            {
                m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
            }
ReviewSystem/ReviewSystem/ReviewSystem.rc
@@ -483,9 +483,9 @@
    PUSHBUTTON      "Key Jog 시작",IDC_KEY_JOD_MOVE,207,167,45,17,NOT WS_VISIBLE | NOT WS_TABSTOP
    PUSHBUTTON      "test2",IDC_BUTTON_TEST2,273,167,34,17,NOT WS_VISIBLE
    CTEXT           "Key Jog시작",IDC_KEY_JOG_MOVE,392,160,31,24
    PUSHBUTTON      "Reduce",IDC_CHECK_UI_REDUCE,436,77,51,17
    PUSHBUTTON      "Left",IDC_BUTTON_UI_LEFT,436,96,50,17
    PUSHBUTTON      "Right",IDC_BUTTON_UI_RIGHT1,436,116,50,17
    PUSHBUTTON      "Reduce",IDC_CHECK_UI_REDUCE,436,73,51,17
    PUSHBUTTON      "Left",IDC_BUTTON_UI_LEFT,436,92,50,17
    PUSHBUTTON      "Right",IDC_BUTTON_UI_RIGHT1,436,112,50,17
    CONTROL         "Track",IDC_CHECK_AFM_TRACK,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,369,77,29,57
    LTEXT           "GlassCenter X/Y(mm)",IDC_STATIC,10,105,74,8
    PUSHBUTTON      "Go",IDC_BUTTON_GLASSCENTER_GO_XY,196,101,27,17
@@ -494,6 +494,7 @@
    CONTROL         "OffSet ON",IDC_SELECT_OFFSET_ON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,418,61,63,10
    PUSHBUTTON      "ReviewPopUp",IDC_BT_REVIEW_POPUP,433,18,54,17
    CONTROL         "Use Simulation",IDC_CHECK_USE_SIMULATION,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,418,41,66,10
    PUSHBUTTON      "Align Grab",IDC_BUTTON_ALIGNCAM_GRAB,436,130,50,16
END
IDD_DLG_MODULE_INFO DIALOGEX 0, 0, 532, 187
ReviewSystem/ReviewSystem/SequenceProcessor.cpp
@@ -83,7 +83,9 @@
    m_nAlive = 0;
    m_nWsiTotalCount = 0;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    m_bSimulationMode = FALSE;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    InitializeCriticalSection(&m_csProcessStatus);
}
ReviewSystem/ReviewSystem/SequenceProcessor.h
@@ -587,10 +587,16 @@
    void SetSP2P(ISequenceProcessor2Parent* pSP2P);
    void SetLineMachineType(int nLineType, int nMachineType, CString strEqpID);
    void SetDefaultValue();
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    void SetSimulationMode(BOOL bCheck) { m_bSimulationMode = bCheck; };
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    // getter
    int        GetProcessMode() const;
    int        GetProcessStatus() const;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    BOOL GetSimulationMode() { return m_bSimulationMode; };
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    static int GetDirectionX(int nGlassDirection, int nMotorDirection);
    static int GetDirectionY(int nGlassDirection, int nMotorDirection);
@@ -614,6 +620,8 @@
    // Review, WSI Stop Siganl
    BOOL    SetMotionStop();
    // Align Camera Control command
    BOOL    AlignCamera_CameraControl(int nControlCmd);
protected:
    // common
@@ -625,9 +633,6 @@
    // PCControl Control command
    BOOL    Signal_SendSignal(int nSignalIndex);
    BOOL    PCControl_ReadTransferData(STransferData* pTransferData);
    // Align Camera Control command
    BOOL    AlignCamera_CameraControl(int nControlCmd);
    // Review Camera Control Command
    void    ReviewCamera_CameraControl(int nControlCmd);
@@ -780,4 +785,8 @@
    CTime                m_wsiStartTime;
    int                    m_nWsiTotalCount;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    BOOL                m_bSimulationMode;
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
};
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -547,6 +547,8 @@
        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!"));
@@ -903,6 +905,9 @@
        break;
    }
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
    SetSimulationMode(FALSE);
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    return;
}
@@ -922,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!"));    
@@ -995,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;
@@ -1040,9 +1060,18 @@
            //������Ʈ��
            //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);
@@ -1149,17 +1178,34 @@
    ReviewCamera_CameraControl(CameraControlStop);    
    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();
@@ -1187,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!"));
@@ -1208,8 +1262,16 @@
    AlignCamera_CameraControl(CameraControlLive);  // 210805 Align Camera Sequence ����
    Sleep(300);
    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 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();
@@ -1234,11 +1296,20 @@
    if(pRsRcpAlignInfo->m_bAlignSkipMode)
    {
        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Align Skip Mode !!!!!!!"));
        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 ����
@@ -1250,8 +1321,16 @@
        {
            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
@@ -1268,11 +1347,21 @@
        {
            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 ����
@@ -1283,7 +1372,7 @@
            //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!"));
    }
        }
    }
@@ -1305,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;
    }    
@@ -1347,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
    {
@@ -1377,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!"));
                }
            }
        }
@@ -1420,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;
@@ -1485,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
    {
@@ -1510,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)
@@ -1536,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();
@@ -1602,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!"));
}
@@ -1612,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!"));
    
}
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.h
@@ -412,7 +412,6 @@
    BOOL                m_nGlassCountCheck;
    BOOL                m_bUseAFMHomePosition;
    
    DWORD dwRevStartTickCount;
    DWORD dwRevEndTickCount;
ReviewSystem/ReviewSystem/resource.h
@@ -111,6 +111,7 @@
#define IDC_BUTTON_LEFT                 1008
#define IDC_BUTTON_APPLT_OFFSET         1008
#define IDC_BUTTON_PROGRAMEXIT          1008
#define IDC_BUTTON_ALIGNCAM_GRAB        1008
#define IDC_SPIN2                       1009
#define IDC_CHECK_REVIEW_PATH2          1009
#define IDC_CHECK_AUTO_SELECT_CAMERA    1009