SDC C-Project CF Review 프로그램
14개 파일 변경됨
282 ■■■■■ 파일 변경됨
ReviewSystem/CHReviewResult/GlassResult.cpp 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/M_AutoDiagnosisManager/DiagnosisInfo.cpp 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp 32 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/CameraController.cpp 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Flatness.cpp 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Setting.cpp 24 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Squareness.cpp 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Wsi.cpp 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewInterface.cpp 18 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewInterface.h 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp 101 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor.h 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp 34 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/M_AutoDiagnosisManager/DiagnosisInfo.h 24 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewResult/GlassResult.cpp
@@ -161,8 +161,8 @@
    //FDC보고용 Review Contrast
    //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD Start
    nReview00ImageContrast = 50;
    nReview01ImageContrast = 50;
    nReview00ImageContrast = 5;
    nReview01ImageContrast = 5;
    //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD End
    // defect result
@@ -312,8 +312,8 @@
    //FDC보고용 Review Contrast
    //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD Start
    nReview00ImageContrast = 50;
    nReview01ImageContrast = 50;
    nReview00ImageContrast = 5;
    nReview01ImageContrast = 5;
    //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD End
    //// defect result
    //for (MapDefectResultIt it = m_mapDefectResult.begin(); it != m_mapDefectResult.end(); it++)
ReviewSystem/M_AutoDiagnosisManager/DiagnosisInfo.cpp
@@ -19,12 +19,12 @@
    file.GetItem(_T("FLATNESS_JUDGE_DATA_Z_RANGE"), m_dJudgeData_ZRange, 0);
    file.GetItem(_T("FLATNESS_GLASS_X"), m_nGlassSizeX, 0);
    file.GetItem(_T("FLATNESS_GLASS_Y"), m_nGlassSizeY, 0);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    file.GetItem(_T("FLATNESS_SKIPMODE"), m_nFlatnessSkipMode, 0);
    file.GetItem(_T("SQUARENESS_STANDARD"), m_dSquarenessStandard, 0);
    file.GetItem(_T("SQUARENESS_STANDARD2"), m_dSquarenessStandard2, 0);
    file.GetItem(_T("WSI_STANDARD"), m_dWSIStandard, 0);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    file.GetItem(_T("FLATNESS_MODE"), m_nFlatnessMode, 0);
    file.GetItem(_T("FLATNESS_RANGECOUNT"), m_nRangeCount_Flatness, 0);
    file.GetItem(_T("WSI_PANEL_COUNT"), m_nPanelCount_Wsi, 0);
ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp
@@ -62,7 +62,7 @@
        m_pManager->m_bProcessAll = true;
        ProcessAll();
        break;
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
        /*< LYW 20210719 : #3517 ADD Start >*/
    case DiagnosisMode_Review :
        strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review START"));
        m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
@@ -116,7 +116,7 @@
            m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
        }
        break;
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
        /*< LYW 20210719 : #3517 ADD End >*/
    case DiagnosisMode_Flatness:
        m_pManager->m_bProcessAll = false;
        ProcessFlatness();
@@ -167,7 +167,7 @@
    m_pDP2P->IDP2P_SetDialogTap(1);
    ProcessFlatness();
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    //Sleep(2000);
    Sleep(1000);
@@ -175,7 +175,7 @@
        strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
        m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    m_pManager->m_bProcessAll = false;
@@ -300,9 +300,9 @@
        int stTime = GetTickCount();
        while (1)
        {
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
            /*< LYW 20210719 : #3517 ADD Start >*/
            //if (11000 <= GetTickCount() - stTime)
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
            /*< LYW 20210719 : #3517 ADD End >*/
            if (1500 <= GetTickCount() - stTime)
            {
                break;
@@ -311,10 +311,10 @@
        }
        m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE);
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
        /*< LYW 20210719 : #3517 ADD Start >*/
        //Sleep(1000);
        Sleep(1000);
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
        /*< LYW 20210719 : #3517 ADD End >*/
        CString strimagename;
        strimagename.Format(_T("%s_Module[%d]Index[%d].bmp"), m_pManager->m_strResultImageFileName, nSelModuleIndex, nIdx);
@@ -462,10 +462,10 @@
        }
        m_pDP2P->IDP2P_SetWsiManualMeasure(nSelModuleIndex, dXpos, dYpos);
        // move panel
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
        /*< LYW 20210719 : #3517 ADD Start >*/
        //Sleep(2000);
        Sleep(1000);
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
        /*< LYW 20210719 : #3517 ADD End >*/
        m_pDP2P->IDP2P_MotorGo(nSelModuleIndex, dXpos, dYpos);
        if (m_pDP2P->IDP2P_IsGantryMotionEnd(nSelModuleIndex) == FALSE)
