• 검색 결과가 없습니다.

식(2-34)

1) Dialog

#include "stdafx.h"

#include "TakeCj.h"

#include "ControlDlg2.h"

#include "MainFrm.h"

#include "ChildFrm.h"

#include "TakeCjDoc.h"

#include "TakeCjView.h"

#include "FFTDlg.h"

#include "PhaseDlg.h"

#include "LSDlg.h"

#include "PhsaDlg.h"

#include "Complexclass.h"

#include "ImageClass.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

// CControlDlg2 dialog

CControlDlg2::CControlDlg2(CWnd* pParent /*=NULL*/) : CDialog(CControlDlg2::IDD, pParent) {

//{{AFX_DATA_INIT(CControlDlg2) m_interference_method = 1;

m_angle = 45.0f;

m_factor = 1.0f;

m_wavelength = 632.8f;

m_specimen = 0;

m_specimen_visible = FALSE;

m_uw_specimen_visible = FALSE;

m_uw_specimen = 0;

//}}AFX_DATA_INIT m_comport=1;

m_baudrate=9600;

}

void CControlDlg2::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CControlDlg2)

DDX_Control(pDX, IDC_BUTTON_PS_NEXT, m_ps_Next);

DDX_Control(pDX, IDC_BUTTON_PS_START, m_ps_Start);

DDX_Control(pDX, IDC_COMBO_CONFIG_COMPORT, m_ComPort);

DDX_Control(pDX, IDC_COMBO_CONFIG_BOUDRATE, m_BaudRate);

DDX_Control(pDX, IDC_BUTTON_HALT, m_Halt);

DDX_Control(pDX, IDC_BUTTON_LIVE, m_Live);

DDX_Control(pDX, IDC_BUTTON_REF, m_Ref);

DDX_Control(pDX, IDC_TAB1, m_Tab1);

DDX_Radio(pDX, IDC_RADIO_CONFIG_ADDITION, m_interference_method);

DDX_Text(pDX, IDC_EDIT_ANGLE, m_angle);

DDX_Text(pDX, IDC_EDIT_FACTOR, m_factor);

DDX_Text(pDX, IDC_EDIT_WAVELENGTH, m_wavelength);

DDX_Radio(pDX, IDC_RADIO_SPECIMEN1, m_specimen);

DDX_Check(pDX, IDC_CHECK_SPECIMEN_VISIBLE, m_specimen_visible);

DDX_Check(pDX, IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE, m_uw_specimen_visible);

DDX_Radio(pDX, IDC_RADIO_UNWRAP_SPECIMEN1, m_uw_specimen);

//}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CControlDlg2, CDialog) //{{AFX_MSG_MAP(CControlDlg2) ON_WM_CLOSE()

ON_BN_CLICKED(IDC_BUTTON_LIVE, OnButtonLive) ON_BN_CLICKED(IDC_BUTTON_REF, OnButtonRef) ON_BN_CLICKED(IDC_BUTTON_HALT, OnButtonHalt) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)

ON_BN_CLICKED(IDC_BUTTON_CONFIG_CONNECT, OnButtonConfigConnect) ON_BN_CLICKED(IDC_BUTTON_CONFIG_DISCONNECT, OnButtonConfigDisconnect) ON_CBN_SELCHANGE(IDC_COMBO_CONFIG_BOUDRATE, OnSelchangeComboConfigBoudrate) ON_CBN_SELCHANGE(IDC_COMBO_CONFIG_COMPORT, OnSelchangeComboConfigComport) ON_WM_PAINT()

ON_BN_CLICKED(IDC_RADIO_CONFIG_ADDITION, OnRadioConfigAddition) ON_BN_CLICKED(IDC_RADIO_CONFIG_SUBTRACTION, OnRadioConfigSubtraction) ON_BN_CLICKED(IDC_BUTTON_2BUCKET, OnButton2bucket)

ON_BN_CLICKED(IDC_BUTTON_FFT_TOFILE, OnButtonFftTofile) ON_BN_CLICKED(IDC_BUTTON_LS_TOFILE, OnButtonLsTofile)

