SDC C-Project CF Review 프로그램
LYW
2021-11-15 d0d88aa27ad3221c64c76ced47371b114420cf91
Ongoing90 #3708 CF AOI Review 전설비 AFM 세팅 모드 기능 추가

1. 매뉴얼 모드에서만 동작 가능 하도록 인터락 추가
2. 모두 Connect 상태가 아니면 해당 Dlg 종료 불가하도록 인터락 추가
6개 파일 변경됨
83 ■■■■■ 파일 변경됨
ReviewSystem/ReviewSystem/DlgHardwareSettingMode.cpp 57 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgHardwareSettingMode.h 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgLogo.cpp 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgLogo.h 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewInterface.cpp 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/ReviewInterface.h 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgHardwareSettingMode.cpp
@@ -14,7 +14,9 @@
DlgHardwareSettingMode::DlgHardwareSettingMode(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_DLG_HARDWARE_SETTING_MODE, pParent)
{
    b_ReviewCamconnectionstatus = TRUE;
    b_AFCCamconnectionstatus = TRUE;
    b_AlignCamCamconnectionstatus = TRUE;
}
DlgHardwareSettingMode::~DlgHardwareSettingMode()
@@ -98,6 +100,8 @@
void DlgHardwareSettingMode::OnBnClickedButtonReviewCamConnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    if (m_pDHM2P->IDHM2P_InitReviewCamera())
    {
@@ -105,16 +109,20 @@
        m_ctrlReviewCamDisConnect.SetBackground(RGB(10, 10, 10));
        m_ctrlReviewCamConnect.SetBackground(RGB(10, 255, 10));
        g_pLog->DisplayMessage(_T("[HWSettingMode] ReviewCam Connect Success"));
        b_ReviewCamconnectionstatus = TRUE;
    }
    else
    {
        g_pLog->DisplayMessage(_T("[HWSettingMode] ReviewCam Connect Fail!"));
        b_ReviewCamconnectionstatus = FALSE;
    }
}
void DlgHardwareSettingMode::OnBnClickedButtonReviewCamDisconnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    m_pDHM2P->IDHM2P_DisconnectReviewCamera();
    m_pDHM2P->IDHM2P_DeinitReviewCamera();