@@ -477,10 +477,10 @@
        int stTime = GetTickCount();
        while (1)
        {
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
            /*< LYW 20210719 : #3517 ADD Start >*/
            //if (10000 <= GetTickCount() - stTime)
            if (11000 <= GetTickCount() - stTime)
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
            /*< LYW 20210719 : #3517 ADD End >*/
            {
                break;
            }
@@ -545,14 +545,14 @@
    CDiagnosisInfo * pSettingInfo = m_pManager->GetDiagnosisInfo();
    if (pSettingInfo == NULL) return 0;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    if (pSettingInfo->GetFlastnessSkipMode() == TRUE) {
        strMessage.Format(_T("[CDiagnosisProcessor] FlastnessSkipMode!"));
        m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
        return 0;
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    int nSelModuleIndex = m_pDP2P->IDP2P_GetSelectedModuleIndex();
    int nFlatnessMode = pSettingInfo->GetFlatnessMode();
@@ -593,10 +593,10 @@
        {
            // AF Home
            m_pDP2P->IDP2P_AFMHomePosition(0);
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
            /*< LYW 20210719 : #3517 ADD Start >*/
            //Sleep(5000);
            Sleep(1000);
            //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
            /*< LYW 20210719 : #3517 ADD End >*/
            m_pDP2P->IDP2P_SetAFMTracking(0, TRUE);
            Sleep(500);
        }
ReviewSystem/ReviewSystem/CameraController.cpp
@@ -268,9 +268,19 @@
    
    for (VectorCameraControlIt it=m_vecCameraControl.begin(); it!=m_vecCameraControl.end(); it++)
    {
        (*it)->SetTriggerMode(ModeInternal);
        int nSub = (*it)->Grab();
        //#3561 210908 LYW ADD Start
        int nSub;
        try
        {
            (*it)->SetTriggerMode(ModeInternal);
            nSub = (*it)->Grab();
        }
        catch (...)
        {
            nSub = FALSE;
        }
        //#3561 210908 LYW ADD End
        if (nSub==1)
            g_pLog->DisplayMessage(_T("[CameraController]Camera_Grab Success![ModeInternal]"));
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Flatness.cpp
@@ -983,7 +983,7 @@
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    if (m_pDiagnosisManager->CheckManualMode() == FALSE)
    {
        CString strMessage;
@@ -994,7 +994,7 @@
            return;
        }
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    if (m_bState == FALSE)
    {
@@ -1013,7 +1013,7 @@
void CDlgSelfDiagnosis_Flatness::OnBnClickedButtonManual()
{
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    if (m_pDiagnosisManager->CheckManualMode() == FALSE)
    {
        CString strMessage;
@@ -1024,7 +1024,7 @@
            return;
        }
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    m_pDiagnosisManager->ManualMeasure_Flatness();
}
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Setting.cpp
@@ -56,12 +56,12 @@
    DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_Y, m_editPanelPosY);
    DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_X2, m_editPanelPosX2);
    DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_Y2, m_editPanelPosY2);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    DDX_Control(pDX, IDC_CHECK_SELF_DIAGNOSIS_FLATNESS_SKIP, m_CheckFlatnessSkip);
    DDX_Control(pDX, IDC_EDIT_SQUARENESS_STANDARD, m_editSquarenessStandard);
    DDX_Control(pDX, IDC_EDIT_SQUARENESS_STANDARD2, m_editSquarenessStandard2);
    DDX_Control(pDX, IDC_EDIT_WSI_STANDARD, m_editWSIStandard);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_X, m_dEditReviewPanelPosX);
    DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_Y, m_dEditReviewPanelPosY);
    DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_X2, m_dEditReviewPanelPosX2);