ON_BN_CLICKED(IDC_BUTTON_PHASE_FFT, OnButtonPhaseFft) ON_BN_CLICKED(IDC_BUTTON_PHASE_LS, OnButtonPhaseLs)

ON_BN_CLICKED(IDC_BUTTON_PHASE_UNWRAP, OnButtonPhaseUnwrap) ON_BN_CLICKED(IDC_BUTTON_PS_NEXT, OnButtonPsNext)

ON_BN_CLICKED(IDC_BUTTON_PS_START, OnButtonPsStart) ON_BN_CLICKED(IDC_BUTTON_UNWRAP_3D, OnButtonUnwrap3d) ON_BN_CLICKED(IDC_RADIO_SPECIMEN1, OnRadioSpecimen1) ON_BN_CLICKED(IDC_RADIO_SPECIMEN2, OnRadioSpecimen2) ON_BN_CLICKED(IDC_RADIO_SPECIMEN3, OnRadioSpecimen3)

ON_BN_CLICKED(IDC_CHECK_SPECIMEN_VISIBLE, OnCheckSpecimenVisible) ON_BN_CLICKED(IDC_BUTTON_SPECIMEN_MOVE_UP, OnButtonSpecimenMoveUp) ON_BN_CLICKED(IDC_BUTTON_SPECIMEN_MOVE_DOWN, OnButtonSpecimenMoveDown) ON_BN_CLICKED(IDC_RADIO_UNWRAP_SPECIMEN1, OnRadioUnwrapSpecimen1) ON_BN_CLICKED(IDC_RADIO_UNWRAP_SPECIMEN2, OnRadioUnwrapSpecimen2) ON_BN_CLICKED(IDC_RADIO_UNWRAP_SPECIMEN3, OnRadioUnwrapSpecimen3)

ON_BN_CLICKED(IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE, OnCheckUnwrapSpecimenVisible) //}}AFX_MSG_MAP

END_MESSAGE_MAP()

BOOL CControlDlg2::OnInitDialog() {

CDialog::OnInitDialog();

TC_ITEM item;

char* tabname[3] = {"Config", "ESPI", "ImageProcess"};

for(int i=0; i<3; i++) {

item.mask = TCIF_TEXT | TCIF_IMAGE;

item.pszText = tabname[i];

m_Tab1.InsertItem(i, &item);

}

m_BaudRate.AddString("2400");

m_BaudRate.AddString("4800");

m_BaudRate.AddString("9600");

m_BaudRate.AddString("14400");

m_BaudRate.AddString("19200");

m_ComPort.AddString("COM1");

m_ComPort.AddString("COM2");

m_ComPort.AddString("COM3");

m_ComPort.AddString("COM4");

m_ComPort.SetCurSel(0);

m_BaudRate.SetCurSel(2);

ShowWindow(0);

GetPhase();

m_Live.EnableWindow(true);

m_Ref.EnableWindow(false);

m_Halt.EnableWindow(false);

m_ps_Start.EnableWindow(true);

m_ps_Next.EnableWindow(false);

return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

void CControlDlg2::OnClose() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->m_ctlbox=false;

CDialog::OnClose();

}

void CControlDlg2::OnButtonLive() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->Live();

m_Live.EnableWindow(false);

m_Ref.EnableWindow(true);

m_Halt.EnableWindow(true);

}

void CControlDlg2::OnButtonRef() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->Reference();

m_Live.EnableWindow(false);

m_Ref.EnableWindow(true);

m_Halt.EnableWindow(true);

}

void CControlDlg2::OnButtonHalt() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->Halt();

m_Live.EnableWindow(true);

m_Ref.EnableWindow(false);

m_Halt.EnableWindow(false);

}

