// DlgHardwareSettingMode.cpp: 구현 파일 // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgHardwareSettingMode.h" #include "afxdialogex.h" // DlgHardwareSettingMode 대화 상자 IMPLEMENT_DYNAMIC(DlgHardwareSettingMode, CDialogEx) DlgHardwareSettingMode::DlgHardwareSettingMode(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_HARDWARE_SETTING_MODE, pParent) { b_ReviewCamconnectionstatus = TRUE; b_AFCCamconnectionstatus = TRUE; b_AlignCamCamconnectionstatus = TRUE; } DlgHardwareSettingMode::~DlgHardwareSettingMode() { } void DlgHardwareSettingMode::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_BUTTON_REVIEW_CAM_CONNECT, m_ctrlReviewCamConnect); DDX_Control(pDX, IDC_BUTTON_REVIEW_CAM_DISCONNECT, m_ctrlReviewCamDisConnect); DDX_Control(pDX, IDC_BUTTON_ALIGN_CAM_CONNECT, m_ctrlAlignCamConnect); DDX_Control(pDX, IDC_BUTTON_ALIGN_CAM_DISCONNECT, m_ctrlAlignCamDisConnect); DDX_Control(pDX, IDC_BUTTON_AFM_CONNECT, m_ctrlAFMConnect); DDX_Control(pDX, IDC_BUTTON_AFM_DISCONNECT, m_ctrlAFMDisConnect); } BEGIN_MESSAGE_MAP(DlgHardwareSettingMode, CDialogEx) ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_BUTTON_REVIEW_CAM_CONNECT, &DlgHardwareSettingMode::OnBnClickedButtonReviewCamConnect) ON_BN_CLICKED(IDC_BUTTON_REVIEW_CAM_DISCONNECT, &DlgHardwareSettingMode::OnBnClickedButtonReviewCamDisconnect) ON_BN_CLICKED(IDC_BUTTON_ALIGN_CAM_CONNECT, &DlgHardwareSettingMode::OnBnClickedButtonAlignCamConnect) ON_BN_CLICKED(IDC_BUTTON_ALIGN_CAM_DISCONNECT, &DlgHardwareSettingMode::OnBnClickedButtonAlignCamDisconnect) ON_BN_CLICKED(IDC_BUTTON_AFM_CONNECT, &DlgHardwareSettingMode::OnBnClickedButtonAfmConnect) ON_BN_CLICKED(IDC_BUTTON_AFM_DISCONNECT, &DlgHardwareSettingMode::OnBnClickedButtonAfmDisconnect) END_MESSAGE_MAP() // DlgHardwareSettingMode 메시지 처리기 HBRUSH DlgHardwareSettingMode::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. pDC->SetBkColor(RGB(25, 25, 25)); // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다. return hbr; } BOOL DlgHardwareSettingMode::OnInitDialog() { CDialogEx::OnInitDialog(); SetBackgroundColor(RGB(255, 255, 210)); // TODO: 여기에 추가 초기화 작업을 추가합니다. CString strFont = _T("MS Sans Serif"); m_ctrlReviewCamConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlReviewCamConnect.SetBackground(RGB(10, 10, 10)); m_ctrlReviewCamConnect.SetWindowText(_T("CONNECT")); m_ctrlReviewCamDisConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlReviewCamDisConnect.SetBackground(RGB(10, 10, 10)); m_ctrlReviewCamDisConnect.SetWindowText(_T("DISCONNECT")); m_ctrlAlignCamConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlAlignCamConnect.SetBackground(RGB(10, 10, 10)); m_ctrlAlignCamConnect.SetWindowText(_T("CONNECT")); m_ctrlAlignCamDisConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlAlignCamDisConnect.SetBackground(RGB(10, 10, 10)); m_ctrlAlignCamDisConnect.SetWindowText(_T("DISCONNECT")); m_ctrlAFMConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlAFMConnect.SetBackground(RGB(10, 10, 10)); m_ctrlAFMConnect.SetWindowText(_T("CONNECT")); m_ctrlAFMDisConnect.SetFontStatic(strFont, 9, RGB(240, 240, 240), FS_CENTER | FS_BOLD); m_ctrlAFMDisConnect.SetBackground(RGB(10, 10, 10)); m_ctrlAFMDisConnect.SetWindowText(_T("DISCONNECT")); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } void DlgHardwareSettingMode::OnBnClickedButtonReviewCamConnect() { if (m_pDHM2P->IDHM2P_IsManualProcessMode() == FALSE) return; // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDHM2P->IDHM2P_InitReviewCamera()) { m_pDHM2P->IDHM2P_ConnectReviewCamera(); 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(); m_pDHM2P->IDHM2P_ClearCameraControlObserverVector(); 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; }