// DlgSelfDiagnosis_Wsi.cpp: 구현 파일 // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgSelfDiagnosis_Wsi.h" #include "DlgSelfDiagnosis.h" #include "afxdialogex.h" // CDlgSelfDiagnosis_Wsi 대화 상자 IMPLEMENT_DYNAMIC(CDlgSelfDiagnosis_Wsi, CDialogEx) CDlgSelfDiagnosis_Wsi::CDlgSelfDiagnosis_Wsi(CDiagnosisManager* pDiagnosisManager, CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_SELF_DIAGNOSIS_WSI, pParent) { m_pDiagnosisManager = pDiagnosisManager; m_editWSIFirstStandard = 180; } CDlgSelfDiagnosis_Wsi::~CDlgSelfDiagnosis_Wsi() { } void CDlgSelfDiagnosis_Wsi::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_WSI_ACC_00, m_ctrlWsiAcc00); DDX_Control(pDX, IDC_EDIT_WSI_ACC_01, m_ctrlWsiAcc01); DDX_Control(pDX, IDC_EDIT_WSI_RTB_00, m_ctrlWsiRtb00); DDX_Control(pDX, IDC_EDIT_WSI_RTB_01, m_ctrlWsiRtb01); DDX_Control(pDX, IDC_BUTTON_SIMULATION, m_btSimulation); DDX_Text(pDX, IDC_EDIT_WSI_FIRST_STANDARD, m_editWSIFirstStandard); DDX_Control(pDX, IDC_LIST_WSI_DIAGNOSIS_RESULT, m_ListWSIResult); } BOOL CDlgSelfDiagnosis_Wsi::OnInitDialog() { CDialogEx::OnInitDialog(); m_ListWSIResult.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_ListWSIResult.InsertColumn(0, _T("Index"), LVCFMT_CENTER, 70); m_ListWSIResult.InsertColumn(1, _T("Left Module"), LVCFMT_CENTER, 100); m_ListWSIResult.InsertColumn(2, _T("Right Module"), LVCFMT_CENTER, 100); m_ListWSIResult.SetRedraw(TRUE); // TODO: 여기에 추가 초기화 작업을 추가합니다. return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } BEGIN_MESSAGE_MAP(CDlgSelfDiagnosis_Wsi, CDialogEx) ON_BN_CLICKED(IDC_BUTTON_SIMULATION, &CDlgSelfDiagnosis_Wsi::OnBnClickedButtonSimulation) ON_EN_CHANGE(IDC_EDIT_WSI_ACC_01, &CDlgSelfDiagnosis_Wsi::OnEnChangeEditWsiAcc01) ON_EN_CHANGE(IDC_EDIT_WSI_RTB_00, &CDlgSelfDiagnosis_Wsi::OnEnChangeEditWsiRtb00) END_MESSAGE_MAP() // CDlgSelfDiagnosis_Wsi 메시지 처리기 void CDlgSelfDiagnosis_Wsi::OnBnClickedButtonSimulation() { if (m_pDiagnosisManager == NULL) return; /*< LYW 20210719 : #3517 ADD Start >*/ if (m_pDiagnosisManager->CheckManualMode() == FALSE) { CString strMessage; strMessage.Format(_T("Change Manual Mode!!")); if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONERROR)) { g_pLog->DisplayMessage(_T("Manual Diagnosis Fail! Not Manual Mode")); return; } } /*< LYW 20210719 : #3517 ADD End >*/ //GetDialogControls(); //m_ctrlWsiAcc00.SetWindowText(_T("")); m_pDiagnosisManager->RecvSignalToSignalControl(DiagnosisSignal_Manual, DiagnosisMode_Wsi, TRUE); } void CDlgSelfDiagnosis_Wsi::OnEnChangeEditWsiAcc01() { // TODO: RICHEDIT 컨트롤인 경우, 이 컨트롤은 // CDialogEx::OnInitDialog() 함수를 재지정 //하고 마스크에 OR 연산하여 설정된 ENM_CHANGE 플래그를 지정하여 CRichEditCtrl().SetEventMask()를 호출하지 않으면 // 이 알림 메시지를 보내지 않습니다. // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } void CDlgSelfDiagnosis_Wsi::UpdateWSIResult() { const CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); if (pSettingInfo == NULL) return; m_editWSIFirstStandard = pSettingInfo->GetWSIStandard(); double nACC00 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->getWSI_ACC(); double nACC01 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->getWSI_ACC(); double nRTB00 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->getWSI_RTB(); double nRTB01 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->getWSI_RTB(); double dDiagnosisHeight[20]; for (int i = 0; i < 10; i++) { dDiagnosisHeight[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->GetDiagnosisHeight(i); } for (int i = 0; i < 10; i++) { dDiagnosisHeight[i+10] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->GetDiagnosisHeight(i); } CString strDiagnosisHeight; CString strACC00, strACC01; CString strRTB00, strRTB01; strACC00.Format(_T("%d"), nACC00); strACC01.Format(_T("%d"), nACC01); strRTB00.Format(_T("%d"), nRTB00); strRTB01.Format(_T("%d"), nRTB01); m_ctrlWsiAcc00.SetWindowTextA(strACC00); m_ctrlWsiAcc01.SetWindowTextA(strACC01); m_ctrlWsiRtb00.SetWindowTextA(strRTB00); m_ctrlWsiRtb01.SetWindowTextA(strRTB01); for (int i = 0; i < 10; i++) { int nRow = i + 1; strDiagnosisHeight.Format(_T("%d"), nRow); m_ListWSIResult.InsertItem(nRow, strDiagnosisHeight); strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i]); m_ListWSIResult.SetItemText(nRow, 1, strDiagnosisHeight); strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i+10]); m_ListWSIResult.SetItemText(nRow, 2, strDiagnosisHeight); m_ListWSIResult.EnsureVisible(nRow, FALSE); } } void CDlgSelfDiagnosis_Wsi::DisableBtSIMULATION(BOOL bUse) { if (bUse) { m_btSimulation.EnableWindow(FALSE); } else { m_btSimulation.EnableWindow(TRUE); } } void CDlgSelfDiagnosis_Wsi::UpdateWSIResult(int nModuleIndex,double dAcc00, double dAcc01, double dRbt00, double dRbt01) { const CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); if (pSettingInfo == NULL) return; m_editWSIFirstStandard = pSettingInfo->GetWSIStandard(); double nACC00 = dAcc00; double nACC01 = dAcc01; double nRTB00 = dRbt00; double nRTB01 = dRbt01; CString strDiagnosisHeight; CString strACC00, strACC01; CString strRTB00, strRTB01; strACC00.Format(_T("%f"),nACC00); strRTB00.Format(_T("%f"), nRTB00); strACC01.Format(_T("%f"), nACC01); strRTB01.Format(_T("%f"), nRTB01); if (nModuleIndex==0) { m_ctrlWsiAcc00.SetWindowTextA(strACC00); m_ctrlWsiRtb00.SetWindowTextA(strRTB00); } else { m_ctrlWsiAcc01.SetWindowTextA(strACC01); m_ctrlWsiRtb01.SetWindowTextA(strRTB01); } double dDiagnosisHeightleft[10]; double dDiagnosisHeightRight[10]; for (int i = 0; i < 10; i++) { dDiagnosisHeightleft[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->GetDiagnosisHeight(i); } for (int i = 0; i < 10; i++) { dDiagnosisHeightRight[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->GetDiagnosisHeight(i); } m_ListWSIResult.DeleteAllItems(); for (int i = 0; i < 10; i++) { int nRow = i; strDiagnosisHeight.Format(_T("%d"), nRow + 1); m_ListWSIResult.InsertItem(nRow, strDiagnosisHeight); strDiagnosisHeight.Format(_T("%.3f"), dDiagnosisHeightleft[i]); m_ListWSIResult.SetItemText(nRow, 1, strDiagnosisHeight); strDiagnosisHeight.Format(_T("%.3f"), dDiagnosisHeightRight[i]); m_ListWSIResult.SetItemText(nRow, 2, strDiagnosisHeight); m_ListWSIResult.EnsureVisible(nRow, FALSE); } } void CDlgSelfDiagnosis_Wsi::ChangeResultData() { // CDiagnosisResult * pProcessResult = m_pDiagnosisManager->GetDiagnosisResultCount_Squareness(); // if (pProcessResult == NULL) return FALSE; // // SPositionData* pPositionData = pProcessResult->GetPositionData_Squareness(0); // if (pPositionData == NULL) return FALSE; // // SetGridResultData(pPositionData); // // CDlgSelfDiagnosis_Squareness* pDlg = (CDlgSelfDiagnosis_Squareness*)AfxGetApp()->m_pMainWnd; // pDlg->PostMessage(CUSTOM_UPDATEDATA, 0, 0); // return TRUE; //taek 210105 } void CDlgSelfDiagnosis_Wsi::OnEnChangeEditWsiRtb00() { // TODO: RICHEDIT 컨트롤인 경우, 이 컨트롤은 // CDialogEx::OnInitDialog() 함수를 재지정 //하고 마스크에 OR 연산하여 설정된 ENM_CHANGE 플래그를 지정하여 CRichEditCtrl().SetEventMask()를 호출하지 않으면 // 이 알림 메시지를 보내지 않습니다. // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. }