void CControlDlg2::EnableButton(int a, int b, int c) {

if(a ==1)

m_Live.EnableWindow(true);

else

m_Live.EnableWindow(false);

if(b ==1)

m_Ref.EnableWindow(true);

else

m_Ref.EnableWindow(false);

if(c ==1)

m_Halt.EnableWindow(true);

else

m_Halt.EnableWindow(false);

}

void CControlDlg2::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) {

ShowWindow(m_Tab1.GetCurSel());

*pResult = 0;

}

void CControlDlg2::ShowWindow(int num) {

switch(num) {

case 0:

{

GetDlgItem(IDC_STATIC_CONFIG_RS232)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_COMPORT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_BOUDRATE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_COMBO_CONFIG_COMPORT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_COMBO_CONFIG_BOUDRATE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_CONFIG_CONNECT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_CONFIG_DISCONNECT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_CONFIG_ADDITION)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_CONFIG_SUBTRACTION)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE2)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_2BUCKET)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_PARAMETER)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_LAMBDA)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_ANGLE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_FACTOR)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_EDIT_WAVELENGTH)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_EDIT_ANGLE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_EDIT_FACTOR)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_PARAM_WAVEUNIT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_PARAM_ANGLEUNIT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_PARAM_SCALEUNIT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_CONFIG_SPECIMEN2)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_SPECIMEN1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_SPECIMEN2)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_SPECIMEN3)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_UP)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_DOWN)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_CHECK_SPECIMEN_VISIBLE)->ShowWindow(SW_SHOW);

//Experiment

GetDlgItem(IDC_STATIC_CLASSIC_ESPI)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_LIVE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_HALT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_REF)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PS_START)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PS_NEXT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_LS)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_FFT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_LS_TOFILE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_FFT_TOFILE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_UNWRAP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_UNWRAP_3D)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PHASESHIFTING_ESPI)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PHASEMAP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_UNWRAPPING)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN3)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE)->ShowWindow(SW_HIDE);

} break;

case 1:

{ //Config

GetDlgItem(IDC_STATIC_CONFIG_RS232)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_COMPORT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_BOUDRATE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_COMBO_CONFIG_COMPORT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_COMBO_CONFIG_BOUDRATE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_CONFIG_CONNECT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_CONFIG_DISCONNECT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_CONFIG_ADDITION)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_CONFIG_SUBTRACTION)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_2BUCKET)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_PARAMETER)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_LAMBDA)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_ANGLE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_FACTOR)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_WAVELENGTH)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_ANGLE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_FACTOR)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_WAVEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_ANGLEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_SCALEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN3)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_UP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_DOWN)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_CHECK_SPECIMEN_VISIBLE)->ShowWindow(SW_HIDE);

//Experiment

GetDlgItem(IDC_STATIC_CLASSIC_ESPI)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_LIVE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_HALT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_REF)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_PS_START)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_PS_NEXT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_PHASE_LS)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_PHASE_FFT)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_LS_TOFILE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_FFT_TOFILE)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_PHASE_UNWRAP)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_BUTTON_UNWRAP_3D)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_PHASESHIFTING_ESPI)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_PHASEMAP)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_UNWRAPPING)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN2)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN3)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE)->ShowWindow(SW_SHOW);

} break;

case 2:

{ //Config

GetDlgItem(IDC_STATIC_CONFIG_RS232)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_COMPORT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_BOUDRATE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_COMBO_CONFIG_COMPORT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_COMBO_CONFIG_BOUDRATE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_CONFIG_CONNECT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_CONFIG_DISCONNECT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_CONFIG_ADDITION)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_CONFIG_SUBTRACTION)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_INTERFERENCE2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_2BUCKET)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_PARAMETER)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_LAMBDA)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_ANGLE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_FACTOR)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_WAVELENGTH)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_ANGLE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT_FACTOR)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_WAVEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_ANGLEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PARAM_SCALEUNIT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_CONFIG_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_SPECIMEN3)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_UP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_SPECIMEN_MOVE_DOWN)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_CHECK_SPECIMEN_VISIBLE)->ShowWindow(SW_HIDE);

//Experiment