@@ -122,56 +130,103 @@
    m_ctrlReviewCamConnect.SetBackground(RGB(10, 10, 10));
    m_ctrlReviewCamDisConnect.SetBackground(RGB(200, 0, 0));
    g_pLog->DisplayMessage(_T("[HWSettingMode] ReviewCam DisConnect Success"));
    b_ReviewCamconnectionstatus = FALSE;
}
void DlgHardwareSettingMode::OnBnClickedButtonAlignCamConnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    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);
    if (m_pDHM2P->IDHM2P_InitAlignCamera())
    {
        m_ctrlAlignCamDisConnect.SetBackground(RGB(10, 10, 10));
        m_ctrlAlignCamConnect.SetBackground(RGB(10, 255, 10));
        g_pLog->DisplayMessage(_T("[HWSettingMode] AlignCamera Connect Success"));
        b_AlignCamCamconnectionstatus = TRUE;
    }
    else
    {
        g_pLog->DisplayMessage(_T("[HWSettingMode] AlignCamera Connect Fail!"));
        b_AlignCamCamconnectionstatus = FALSE;
    }
}
void DlgHardwareSettingMode::OnBnClickedButtonAlignCamDisconnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    m_pDHM2P->IDHM2P_DeinitAlignCamera();
    m_ctrlAlignCamConnect.SetBackground(RGB(10, 10, 10));
    m_ctrlAlignCamDisConnect.SetBackground(RGB(200, 0, 0));
    g_pLog->DisplayMessage(_T("[HWSettingMode] AlignCamera DisConnect Success"));
    b_AlignCamCamconnectionstatus = FALSE;
}
void DlgHardwareSettingMode::OnBnClickedButtonAfmConnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    if (m_pDHM2P->IDHM2P_InitAFMControl())
    {
        m_ctrlAFMDisConnect.SetBackground(RGB(10, 10, 10));
        m_ctrlAFMConnect.SetBackground(RGB(10, 255, 10));
        g_pLog->DisplayMessage(_T("[HWSettingMode] Afm Connect Success"));
        b_AFCCamconnectionstatus = TRUE;
    }
    else
    {
        g_pLog->DisplayMessage(_T("[HWSettingMode] Afm Connect Fail!"));
        b_AFCCamconnectionstatus = FALSE;
    }
}
void DlgHardwareSettingMode::OnBnClickedButtonAfmDisconnect()
{
    if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return;
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    m_pDHM2P->IDHM2P_DeinitAFMControl();
    m_ctrlAFMConnect.SetBackground(RGB(10, 10, 10));
    m_ctrlAFMDisConnect.SetBackground(RGB(200, 0, 0));
    g_pLog->DisplayMessage(_T("[HWSettingMode] Afm DisConnect Success"));
    b_AFCCamconnectionstatus = FALSE;
}
void DlgHardwareSettingMode::OnCancel()
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    if (b_AFCCamconnectionstatus && b_AlignCamCamconnectionstatus && b_ReviewCamconnectionstatus)
    {
        CDialogEx::OnCancel();
    }
    else IDOK == AfxMessageBox(_T("모든 H/W가 연결 상태가 아니면 창을 닫을 수 없습니다.", MB_OK | MB_ICONQUESTION));
    return;
}
void DlgHardwareSettingMode::OnOK()
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    if (b_AFCCamconnectionstatus && b_AlignCamCamconnectionstatus && b_ReviewCamconnectionstatus)
    {
        CDialogEx::OnOK();
    }
    else IDOK == AfxMessageBox(_T("모든 H/W가 연결 상태가 아니면 창을 닫을 수 없습니다.", MB_OK | MB_ICONQUESTION));
    return;
}
ReviewSystem/ReviewSystem/DlgHardwareSettingMode.h
@@ -20,6 +20,9 @@
    virtual int        IDHM2P_InitAlignCamera() = 0;
    virtual void    IDHM2P_DeinitAlignCamera() = 0;
    //is manual Mode?
    virtual BOOL    IDHM2P_IsManualProcessMode() = 0;
};
// DlgHardwareSettingMode 대화 상자
@@ -62,4 +65,9 @@
    CFontStatic m_ctrlAlignCamDisConnect;
    CFontStatic m_ctrlAFMConnect;
    CFontStatic m_ctrlAFMDisConnect;
    BOOL b_ReviewCamconnectionstatus;
    BOOL b_AFCCamconnectionstatus;
    BOOL b_AlignCamCamconnectionstatus;
    virtual void OnCancel();
    virtual void OnOK();
};
ReviewSystem/ReviewSystem/DlgLogo.cpp
@@ -303,6 +303,8 @@
void CDlgLogo::OnBnClickedButtonHwSettingMode()
{
    if (m_pDL2P->IDL2P_IsManualProcessMode() == FALSE) return;
    m_pDL2P->IDL2P_OpenHWSettingTool();
    g_pLog->DisplayMessage(_T("[ReviewProcessor] HW SettingMode Start"));
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
ReviewSystem/ReviewSystem/DlgLogo.h
@@ -12,6 +12,8 @@
    /*< LYW 20211112 - #3708 ADD Start >*/
    virtual void   IDL2P_OpenHWSettingTool() = 0;
    /*< LYW 20211112 - #3708 ADD End >*/
    //is manual Mode?
    virtual BOOL    IDL2P_IsManualProcessMode() = 0;
};
interface
ReviewSystem/ReviewSystem/ReviewInterface.cpp
@@ -8624,6 +8624,11 @@
    m_pView->ShowHWSettingMode();
}
BOOL CReviewInterface::IDL2P_IsManualProcessMode()
{
    return IsManualProcessMode();
}
int CReviewInterface::IDHM2P_InitReviewCamera()
{
    return InitReviewCamera();
@@ -8669,6 +8674,11 @@
    DeinitAlignCamera();
}
BOOL CReviewInterface::IDHM2P_IsManualProcessMode()
{
    return IsManualProcessMode();
}
//181203
BOOL CReviewInterface::IRP2P_SaveDefectMap(const CString& strPath)
{
ReviewSystem/ReviewSystem/ReviewInterface.h
@@ -520,6 +520,7 @@
    virtual void   IDL2P_OpenHistoryTool();
    /*< LYW 20211112 - #3708 ADD Start >*/
    virtual void IDL2P_OpenHWSettingTool();
    virtual BOOL    IDL2P_IsManualProcessMode();
    /*< LYW 20211112 - #3708 ADD End >*/
    // dialog HardwareSettingMode 2 Parent
@@ -538,6 +539,9 @@
    virtual int        IDHM2P_InitAlignCamera();
    virtual void    IDHM2P_DeinitAlignCamera();
    // is manual Mode?
    virtual BOOL    IDHM2P_IsManualProcessMode();
protected:
    // Motor Control command
    BOOL    Motor_ReadAddress(long nAddress, double &dValue);