// 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: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
}
|