GetDlgItem(IDC_STATIC_CLASSIC_ESPI)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_LIVE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_HALT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_REF)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PS_START)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PS_NEXT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_LS)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_FFT)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_LS_TOFILE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_FFT_TOFILE)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_PHASE_UNWRAP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_BUTTON_UNWRAP_3D)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PHASESHIFTING_ESPI)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_PHASEMAP)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_UNWRAPPING)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN3)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE)->ShowWindow(SW_HIDE);

} break;

} }

void CControlDlg2::OnSelchangeComboConfigBoudrate() {

CString str;

int sel = m_BaudRate.GetCurSel();

m_BaudRate.GetLBText(sel, str);

m_baudrate = atoi(str);

}

void CControlDlg2::OnSelchangeComboConfigComport() {

int sel = m_ComPort.GetCurSel();

m_comport = sel+1;

}

void CControlDlg2::OnButtonConfigConnect() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->OpenSerial(m_comport, m_baudrate);

Invalidate();

}

void CControlDlg2::OnButtonConfigDisconnect() {

CTakeCjApp* pApp = (CTakeCjApp*)AfxGetApp();

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->m_CommFlags = false;

pMain->pPZTClass->SetServo(false); //서버 On pApp->CloseSerial();

Invalidate();

}

void CControlDlg2::OnPaint() {

CPaintDC dc(this); // device context for painting

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

if(pMain->m_CommFlags) {

GetDlgItem(IDC_BUTTON_CONFIG_CONNECT)->EnableWindow(false);

GetDlgItem(IDC_BUTTON_CONFIG_DISCONNECT)->EnableWindow(true);

} else {

GetDlgItem(IDC_BUTTON_CONFIG_CONNECT)->EnableWindow(true);

GetDlgItem(IDC_BUTTON_CONFIG_DISCONNECT)->EnableWindow(false);

}

GetDlgItem(IDC_BUTTON_PHASE_UNWRAP)->EnableWindow(false);

GetDlgItem(IDC_BUTTON_UNWRAP_3D)->EnableWindow(false);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN1)->EnableWindow(false);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN2)->EnableWindow(false);

GetDlgItem(IDC_RADIO_UNWRAP_SPECIMEN3)->EnableWindow(false);

GetDlgItem(IDC_CHECK_UNWRAP_SPECIMEN_VISIBLE)->EnableWindow(false);

}

if(GetbeView2()) {

GetDlgItem(IDC_RADIO_SPECIMEN1)->EnableWindow(true);

GetDlgItem(IDC_RADIO_SPECIMEN2)->EnableWindow(true);

GetDlgItem(IDC_RADIO_SPECIMEN3)->EnableWindow(true);

GetDlgItem(IDC_CHECK_SPECIMEN_VISIBLE)->EnableWindow(true);

} else {

GetDlgItem(IDC_RADIO_SPECIMEN1)->EnableWindow(false);

GetDlgItem(IDC_RADIO_SPECIMEN2)->EnableWindow(false);

GetDlgItem(IDC_RADIO_SPECIMEN3)->EnableWindow(false);

GetDlgItem(IDC_CHECK_SPECIMEN_VISIBLE)->EnableWindow(false);

}

// Do not call CDialog::OnPaint() for painting messages }

감산처리 2)

void CControlDlg2::OnRadioConfigAddition() {

m_interference_method = 0;

}

void CControlDlg2::OnRadioConfigSubtraction() {

m_interference_method = 1;

}

void CControlDlg2::OnButton2bucket() {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->SetLogData("Launch Set Phase value");

GetPhaseInDlg(0);

}