@@ -117,11 +117,11 @@
BOOL CDlgSelfDiagnosis_Setting::ReadAutoDiagnosisConfigFile()
{
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    CString strConfigFilePath = _T("");
    strConfigFilePath.Format(_T("%s\\%s"), REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_NAME);
    m_pDiagnosisManager->LoadSettingConfigFile(strConfigFilePath);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo();
    if (pSettingInfo == NULL)
@@ -143,13 +143,13 @@
    strTemp.Format("%f", pSettingInfo->GetJudgeData_Degree());
    m_editJudgeData_Degree.SetWindowTextA(strTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    strTemp.Format("%f", pSettingInfo->GetSquarenessStandard());
    m_editSquarenessStandard.SetWindowTextA(strTemp);
    strTemp.Format("%f", pSettingInfo->GetSquarenessStandard2());
    m_editSquarenessStandard2.SetWindowTextA(strTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    strTemp.Format("%d", pSettingInfo->GetCameraFrameWidth());
    m_editFrameWidth.SetWindowTextA(strTemp);
@@ -183,9 +183,9 @@
    strTemp.Format("%d", pSettingInfo->GetGlassSizeY_Flatness());
    m_editGlassSizeY.SetWindowTextA(strTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    m_CheckFlatnessSkip.SetCheck(pSettingInfo->GetFlastnessSkipMode());
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    strTemp.Format("%d", pSettingInfo->GetPanelCount_Wsi());
    m_editPanelCount_Wsi.SetWindowTextA(strTemp);
@@ -193,10 +193,10 @@
    strTemp.Format("%f", pSettingInfo->GetJudgeData_3Sigma());
    m_editJudgeData_3Sigma.SetWindowTextA(strTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    strTemp.Format("%f", pSettingInfo->GetWSIStandard());
    m_editWSIStandard.SetWindowTextA(strTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    strTemp.Format("%f", pSettingInfo->GetPanelPosX_Wsi());
    m_editPanelPosX.SetWindowTextA(strTemp);
@@ -303,7 +303,7 @@
    nTemp = atoi(strTemp);
    macroFile.SetItem(strItem, nTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    strItem.Format(_T("FLATNESS_SKIPMODE"));
    nTemp = m_CheckFlatnessSkip.GetCheck();
    macroFile.SetItem(strItem, nTemp);
@@ -323,7 +323,7 @@
    dTemp = atof(strTemp);
    macroFile.SetItem(strItem, dTemp);
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    strItem.Format(_T("WSI_PANEL_COUNT"));
    m_editPanelCount_Wsi.GetWindowTextA(strTemp);
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Squareness.cpp
@@ -552,7 +552,7 @@
    if (m_pDiagnosisManager == NULL) return;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    if (m_pDiagnosisManager->CheckManualMode() == FALSE)
    {
        CString strMessage;
@@ -563,7 +563,7 @@
            return;
        }
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    GetDialogControls();
ReviewSystem/ReviewSystem/DlgSelfDiagnosis_Wsi.cpp
@@ -68,7 +68,7 @@
    if (m_pDiagnosisManager == NULL) return;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    if (m_pDiagnosisManager->CheckManualMode() == FALSE)
    {
        CString strMessage;
@@ -79,7 +79,7 @@
            return;
        }
    }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    /*< LYW 20210719 : #3517 ADD End >*/
    //GetDialogControls();
ReviewSystem/ReviewSystem/ReviewInterface.cpp
@@ -6525,10 +6525,6 @@
{
    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
    {
@@ -6537,6 +6533,7 @@
        
        m_pDlgDiagnosis->ShowWindow(SW_SHOW);
        return;
        /*
        if (m_pSignalControl)
        {
@@ -6554,6 +6551,14 @@
    {
        g_pLog->DisplayMessage(_T("Machine Mode is not Manual or Review Mode!"));
        return;
    }
    else
    {
        //#3584 210923 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD START
        m_pSequenceProcessor->SetSimulationMode(TRUE);
        g_pLog->DisplayMessage(_T("Set User Command = %d"),nCommand);
        //#3584 210923 LYW CF AOI Review 시뮬레이션 기능 정상화 ADD END
    }
    m_pSequenceProcessor->RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, nCommand);
@@ -8934,6 +8939,11 @@
    SetCurrentWsiMode(nMode);
}
void CReviewInterface::ISP2P_InitAlignCamera()
{
    InitAlignCamera();
}
int CReviewInterface::IWC2P_GetWsiType()
{
    return GetCurrentWsiMode();
ReviewSystem/ReviewSystem/ReviewInterface.h
@@ -297,6 +297,10 @@
    virtual    void                        ISP2P_SetCurrentWsiMode(int nMode);
    //#3561 210908 LYW ADD Start
    virtual void    ISP2P_InitAlignCamera();
    //#3561 210908 LYW ADD End
    virtual CTotalPitchMeasure*            ISP2P_GetTotalPitchMeasure();
    // recipe info
ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -3805,49 +3805,88 @@
    BYTE *pImageBufferByte = (BYTE*)(pImageBuffer);
    if (pImageBuffer==NULL) return 0.;
    //#3524_210902_LYW_MOD START
    int nWidth = nImageWidth;
    //int nWidthStep = nImageWidth;
    int nHeight = nImageHeight;
    int nCalWidth = nWidth/2;
    int nCalHeight = nHeight/2;
    //     int nCalWidth = nWidth/2;
    //     int nCalHeight = nHeight/2;
    //
    //     int nStartX = nWidth/2 - nCalWidth/2;
    //     int nStartY = nHeight/2 - nCalHeight/2;
    int nStartX = nWidth/2 - nCalWidth/2;
    int nStartY = nHeight/2 - nCalHeight/2;
    int nCalWidth = nWidth;
    int nCalHeight = nHeight;
    //
    double Focusvalue = 0;
    double SumValue = 0;
    double TempValue = 0;
    double m_nResultFocusValue = 0;
    int nStartX = 0;
    int nStartY = 0;
    for (int y = 0; y < nHeight - 1; y++)
    int nStep = 3;
    double dXValue = 0., dYValue = 0., dCurr = 0., dSum = 0., dFocus = 0.;
    for (int nH = nStartY; nH < nStartY + nCalHeight - nStep; nH++)
    {
        for (int x = 0; x < nWidth - 1; x++)
        for (int nW = nStartX; nW < nStartX + nCalWidth - nStep; nW++)
        {
            TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]);
            SumValue = TempValue * TempValue;
            TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]);
            SumValue += TempValue * TempValue;
            Focusvalue += sqrt(SumValue);
            //Focusvalue += SumValue;
        }
    }
    m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight));
    double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.;
    for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++)
    {
        for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++)
        {
            dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW]));
            dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW]));
            dXValue = float((pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW]));
            dYValue = float((pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW]));
            dCurr = sqrt(dXValue + dYValue);
            //break;
            dSum += dCurr;
        }
    }
    dFocus = dSum/double(nCalWidth*nCalHeight);
    dFocus = dSum / double(nCalWidth*nCalHeight);
    if (dFocus >= 9.8) dFocus = 10.0;
    else dFocus += 0.2;
    return dFocus;
    //#3524_210902_LYW_MOD END
    //Origin
//     int nWidth = nImageWidth;
//     int nHeight = nImageHeight;
//     int nCalWidth = nWidth/2;
//     int nCalHeight = nHeight/2;
//
//     int nStartX = nWidth/2 - nCalWidth/2;
//     int nStartY = nHeight/2 - nCalHeight/2;
//
//     //
//     double Focusvalue = 0;
//     double SumValue = 0;
//     double TempValue = 0;
//     double m_nResultFocusValue = 0;
//
//     for (int y = 0; y < nHeight - 1; y++)
//     {
//         for (int x = 0; x < nWidth - 1; x++)
//         {
//             TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]);
//             SumValue = TempValue * TempValue;
//             TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]);
//             SumValue += TempValue * TempValue;
//
//             Focusvalue += sqrt(SumValue);
//             //Focusvalue += SumValue;
//         }
//     }
//
//     m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight));
//
//     double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.;
//     for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++)
//     {
//         for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++)
//         {
//             dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW]));
//             dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW]));
//             dCurr = sqrt(dXValue + dYValue);
//             dSum += dCurr;
//         }
//     }
//     dFocus = dSum/double(nCalWidth*nCalHeight);
//
//     return dFocus;
}
ReviewSystem/ReviewSystem/SequenceProcessor.h
@@ -370,6 +370,9 @@
    virtual    void    ISP2P_SetCurrentWsiMode(int nMode) = 0;
    //#3561 210908 LYW ADD Start
    virtual void    ISP2P_InitAlignCamera() = 0;
    //#3561 210908 LYW ADD End
    // system info
    virtual const CSystemInfo*            ISP2P_System_GetSystemInfo() = 0;
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -1258,10 +1258,6 @@
{
     m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] AlignStart!"));
    AlignCamera_CameraControl(CameraControlLive);  // 210805 Align Camera Sequence ����
    Sleep(300);
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START
    if (GetSimulationMode() == FALSE)
    {
@@ -1269,6 +1265,30 @@
            m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!"));
    }
    //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END
    //#3561 210908 LYW ADD Start
     int nAlignReconnectRetryMaxCount = 3;
     for (int i = 0; i < nAlignReconnectRetryMaxCount; i++)
    {
        if (AlignCamera_CameraControl(CameraControlLive) == FALSE)
        {
            m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Fail! Reconect Start! ReconnectRetry count = %d"), nAlignReconnectRetryMaxCount + 1);
            system("netsh interface set interface name = \"Align #1\" admin = disable&& netsh interface set interface name = \"Align #1\" admin = enable&& netsh interface set interface name = \"Align #2\" admin = disable&& netsh interface set interface name = \"Align #2\" admin = enable");
            Sleep(10000);
            m_pSP2P->ISP2P_InitAlignCamera();
        }
        else
        {
            m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Success! "));
            break;
        }
    }
    //#3561 210908 LYW ADD End
    Sleep(300);
    //original
//     if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT))
//         m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!"));
@@ -8599,6 +8619,7 @@
    case PCControlRecv_AutoMode_CPJT:        // auto mode on
        {
            m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode"));
            SetSimulationMode(FALSE);
            bResult = SetProcessMode(ProcessAutoMode_CPJT);
            if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode Error!"));
        }
@@ -8802,12 +8823,11 @@
    break;
    case PCControlRecv_Autodiagnosis:
    {
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
        /*< LYW 20210719 : #3517 ADD 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
        m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d, DiagnosisMode => %d"), bSignalOn, nDiagnosisMode);
        if (bSignalOn) {
@@ -8817,7 +8837,7 @@
            
            m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode);
        }
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
        /*< LYW 20210719 : #3517 ADD End >*/
        else
            bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0);
ReviewSystem/include/M_AutoDiagnosisManager/DiagnosisInfo.h
@@ -225,9 +225,9 @@
        m_dReviewPanelPosY2 = 0;
        m_dReviewPanelPosX4 = 0;
        m_dReviewPanelPosY4 = 0;
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
        /*< LYW 20210719 : #3517 ADD Start >*/
        m_nFlatnessSkipMode = 0;
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
        /*< LYW 20210719 : #3517 ADD End >*/
    }
@@ -254,12 +254,12 @@
    void                    SetPanelPosY_Wsi(double dData) {  m_dPanelPosY = dData; }
    void                    SetPanelPosX2_Wsi(double dData) { m_dPanelPosX2 = dData; }
    void                    SetPanelPosY2_Wsi(double dData) { m_dPanelPosY2 = dData; }
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    void                    SetFlastnessSkipMode(double dData) { m_nFlatnessSkipMode = dData; }
    void                    SetSquarenessStandard(double dData) { m_dSquarenessStandard = dData; }
    void                    SetSquarenessStandard2(double dData) { m_dSquarenessStandard2 = dData; }
    void                    SetWSIStandard(double dData) { m_dWSIStandard = dData; }
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    /*< LYW 20210719 : #3517 ADD End >*/
    // getter
@@ -291,12 +291,12 @@
    double                    GetPanelPosY_Wsi() const { return m_dPanelPosY; }
    double                    GetPanelPosX2_Wsi() const { return m_dPanelPosX2; }
    double                    GetPanelPosY2_Wsi() const { return m_dPanelPosY2; }
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    int                        GetFlastnessSkipMode() const { return m_nFlatnessSkipMode; }
    double                    GetSquarenessStandard() const { return m_dSquarenessStandard; }
    double                    GetSquarenessStandard2() const { return m_dSquarenessStandard2; }
    double                    GetWSIStandard() const { return m_dWSIStandard; }
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    /*< LYW 20210719 : #3517 ADD End >*/
    //Review
public:
    double                    GetReviewPanelPosX() const { return m_dReviewPanelPosX; }
@@ -325,10 +325,10 @@
    int                            m_nCameraFrameHeight;
    double                        m_dCameraResolution;
    double                        m_dJudgeData_Degree;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    double                        m_dSquarenessStandard;
    double                        m_dSquarenessStandard2;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    /*< LYW 20210719 : #3517 ADD End >*/
    // Flatness
    CDiagnosisResult            m_dataSettingResult_Flatness;        // single data
@@ -338,17 +338,17 @@
    int                            m_nRangeCount_Flatness;
    int                            m_nGlassSizeX;
    int                            m_nGlassSizeY;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    int                            m_nFlatnessSkipMode;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    /*< LYW 20210719 : #3517 ADD End >*/
    // wsi
    VectorDiagnosisResult        m_vecSettingResult_Wsi;        // add module count
    int                            m_nPanelCount_Wsi;
    double                        m_dJudgeData_3Sigma;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    /*< LYW 20210719 : #3517 ADD Start >*/
    double                        m_dWSIStandard;
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    /*< LYW 20210719 : #3517 ADD End >*/
    double                        m_dPanelPosX;
    double                        m_dPanelPosY;