void CControlDlg2::GetPhaseInDlg(int num) {

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

DWORD len;

CString gstr;

FILE* fp;

float a, b, c, s1, s2, s3, s4, s5, s6, s7, s8;

float p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;

if((fp = fopen(pMain->m_phasefilepath, "rt"))==NULL) {

AfxMessageBox("Cannot load Phase.dat file.");

return ; }

fscanf(fp, "%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f,

%f, %f, %f, %f", &a, &b, &c , &s1, &s2, &s3, &s4, &s5, &s6, &s7, &s8, &p1, &p2, &p3, &p4,

&p5, &p6, &p7, &p8, &p9, &p10);

fclose(fp);

CPhaseDlg dlg;

dlg.m_Phase1 = a;

dlg.m_Phase3 = dlg.m_Phase2 = b;

dlg.m_Phase4 = c;

dlg.m_step8_phase1 = s1;

dlg.m_step8_phase2 = s2;

dlg.m_step8_phase3 = s3;

dlg.m_step8_phase4 = s4;

dlg.m_step8_phase5 = s5;

dlg.m_step8_phase6 = s6;

dlg.m_step8_phase7 = s7;

dlg.m_step8_phase8 = s8;

dlg.m_step10_phase1 = p1;

dlg.m_step10_phase2 = p2;

dlg.m_step10_phase3 = p3;

dlg.m_step10_phase4 =p4;

dlg.m_step10_phase5 = p5;

dlg.m_step10_phase6 = p6;

dlg.m_step10_phase7 = p7;

dlg.m_step10_phase8 = p8;

dlg.m_step10_phase9 = p9;

dlg.m_step10_phase10 = p10;

if(dlg.DoModal()==IDOK) {

저장 //Phase

phase1 = dlg.m_Phase1;

phase2 = dlg.m_Phase2;

phase3 = dlg.m_Phase3;

phase4 = dlg.m_Phase4;

step8_phase1 = dlg.m_step8_phase1;

step8_phase2 = dlg.m_step8_phase2;

step8_phase3 = dlg.m_step8_phase3;

step8_phase4 = dlg.m_step8_phase4;

step8_phase5 = dlg.m_step8_phase5;

step8_phase6 = dlg.m_step8_phase6;

step8_phase7 = dlg.m_step8_phase7;

step8_phase8 = dlg.m_step8_phase8;

step10_phase1 = dlg.m_step10_phase1;

step10_phase2 = dlg.m_step10_phase2;

step10_phase3 = dlg.m_step10_phase3;

step10_phase4 = dlg.m_step10_phase4;

step10_phase5 = dlg.m_step10_phase5;

step10_phase6 = dlg.m_step10_phase6;

step10_phase7 = dlg.m_step10_phase7;

step10_phase8 = dlg.m_step10_phase8;

step10_phase9 = dlg.m_step10_phase9;

step10_phase10 = dlg.m_step10_phase10;

HANDLE fd = CreateFile(pMain->m_phasefilepath, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if(fd<0) {

파일 저장 실패 AfxMessageBox(" !!");

} else {

CString str;

UpdateData(true);

str.Format("%.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f,

%.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f", dlg.m_Phase1,

dlg.m_Phase2, dlg.m_Phase4, dlg.m_step8_phase1, dlg.m_step8_phase2, dlg.m_step8_phase3, dlg.m_step8_phase4, dlg.m_step8_phase5, dlg.m_step8_phase6, dlg.m_step8_phase7, dlg.m_step8_phase8, dlg.m_step10_phase1, dlg.m_step10_phase2, dlg.m_step10_phase3, dlg.m_step10_phase4, dlg.m_step10_phase5, dlg.m_step10_phase6,

dlg.m_step10_phase7, dlg.m_step10_phase8, dlg.m_step10_phase9, dlg.m_step10_phase10);

WriteFile(fd, str, str.GetLength(), &len, NULL);

CloseHandle(fd);

} }

}

void CControlDlg2::OnButtonFftTofile() {

CTakeCjApp* pApp = (CTakeCjApp*)AfxGetApp();

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->SetLogData("Launch FFT fitting from files");

CComplexClass pComplex;

CPhsaDlg dlg;

if(dlg.DoModal()==IDOK) {

if(dlg.m_FileName1 =="") return;

if(dlg.m_FileName2 =="") return;

if(dlg.m_FileName3 =="") return;

if(dlg.m_FileName4 =="") return;

if(dlg.m_FileName5 =="") return;

if(dlg.m_FileName6 =="") return;

if(dlg.m_FileName7 =="") return;

if(dlg.m_FileName8 =="") return;

파일을 전부 열어서 //

pApp->FileNew1();

CChildFrame* pChild=(CChildFrame*)pMain->GetActiveFrame();

CTakeCjDoc* pDoc=(CTakeCjDoc*)pChild->GetActiveDocument();

SIZE size = {640, 480};

pDoc->ImageSize = size;

CImageClass pImgClass;

BYTE* pImage1, *pImage2, *pImage3, *pImage4;

BYTE* pImage5, *pImage6, *pImage7, *pImage8;

BYTE* cImage;

COMPLEX* data = new COMPLEX[size.cx*size.cy*sizeof(COMPLEX)];

COMPLEX*Intensity= new COMPLEX[size.cx*size.cy*sizeof(COMPLEX)];

COMPLEX* u = new COMPLEX[size.cx*size.cy*sizeof(COMPLEX)];

COMPLEX* v = new COMPLEX[size.cx*size.cy*sizeof(COMPLEX)];

COMPLEX* z = new COMPLEX[size.cx*size.cy*sizeof(COMPLEX)];

float* out= new float[size.cx*size.cy*sizeof(float)];

BYTE* ims= new BYTE[size.cx*size.cy];

pImage1 = new BYTE[size.cx*size.cy];

memset(pImage1, 0, size.cx*size.cy);

pImage2 = new BYTE[size.cx*size.cy];

memset(pImage2, 0, size.cx*size.cy);

pImage3 = new BYTE[size.cx*size.cy];

memset(pImage3, 0, size.cx*size.cy);

pImage4 = new BYTE[size.cx*size.cy];

memset(pImage4, 0, size.cx*size.cy);

pImage5 = new BYTE[size.cx*size.cy];

memset(pImage5, 0, size.cx*size.cy);

pImage6 = new BYTE[size.cx*size.cy];

memset(pImage6, 0, size.cx*size.cy);

pImage7 = new BYTE[size.cx*size.cy];

memset(pImage7, 0, size.cx*size.cy);

pImage8 = new BYTE[size.cx*size.cy];

memset(pImage8, 0, size.cx*size.cy);

cImage = new BYTE[size.cx*size.cy];

memset(cImage, 0, size.cx*size.cy);

CIPSGImgCls m_pImage1, m_pImage2, m_pImage3, m_pImage4, m_pImage5, m_pImage6, m_pImage7, m_pImage8;

m_pImage1.LoadBmpImage(dlg.m_FileName1);

m_pImage2.LoadBmpImage(dlg.m_FileName2);

m_pImage3.LoadBmpImage(dlg.m_FileName3);

m_pImage4.LoadBmpImage(dlg.m_FileName4);

m_pImage5.LoadBmpImage(dlg.m_FileName5);

m_pImage6.LoadBmpImage(dlg.m_FileName6);

m_pImage7.LoadBmpImage(dlg.m_FileName7);

m_pImage8.LoadBmpImage(dlg.m_FileName8);

m_pImage1.GetBuffer(pImage1);

m_pImage2.GetBuffer(pImage2);

m_pImage3.GetBuffer(pImage3);

m_pImage4.GetBuffer(pImage4);

m_pImage5.GetBuffer(pImage5);

m_pImage6.GetBuffer(pImage6);

m_pImage7.GetBuffer(pImage7);

m_pImage8.GetBuffer(pImage8);

for(int j=0; j<size.cy; j++)

for(int i=0; i<size.cx;i++) {

u[j*size.cx+i].im = u[j*size.cx+i].re = 0;

v[j*size.cx+i].im = v[j*size.cx+i].re = 0;

} //Data Load COMPLEX exp={1,0};

pImgClass.DataLoadSum(pImage1, u, exp, size);

exp.re = 0; exp.im = -1;

pImgClass.DataLoadSum(pImage2, u, exp, size);

exp.re = -1; exp.im = 0;

pImgClass.DataLoadSum(pImage3, u, exp, size);

exp.re = 0; exp.im = 1;

pImgClass.DataLoadSum(pImage4, u, exp, size);

exp.re = 1; exp.im = 0;

pImgClass.DataLoadSum(pImage5, v, exp, size);

exp.re = 0; exp.im = -1;

pImgClass.DataLoadSum(pImage6, v, exp, size);

exp.re = -1; exp.im = 0;

pImgClass.DataLoadSum(pImage7, v, exp, size);

exp.re = 0; exp.im = 1;

pImgClass.DataLoadSum(pImage8, v, exp, size);

for(j=0; j<size.cy; j++)

for(int i=0; i<size.cx; i++)

z[j*size.cx+i] =

pComplex.CMul(pComplex.Conjg(u[j*size.cx+i]), v[j*size.cx+i]);

//filtering

if(dlg.m_phsa) //with phsa

pImgClass.Phsa(z, out, size, dlg.m_masksize); //크기 변 경 가능하게..

else //without phsa

for(int j=0; j<size.cy; j++)

for(int i=0; i<size.cx; i++)

out[j*size.cx+i] =(float)

atan2(z[j*size.cx+i].im, z[j*size.cx+i].re);

for(j=0; j<size.cy; j++) //convert complex to 256image for(int i=0; i<size.cx; i++)

{

double value = out[j*size.cx+i];

ims[j*size.cx+i] = cImage[j*size.cx+i]=(BYTE)(

(value+3.141592) / (3.141592*2)*255);

} if(dlg.m_median)

pImgClass.MedianFilter(ims, cImage, size, 3);

SIZE csize;

pDoc->m_FFT->CalSquareSize(size, &csize);

이미지에 컴플렉스 변수를 생성해준다 나중에 인버스를 위해서

// .

pDoc->m_pComplex = new COMPLEX [csize.cx * csize.cy];

pDoc->oImageSize = size;

p D o c - > m _ p I m a g e . C o p y H e a d e r s ( m _ p I m a g e 1 . C l o n B m p F i l e H e a d e r , m_pImage1.tcDib, m_pImage1.pClonBitMapInfoHeader, cImage, size, 8);

strcpy(pDoc->m_pImage.m_strFileName, "FFT");

CTakeCjView* pView = (CTakeCjView*)pChild->GetActiveView();

pView->SetScrollSizes(MM_TEXT, pDoc->ImageSize);

pView->GetParentFrame()->RecalcLayout();

pView->ResizeParentToFit(false);

delete [] Intensity;

delete [] data;

delete [] u;

delete [] v;

delete [] z;

delete [] out;

delete [] ims;

delete [] pImage1;

delete [] pImage2;

delete [] pImage3;

delete [] pImage4;

delete [] pImage5;

delete [] pImage6;

delete [] pImage7;

delete [] pImage8;

delete [] cImage;

} }

void CControlDlg2::OnButtonLsTofile() {

CTakeCjApp* pApp = (CTakeCjApp*)AfxGetApp();

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->SetLogData("Launch Least square fitting from files");

CLSDlg dlg;

if(dlg.DoModal()==IDOK) {

파일을 전부 열어서 //

pApp->FileNew1();

CChildFrame* pChild=(CChildFrame*)pMain->GetActiveFrame();

CTakeCjDoc* pDoc=(CTakeCjDoc*)pChild->GetActiveDocument();

//pDoc->SetTitle(FileName);

SIZE size = {640, 480};

CIPSGImgCls m_pImage1, m_pImage2, m_pImage3, m_pImage4;

BYTE* pImage1, *pImage2, *pImage3, *pImage4, *cImage;

float* oImage, *xImage, *yImage, *fImage1, *fImage2, *fImage3,

*fImage4;

pImage1 = new BYTE[size.cx * size.cy];

pImage2 = new BYTE[size.cx * size.cy];

pImage3 = new BYTE[size.cx * size.cy];

pImage4 = new BYTE[size.cx * size.cy];

cImage = new BYTE[size.cx * size.cy];

oImage = new float[size.cx * size.cy];

fImage1 = new float[size.cx * size.cy];

fImage2 = new float[size.cx * size.cy];

fImage3 = new float[size.cx * size.cy];

fImage4 = new float[size.cx * size.cy];

xImage = new float[size.cx * size.cy];

yImage = new float[size.cx * size.cy];

m_pImage1.LoadBmpImage(dlg.m_FileName1);

m_pImage2.LoadBmpImage(dlg.m_FileName2);

m_pImage3.LoadBmpImage(dlg.m_FileName3);

m_pImage4.LoadBmpImage(dlg.m_FileName4);

m_pImage1.GetBuffer(pImage1);

m_pImage2.GetBuffer(pImage2);

m_pImage3.GetBuffer(pImage3);

m_pImage4.GetBuffer(pImage4);

이미지의 크기를 얻어온다

// .

pDoc->ImageSize = size;

for(int j=0; j<size.cy; j++) {

for(int i=0; i<size.cx; i++) {

fImage1[j*size.cx +i]

=(float)((float)pImage1[j*size.cx + i]/(float)255*M_PI*2-M_PI);

fImage2[j*size.cx +i]

=(float)((float)pImage2[j*size.cx + i]/(float)255*M_PI*2-M_PI);

fImage3[j*size.cx +i]

=(float)((float)pImage3[j*size.cx + i]/(float)255*M_PI*2-M_PI);

fImage4[j*size.cx +i]

=(float)((float)pImage4[j*size.cx + i]/(float)255*M_PI*2-M_PI);

} }

for(j=0; j<size.cy; j++)

for(int i=0; i<size.cx; i++) {

xImage[j*size.cx+i] =

(float)(fImage1[j*size.cx+i]-fImage4[j*size.cx+i]);

yImage[j*size.cx+i] =

(float)(fImage2[j*size.cx+i]-fImage3[j*size.cx+i]);

}

pMain->pLs->LeastSquareFit(xImage, yImage, oImage, size, 11);

float max, min;

max = min = oImage[0];

for(j=0; j<size.cy; j++)

for(int i=0; i<size.cx; i++) {

if(max < oImage[j*size.cx+i])

max = oImage[j*size.cx + i];

if(min > oImage[j*size.cx + i]) min = oImage[j*size.cx + i];

}

for(j=0; j<size.cy; j++)

for(int i=0; i<size.cx; i++) {

BYTE Boundary = (BYTE)((double)(oImage[j*size.cx + i]

- min)/(double)(max-min) * 255);

if(Boundary>255)

cImage[j*size.cx+i] = 255;

else

cImage[j*size.cx +i] =Boundary;

}

p D o c - > m _ p I m a g e . C o p y H e a d e r s ( m _ p I m a g e 1 . C l o n B m p F i l e H e a d e r , m_pImage1.tcDib, m_pImage1.pClonBitMapInfoHeader, cImage, size, 8);

delete [] cImage;

delete [] xImage;

delete [] yImage;

delete [] oImage;

delete [] pImage1;

delete [] pImage2;

delete [] pImage3;

delete [] pImage4;

delete [] fImage1;

delete [] fImage2;

delete [] fImage3;

delete [] fImage4;

SIZE csize;

pDoc->m_FFT->CalSquareSize(size, &csize);

이미지에 컴플렉스 변수를 생성해준다 나중에 인버스를 위해서

// .

pDoc->m_pComplex = new COMPLEX [csize.cx * csize.cy];

pDoc->oImageSize = size;

CTakeCjView* pView = (CTakeCjView*)pChild->GetActiveView();

pView->SetScrollSizes(MM_TEXT, pDoc->ImageSize);

pView->GetParentFrame()->RecalcLayout();

pView->ResizeParentToFit(false);

}

}

관련 문서