// AnimaticsUtilityDlg.cpp : implementation file // #include "stdafx.h" #include "afxdialogex.h" #include "resource.h" #include "afxwin.h" #include "..\..\..\Animatics\Animatics_Proto.h" #include "ProcessButton.h" #include "AnimaticsUtilityDlg.h" extern SmartMotor_Proto* pSmartMotor_Proto; // AnimaticsUtilityDlg dialog CLogger* pAnimaticsLogger=NULL; BOOL RepeTestAxisX,RepeTestAxisY,RepeTestAxisZ,bRepeTestDone; double RepeTestRecordStartPos[3],RepeTestRecordEndPos[3],dRepeTestFromPos,dRepeTestToPos; //It's for repeatability test.We can judge the motion is "from" or "to" by it; int RepeTestCnt,iRepeTestInterval,iRepeTestTimes; //It's for repeatability test.When it is true,test has begun;and When it is false,test has stopped; bool RepeTestBeginFlag; //==================================================== IMPLEMENT_DYNAMIC(AnimaticsUtilityDlg, CDialog) AnimaticsUtilityDlg::AnimaticsUtilityDlg(CWnd* pParent /*=NULL*/) : CDialog(AnimaticsUtilityDlg::IDD, pParent) { } AnimaticsUtilityDlg::~AnimaticsUtilityDlg() { } void AnimaticsUtilityDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_X_LEFT, MoveX_Left); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT, MoveX_Right); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_Y_BACK, MoveY_Back); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT, MoveY_Front); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN, MoveZ_Down); DDX_Control(pDX, IDC_BUTTON_ANIMATICS_MOVE_Z_UP, MoveZ_Up); // DDX_Control(pDX, IDC_EDIT_ANIMATICS_REPRETEST, RepeTestMsgOut); DDX_Text(pDX, IDC_EDIT_REPETEST_DIS_FROM, RepeTestMoveFromDis); DDX_Text(pDX, IDC_EDIT_REPETEST_DIS_TO, RepeTestMoveToDis); DDX_Text(pDX, IDC_EDIT_REPETEST_TIMES, RepeTestTimes); DDX_Text(pDX, IDC_EDIT_REPETEST_INTERVAL, RepeTestInterval); DDX_Text(pDX, IDC_EDIT_ANIMATICS_CMD, SmartMotorSendCmd); DDX_Text(pDX, IDC_EDIT_ANIMATICS_CMD_RESPONSE, SmartMotorGetResponse); //=====================X=================== DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_X1, SpeedParameterX[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_X1, AccelParameterX[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_X1, DecelParameterX[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_X2, SpeedParameterX[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_X2, AccelParameterX[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_X2, DecelParameterX[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_X3, SpeedParameterX[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_X3, AccelParameterX[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_X3, DecelParameterX[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_X4, SpeedParameterX[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_X4, AccelParameterX[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_X4, DecelParameterX[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_X5, SpeedParameterX[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_X5, AccelParameterX[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_X5, DecelParameterX[4]); DDX_Text(pDX, IDC_EDIT_X_SCALE_COEFFICIENT, ScaleResolutionX); DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_X, NegSoftLimitX); DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_X, PosSoftLimitX); DDX_Text(pDX, IDC_EDIT_ANIMATICS_MOVE_TO_X, MoveToDisX); //=====================Y=================== DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Y1, SpeedParameterY[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Y1, AccelParameterY[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Y1, DecelParameterY[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Y2, SpeedParameterY[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Y2, AccelParameterY[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Y2, DecelParameterY[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Y3, SpeedParameterY[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Y3, AccelParameterY[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Y3, DecelParameterY[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Y4, SpeedParameterY[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Y4, AccelParameterY[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Y4, DecelParameterY[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Y5, SpeedParameterY[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Y5, AccelParameterY[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Y5, DecelParameterY[4]); DDX_Text(pDX, IDC_EDIT_Y_SCALE_COEFFICIENT, ScaleResolutionY); DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_Y, NegSoftLimitY); DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_Y, PosSoftLimitY); DDX_Text(pDX, IDC_EDIT_ANIMATICS_MOVE_TO_Y, MoveToDisY); //=====================Z=================== DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Z1, SpeedParameterZ[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Z1, AccelParameterZ[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Z1, DecelParameterZ[0]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Z2, SpeedParameterZ[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Z2, AccelParameterZ[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Z2, DecelParameterZ[1]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Z3, SpeedParameterZ[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Z3, AccelParameterZ[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Z3, DecelParameterZ[2]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Z4, SpeedParameterZ[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Z4, AccelParameterZ[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Z4, DecelParameterZ[3]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_SPEED_Z5, SpeedParameterZ[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_ACCEL_Z5, AccelParameterZ[4]); DDX_Text(pDX, IDC_EDIT_ANIMATICS_DECEL_Z5, DecelParameterZ[4]); DDX_Text(pDX, IDC_EDIT_Z_SCALE_COEFFICIENT, ScaleResolutionZ); DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_Z, NegSoftLimitZ); DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_Z, PosSoftLimitZ); DDX_Text(pDX, IDC_EDIT_ANIMATICS_MOVE_TO_Z, MoveToDisZ); //============================================= } BEGIN_MESSAGE_MAP(AnimaticsUtilityDlg, CDialog) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_START_ANIMATICS_MACHINE, &AnimaticsUtilityDlg::OnBnClickedButtonStartAnimaticsMachine) ON_BN_CLICKED(IDC_BUTTON_STOP_ANIMATICS_MACHINE, &AnimaticsUtilityDlg::OnBnClickedButtonStopAnimaticsMachine) ON_BN_CLICKED(IDCANCEL, &AnimaticsUtilityDlg::OnBnClickedCancel) ON_EN_KILLFOCUS(IDC_EDIT_X_SCALE_COEFFICIENT, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_NEG_WORKLIMIT_X, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_POS_WORKLIMIT_X, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_Y_SCALE_COEFFICIENT, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_NEG_WORKLIMIT_Y, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_POS_WORKLIMIT_Y, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_Z_SCALE_COEFFICIENT, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_NEG_WORKLIMIT_Z, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_EN_KILLFOCUS(IDC_EDIT_POS_WORKLIMIT_Z, &AnimaticsUtilityDlg::OnEnKillfocusEditWorktable) ON_BN_CLICKED(IDC_BUTTON_ANIMATICS_MOVE_TO_XYZ, &AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToXyz) ON_BN_CLICKED(IDC_BUTTON_POS_SET_ZERO, &AnimaticsUtilityDlg::OnBnClickedButtonPosSetZero) ON_BN_CLICKED(IDC_BUTTON_SAVE_CONFIG, &AnimaticsUtilityDlg::OnBnClickedButtonSaveConfig) ON_BN_CLICKED(IDC_BUTTON_READ_CONFIG, &AnimaticsUtilityDlg::OnBnClickedButtonReadConfig) ON_BN_CLICKED(IDC_RADIO_ANIMATICS_SPEED_GEAR_1, &AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear1) ON_BN_CLICKED(IDC_RADIO_ANIMATICS_SPEED_GEAR_2, &AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear2) ON_BN_CLICKED(IDC_RADIO_ANIMATICS_SPEED_GEAR_3, &AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear3) ON_BN_CLICKED(IDC_RADIO_ANIMATICS_SPEED_GEAR_4, &AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear4) ON_BN_CLICKED(IDC_BUTTON_ANIMATICS_MOVE_TO_X, &AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToX) ON_BN_CLICKED(IDC_BUTTON_ANIMATICS_MOVE_TO_Y, &AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToY) ON_BN_CLICKED(IDC_BUTTON_ANIMATICS_MOVE_TO_Z, &AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToZ) ON_EN_KILLFOCUS(IDC_EDIT_ANIMATICS_CMD, &AnimaticsUtilityDlg::OnEnKillfocusEditAnimaticsCmd) ON_BN_CLICKED(IDC_BUTTON_BEGIN_REPE_TEST, &AnimaticsUtilityDlg::OnBnClickedButtonBeginRepeTest) ON_BN_CLICKED(IDC_BUTTON_SAVE_REPETEST, &AnimaticsUtilityDlg::OnBnClickedButtonSaveRepetest) ON_BN_CLICKED(IDC_BUTTON_ANIMATICS_HOME, &AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsHome) END_MESSAGE_MAP() // AnimaticsUtilityDlg message handlers BOOL AnimaticsUtilityDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } GetDlgItem(IDC_BUTTON_START_ANIMATICS_MACHINE)->EnableWindow(true); GetDlgItem(IDC_BUTTON_STOP_ANIMATICS_MACHINE)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_HOME)->EnableWindow(false); GetDlgItem(IDC_BUTTON_READ_CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SAVE_CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_UP)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_LEFT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_BACK)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_X)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Y)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Z)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_XYZ)->EnableWindow(false); GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SAVE_REPETEST)->EnableWindow(false); GetDlgItem(IDC_BUTTON_POS_SET_ZERO)->EnableWindow(false); //=============================================================== ((CButton *)GetDlgItem(IDC_RADIO_ANIMATICS_SPEED_GEAR_2))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_ANIMATICS_CMD_X))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_ABSOLUTE))->SetCheck(TRUE); //=============================================================== m_hRed=AfxGetApp()->LoadIcon(IDI_ICON_RED); m_hGreen=AfxGetApp()->LoadIcon(IDI_ICON_GREEN); m_hGray=AfxGetApp()->LoadIcon(IDI_ICON_GRAY); m_hWhite=AfxGetApp()->LoadIcon(IDI_ICON_WHITE); m_hBlack=AfxGetApp()->LoadIcon(IDI_ICON_BLACK); //=============================================================== RepeTestAxisX=FALSE; RepeTestAxisY=FALSE; RepeTestAxisZ=FALSE; bRepeTestDone=TRUE; dRepeTestFromPos=0.0; dRepeTestToPos=0.0; iRepeTestInterval=0; iRepeTestTimes=0; RepeTestRecordStartPos[0]=0.0; RepeTestRecordStartPos[1]=0.0; RepeTestRecordStartPos[2]=0.0; RepeTestRecordEndPos[0]=0.0; RepeTestRecordEndPos[1]=0.0; RepeTestRecordEndPos[2]=0.0; RepeTestCnt=-1; RepeTestBeginFlag=false; //=============================================================== MoveToDisX=_T("0.0"); MoveToDisY=_T("0.0"); MoveToDisZ=_T("0.0"); RepeTestMoveFromDis=_T("0"); RepeTestMoveToDis=_T("0"); RepeTestTimes=_T("0"); RepeTestInterval=_T("0"); if (!pAnimaticsLogger) { pAnimaticsLogger = new CLogger(_T("\\SmartMotor_DebugLog.txt")); } //=============================================================== return TRUE; // return TRUE unless you set the focus to a control } void AnimaticsUtilityDlg::OnBnClickedButtonStartAnimaticsMachine() { if (pSmartMotor_Proto) { pSmartMotor_Proto->_start_machine(); } GetDlgItem(IDC_BUTTON_START_ANIMATICS_MACHINE)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_HOME)->EnableWindow(true); GetDlgItem(IDC_BUTTON_STOP_ANIMATICS_MACHINE)->EnableWindow(true); GetDlgItem(IDC_BUTTON_READ_CONFIG)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SAVE_CONFIG)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_UP)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_LEFT)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_BACK)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_X)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Y)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Z)->EnableWindow(true); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_XYZ)->EnableWindow(true); GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SAVE_REPETEST)->EnableWindow(true); GetDlgItem(IDC_BUTTON_POS_SET_ZERO)->EnableWindow(true); GetDlgItem(IDCANCEL)->EnableWindow(false); SetTimer(1,150,NULL); ShowParameterOnEdit(); ShowWorktableEdit(); } void AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsHome() { pSmartMotor_Proto->smartmotor_motion_Dcc_Home(); } void AnimaticsUtilityDlg::OnBnClickedButtonStopAnimaticsMachine() { KillTimer(1); KillTimer(3); pSmartMotor_Proto->_shutdown_machine(); GetDlgItem(IDC_BUTTON_START_ANIMATICS_MACHINE)->EnableWindow(true); GetDlgItem(IDC_BUTTON_STOP_ANIMATICS_MACHINE)->EnableWindow(false); GetDlgItem(IDC_BUTTON_READ_CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SAVE_CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_UP)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_LEFT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_BACK)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_X)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Y)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_Z)->EnableWindow(false); GetDlgItem(IDC_BUTTON_ANIMATICS_MOVE_TO_XYZ)->EnableWindow(false); GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SAVE_REPETEST)->EnableWindow(false); GetDlgItem(IDC_BUTTON_POS_SET_ZERO)->EnableWindow(false); GetDlgItem(IDCANCEL)->EnableWindow(true); } void AnimaticsUtilityDlg::OnBnClickedCancel() { if (pSmartMotor_Proto) { delete pSmartMotor_Proto; pSmartMotor_Proto=nullptr; } if (pAnimaticsLogger) { delete pAnimaticsLogger; pAnimaticsLogger=nullptr; } CDialog::OnCancel(); } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToX() { UpdateData(TRUE); USES_CONVERSION; const char* cMove_to_X=T2A(MoveToDisX); pSmartMotor_Proto->g_machine.x._d_move_dis = atof(cMove_to_X); if (((CButton *)GetDlgItem(IDC_CHECK_ANIMATICS_REVERSE))->GetCheck()) { pSmartMotor_Proto->g_machine.x._d_move_dis = -pSmartMotor_Proto->g_machine.x._d_move_dis; } if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_ABSOLUTE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOX_ABS(pSmartMotor_Proto->g_machine.x._d_move_dis); } else if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_RELATIVE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOX_REL(pSmartMotor_Proto->g_machine.x._d_move_dis); } } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToY() { UpdateData(TRUE); USES_CONVERSION; const char* cMove_to_Y=T2A(MoveToDisY); pSmartMotor_Proto->g_machine.y._d_move_dis = atof(cMove_to_Y); if (((CButton *)GetDlgItem(IDC_CHECK_ANIMATICS_REVERSE))->GetCheck()) { pSmartMotor_Proto->g_machine.y._d_move_dis = -pSmartMotor_Proto->g_machine.y._d_move_dis; } if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_ABSOLUTE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOY_ABS(pSmartMotor_Proto->g_machine.y._d_move_dis); } else if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_RELATIVE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOY_REL(pSmartMotor_Proto->g_machine.y._d_move_dis); } } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToZ() { UpdateData(TRUE); USES_CONVERSION; const char* cMove_to_Z=T2A(MoveToDisZ); pSmartMotor_Proto->g_machine.z._d_move_dis = atof(cMove_to_Z); if (((CButton *)GetDlgItem(IDC_CHECK_ANIMATICS_REVERSE))->GetCheck()) { pSmartMotor_Proto->g_machine.z._d_move_dis = -pSmartMotor_Proto->g_machine.z._d_move_dis; } if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_ABSOLUTE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOZ_ABS(pSmartMotor_Proto->g_machine.z._d_move_dis); } else if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_RELATIVE))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOZ_REL(pSmartMotor_Proto->g_machine.z._d_move_dis); } } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonAnimaticsMoveToXyz() { UpdateData(TRUE); USES_CONVERSION; const char* cMove_to_X=T2A(MoveToDisX); const char* cMove_to_Y=T2A(MoveToDisY); const char* cMove_to_Z=T2A(MoveToDisZ); pSmartMotor_Proto->g_machine.x._d_move_dis = atof(cMove_to_X); pSmartMotor_Proto->g_machine.y._d_move_dis = atof(cMove_to_Y); pSmartMotor_Proto->g_machine.z._d_move_dis = atof(cMove_to_Z); if (((CButton *)GetDlgItem(IDC_CHECK_ANIMATICS_REVERSE))->GetCheck()) { pSmartMotor_Proto->g_machine.x._d_move_dis = -pSmartMotor_Proto->g_machine.x._d_move_dis; pSmartMotor_Proto->g_machine.y._d_move_dis = -pSmartMotor_Proto->g_machine.y._d_move_dis; pSmartMotor_Proto->g_machine.z._d_move_dis = -pSmartMotor_Proto->g_machine.z._d_move_dis; } if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_ABSOLUTE))->GetCheck()) { pSmartMotor_Proto->smartmotor_motion_set_position_xyz(pSmartMotor_Proto->g_machine.x._d_move_dis, pSmartMotor_Proto->g_machine.y._d_move_dis, pSmartMotor_Proto->g_machine.z._d_move_dis ,false); } else if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_TO_RELATIVE))->GetCheck()) { pSmartMotor_Proto->smartmotor_motion_move_rel_dis_xyz(pSmartMotor_Proto->g_machine.x._d_move_dis, pSmartMotor_Proto->g_machine.y._d_move_dis, pSmartMotor_Proto->g_machine.z._d_move_dis ,false); } } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonPosSetZero() { double XPos(0.0),YPos(0.0),ZPos(0.0); pSmartMotor_Proto->smartmotor_motion_get_position_xyz(XPos,YPos,ZPos); pSmartMotor_Proto->g_machine.x._lSet_Zero_Pos=pSmartMotor_Proto->g_machine.x._l_cur_pos; pSmartMotor_Proto->g_machine.x._dSet_Zero_Pos=pSmartMotor_Proto->g_machine.x._d_cur_pos; pSmartMotor_Proto->g_machine.y._lSet_Zero_Pos=pSmartMotor_Proto->g_machine.y._l_cur_pos; pSmartMotor_Proto->g_machine.y._dSet_Zero_Pos=pSmartMotor_Proto->g_machine.y._d_cur_pos; pSmartMotor_Proto->g_machine.z._lSet_Zero_Pos=pSmartMotor_Proto->g_machine.z._l_cur_pos; pSmartMotor_Proto->g_machine.z._dSet_Zero_Pos=pSmartMotor_Proto->g_machine.z._d_cur_pos; } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonSaveConfig() { ChangeParameterOnEdit(); pSmartMotor_Proto->SaveSmartMotorConfig(); } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedButtonReadConfig() { pSmartMotor_Proto->LoadSmartMotorConfig(); ShowParameterOnEdit(); } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear1() { pSmartMotor_Proto->g_machine.x._Move_Speed_Gear=0; pSmartMotor_Proto->g_machine.y._Move_Speed_Gear=0; pSmartMotor_Proto->g_machine.z._Move_Speed_Gear=0; } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear2() { pSmartMotor_Proto->g_machine.x._Move_Speed_Gear=1; pSmartMotor_Proto->g_machine.y._Move_Speed_Gear=1; pSmartMotor_Proto->g_machine.z._Move_Speed_Gear=1; } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear3() { pSmartMotor_Proto->g_machine.x._Move_Speed_Gear=2; pSmartMotor_Proto->g_machine.y._Move_Speed_Gear=2; pSmartMotor_Proto->g_machine.z._Move_Speed_Gear=2; } //=========================================================== void AnimaticsUtilityDlg::OnBnClickedRadioAnimaticsSpeedGear4() { pSmartMotor_Proto->g_machine.x._Move_Speed_Gear=3; pSmartMotor_Proto->g_machine.y._Move_Speed_Gear=3; pSmartMotor_Proto->g_machine.z._Move_Speed_Gear=3; } //=========================================================== void AnimaticsUtilityDlg::OnEnKillfocusEditAnimaticsCmd() { UpdateData(TRUE); USES_CONVERSION; if (((CButton *)GetDlgItem(IDC_RADIO_ANIMATICS_CMD_X))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_COMM_CMDX(SmartMotorSendCmd); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_GET_COMM_RESPONSEX(SmartMotorGetResponse); } else if (((CButton *)GetDlgItem(IDC_RADIO_ANIMATICS_CMD_Y))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_COMM_CMDY(SmartMotorSendCmd); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_GET_COMM_RESPONSEY(SmartMotorGetResponse); } else if (((CButton *)GetDlgItem(IDC_RADIO_ANIMATICS_CMD_Z))->GetCheck()) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_COMM_CMDZ(SmartMotorSendCmd); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_GET_COMM_RESPONSEZ(SmartMotorGetResponse); } UpdateData(FALSE); } //================================================================================================ void AnimaticsUtilityDlg::OnTimer(UINT_PTR nIDEvent) { USES_CONVERSION; switch(nIDEvent) { case 1: { if (pSmartMotor_Proto) { double XPos(0.0),YPos(0.0),ZPos(0.0); pSmartMotor_Proto->smartmotor_motion_get_position_xyz(XPos,YPos,ZPos); PosPulseX.Format(_T("%8ld"),(pSmartMotor_Proto->g_machine.x._l_cur_pos)); PosPulseY.Format(_T("%8ld"),(pSmartMotor_Proto->g_machine.y._l_cur_pos)); PosPulseZ.Format(_T("%8ld"),(pSmartMotor_Proto->g_machine.z._l_cur_pos)); GetDlgItem(IDC_EDIT_X_POS)->SetWindowText(PosPulseX); GetDlgItem(IDC_EDIT_Y_POS)->SetWindowText(PosPulseY); GetDlgItem(IDC_EDIT_Z_POS)->SetWindowText(PosPulseZ); PosmmX.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.x._d_cur_pos)); PosmmY.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.y._d_cur_pos)); PosmmZ.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.z._d_cur_pos)); GetDlgItem(IDC_EDIT_X_POS_MM)->SetWindowText(PosmmX); GetDlgItem(IDC_EDIT_Y_POS_MM)->SetWindowText(PosmmY); GetDlgItem(IDC_EDIT_Z_POS_MM)->SetWindowText(PosmmZ); PosmmChangedX.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.x._d_cur_pos-pSmartMotor_Proto->g_machine.x._dSet_Zero_Pos)); PosmmChangedY.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.y._d_cur_pos-pSmartMotor_Proto->g_machine.y._dSet_Zero_Pos)); PosmmChangedZ.Format(_T("%8.4lf"),(pSmartMotor_Proto->g_machine.z._d_cur_pos-pSmartMotor_Proto->g_machine.z._dSet_Zero_Pos)); GetDlgItem(IDC_EDIT_X_POS_MM_CHANGE)->SetWindowText(PosmmChangedX); GetDlgItem(IDC_EDIT_Y_POS_MM_CHANGE)->SetWindowText(PosmmChangedY); GetDlgItem(IDC_EDIT_Z_POS_MM_CHANGE)->SetWindowText(PosmmChangedZ); //==================================================== if (pSmartMotor_Proto->m_bHomingActive) { pSmartMotor_Proto->smartmotor_motion_get_home_status(); pSmartMotor_Proto->smartmotor_motion_IS_Homed(); if(pSmartMotor_Proto->g_machine.s_status._bXHomed) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_X))->SetIcon(m_hGreen); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_X))->SetIcon(m_hRed); } if(pSmartMotor_Proto->g_machine.s_status._bYHomed) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_Y))->SetIcon(m_hGreen); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_Y))->SetIcon(m_hRed); } if(pSmartMotor_Proto->g_machine.s_status._bZHomed) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_z))->SetIcon(m_hGreen); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_HOME_z))->SetIcon(m_hRed); } } //==================================================== pSmartMotor_Proto->smartmotor_motion_get_motion_status(); if (pSmartMotor_Proto->g_machine.s_status._bXMoving) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_X))->SetIcon(m_hRed); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_X))->SetIcon(m_hGreen); } //----------------------------------------------------- if (pSmartMotor_Proto->g_machine.s_status._bYMoving) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_Y))->SetIcon(m_hRed); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_Y))->SetIcon(m_hGreen); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.s_status._bZMoving) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_Z))->SetIcon(m_hRed); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOVING_Z))->SetIcon(m_hGreen); } //==================================================== pSmartMotor_Proto->smartmotor_motion_get_status_word(); //------------------------------------------------------ ShowMotorStatusX(); ShowMotorStatusY(); ShowMotorStatusZ(); //==================================================== if(!bRepeTestDone) { if (!pSmartMotor_Proto->g_machine.s_status._bXYZMoving) { pAnimaticsLogger->SendAndFlush(_T("[Move Done]bRepeTestDone=%d; RepeTestBeginFlag=%d \r\n"),bRepeTestDone,RepeTestBeginFlag); if(RepeTestBeginFlag) { bRepeTestDone=TRUE; SetTimer(3,iRepeTestInterval,NULL); } else { bRepeTestDone=TRUE; MsgX=_T(""); MsgY=_T(""); MsgZ=_T(""); ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); } } } } break; } case 3: { if (RepeTestBeginFlag) { bRepeTestDone=TRUE; SmartMotorRepeTest(); } else { bRepeTestDone=TRUE; MsgX=_T(""); MsgY=_T(""); MsgZ=_T(""); ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); } KillTimer(3); break; } } CDialog::OnTimer(nIDEvent); } //===================================================================================== void AnimaticsUtilityDlg::OnBnClickedButtonBeginRepeTest() { UpdateData(TRUE); USES_CONVERSION; const char* cTmp; cTmp=T2A(RepeTestMoveFromDis); dRepeTestFromPos = atof(cTmp); cTmp=T2A(RepeTestMoveToDis); dRepeTestToPos = atof(cTmp); cTmp=T2A(RepeTestTimes); iRepeTestTimes = atoi(cTmp); cTmp=T2A(RepeTestInterval); iRepeTestInterval = atoi(cTmp); if (RepeTestBeginFlag) { RepeTestBeginFlag=false; pSmartMotor_Proto->smartmotor_motion_stop_xyz(); bRepeTestDone=FALSE; ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); } else { RepeTestBeginFlag=true; RepeTestCnt=-1; MsgX=_T(""); MsgY=_T(""); MsgZ=_T(""); GetDlgItem(IDC_EDIT_REPRETEST)->SetWindowTextW(MsgZ); RepeTestRecordStartPos[0]=0; RepeTestRecordStartPos[1]=0; RepeTestRecordStartPos[2]=0; RepeTestRecordEndPos[0]=0; RepeTestRecordEndPos[1]=0; RepeTestRecordEndPos[2]=0; pAnimaticsLogger->SendAndFlush(_T("[RepeTest] From: %f;To:%f; Times:%d; Interval:%d \r\n"),dRepeTestFromPos,dRepeTestToPos,iRepeTestTimes,iRepeTestInterval); RepeTestAxisX = ((CButton *)GetDlgItem(IDC_CHECK_REPETESTX))->GetCheck(); RepeTestAxisY = ((CButton *)GetDlgItem(IDC_CHECK_REPETESTY))->GetCheck(); RepeTestAxisZ = ((CButton *)GetDlgItem(IDC_CHECK_REPETESTZ))->GetCheck(); bRepeTestDone=TRUE; SmartMotorRepeTest(); ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Stop")); } } //===================================================================================== BOOL AnimaticsUtilityDlg::SmartMotorRepeTest() { UpdateData(TRUE); CString csTemp; if (RepeTestCnt_send_cmd_SMARTMOTOR_MOVETOX_ABS(dRepeTestFromPos); } if (RepeTestAxisY) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOY_ABS(dRepeTestFromPos); } if(RepeTestAxisZ) { pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOZ_ABS(dRepeTestFromPos); } } else { if (RepeTestCnt%2 == 0) { if (RepeTestAxisX) { MsgX.Format(_T("[%2d] X: From: % .4f "),RepeTestCnt/2+1,pSmartMotor_Proto->g_machine.x._d_cur_pos); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOX_ABS(dRepeTestToPos); } if (RepeTestAxisY) { MsgY.Format(_T("[%2d] Y: From: % .4f "),RepeTestCnt/2+1,pSmartMotor_Proto->g_machine.y._d_cur_pos); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOY_ABS(dRepeTestToPos); } if(RepeTestAxisZ) { MsgZ.Format(_T("[%2d] Z: From: % .4f "),RepeTestCnt/2+1,pSmartMotor_Proto->g_machine.z._d_cur_pos); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOZ_ABS(dRepeTestToPos); } } else if(RepeTestCnt%2 == 1) { if (RepeTestAxisX) { csTemp.Format(_T("To: % 3.4f \r\n"),pSmartMotor_Proto->g_machine.x._d_cur_pos); MsgX+=csTemp; OutputWithScroll(MsgX,RepeTestMsgOut); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOX_ABS(dRepeTestFromPos); } if (RepeTestAxisY) { csTemp.Format(_T("To: % 3.4f \r\n"),pSmartMotor_Proto->g_machine.y._d_cur_pos); MsgY+=csTemp; OutputWithScroll(MsgY,RepeTestMsgOut); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOY_ABS(dRepeTestFromPos); } if(RepeTestAxisZ) { csTemp.Format(_T("To: % 3.4f \r\n"),pSmartMotor_Proto->g_machine.z._d_cur_pos); MsgZ+=csTemp; OutputWithScroll(MsgZ,RepeTestMsgOut); pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVETOZ_ABS(dRepeTestFromPos); } } } bRepeTestDone=false; RepeTestCnt++; } } else { MsgX=_T(""); MsgY=_T(""); MsgZ=_T(""); ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); } return TRUE; } //===================================================================================== void AnimaticsUtilityDlg::OnBnClickedButtonSaveRepetest() { USES_CONVERSION; UpdateData(TRUE); CString FileName; CString PathName; FILE* m_pOutFile; FileName=_T("RepeTest.txt"); CString szFilter=_T("TXT Files(*.txt)|*.txt|ALL Files(*.*)|*.*||"); CFileDialog fdlg(FALSE,_T("INI"),FileName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter); if( fdlg.DoModal()==IDOK) { const char* outBuff=NULL; PathName=fdlg.GetPathName(); _wfopen_s(&m_pOutFile, PathName, _T("wt")); if (!m_pOutFile) { MessageBox( _T("File name Error."), _T("Message"), MB_OK); }; CString MsgOut; RepeTestMsgOut.GetWindowText(MsgOut); outBuff=T2A(MsgOut); fprintf(m_pOutFile,"%s", outBuff); fclose(m_pOutFile); } delete fdlg; } //===================================================================================== //Print message on edit control void AnimaticsUtilityDlg::OutputWithScroll(const CString &strNewText,CEdit &edtOutput) { CString strOutput; edtOutput.GetWindowText(strOutput); strOutput += strNewText; //if ("/r/n" != strOutput.Right(2)) //{ // strOutput += "/r/n"; //} int iCount = strOutput.GetLength(); edtOutput.SetRedraw(FALSE); edtOutput.SetWindowText(strOutput); int iLine = edtOutput.GetLineCount(); edtOutput.LineScroll(iLine, 0); edtOutput.SetSel(iCount, iCount); edtOutput.SetRedraw(TRUE); } //================================================================ void AnimaticsUtilityDlg::ChangeParameterOnEdit() { UpdateData(TRUE); USES_CONVERSION; const char* cSpeedX; const char* cSpeedY; const char* cSpeedZ; for(INT i=0;i<5;i++) { cSpeedX=T2A(SpeedParameterX[i]); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._speed_[i]=atoi(cSpeedX); cSpeedX=T2A(AccelParameterX[i]); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._accel_[i]=atoi(cSpeedX); cSpeedX=T2A(DecelParameterX[i]); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._decel_[i]=atoi(cSpeedX); cSpeedY=T2A(SpeedParameterY[i]); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._speed_[i]=atoi(cSpeedY); cSpeedY=T2A(AccelParameterY[i]); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._accel_[i]=atoi(cSpeedY); cSpeedY=T2A(DecelParameterY[i]); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._decel_[i]=atoi(cSpeedY); cSpeedZ=T2A(SpeedParameterZ[i]); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._speed_[i]=atoi(cSpeedZ); cSpeedZ=T2A(AccelParameterZ[i]); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._accel_[i]=atoi(cSpeedZ); cSpeedZ=T2A(DecelParameterZ[i]); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._decel_[i]=atoi(cSpeedZ); } } //================================================================ void AnimaticsUtilityDlg::ShowParameterOnEdit() { for(INT i=0;i<5;i++) { SpeedParameterX[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.x_axis._speed_[i])); AccelParameterX[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.x_axis._accel_[i])); DecelParameterX[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.x_axis._decel_[i])); SpeedParameterY[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.y_axis._speed_[i])); AccelParameterY[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.y_axis._accel_[i])); DecelParameterY[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.y_axis._decel_[i])); SpeedParameterZ[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.z_axis._speed_[i])); AccelParameterZ[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.z_axis._accel_[i])); DecelParameterZ[i].Format(_T("%d"),(pSmartMotor_Proto->g_machine.s_machine_config.z_axis._decel_[i])); } UpdateData(FALSE); } //======================================================== void AnimaticsUtilityDlg::OnEnKillfocusEditWorktable() { UpdateData(TRUE); USES_CONVERSION; const char* cTmp; cTmp=T2A(ScaleResolutionX); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._scale_resolution=atof(cTmp); cTmp=T2A(NegSoftLimitX); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._neg_working_limit=atof(cTmp); cTmp=T2A(PosSoftLimitX); pSmartMotor_Proto->g_machine.s_machine_config.x_axis._pos_working_limit=atof(cTmp); cTmp=T2A(ScaleResolutionY); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._scale_resolution=atof(cTmp); cTmp=T2A(NegSoftLimitY); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._neg_working_limit=atof(cTmp); cTmp=T2A(PosSoftLimitY); pSmartMotor_Proto->g_machine.s_machine_config.y_axis._pos_working_limit=atof(cTmp); cTmp=T2A(ScaleResolutionZ); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._scale_resolution=atof(cTmp); cTmp=T2A(NegSoftLimitZ); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._neg_working_limit=atof(cTmp); cTmp=T2A(PosSoftLimitZ); pSmartMotor_Proto->g_machine.s_machine_config.z_axis._pos_working_limit=atof(cTmp); } //======================================================== void AnimaticsUtilityDlg::ShowWorktableEdit() { ScaleResolutionX.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.x_axis._scale_resolution); NegSoftLimitX.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.x_axis._neg_working_limit); PosSoftLimitX.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.x_axis._pos_working_limit); ScaleResolutionY.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.y_axis._scale_resolution); NegSoftLimitY.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.y_axis._neg_working_limit); PosSoftLimitY.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.y_axis._pos_working_limit); ScaleResolutionZ.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.z_axis._scale_resolution); NegSoftLimitZ.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.z_axis._neg_working_limit); PosSoftLimitZ.Format(_T("%.4f"),pSmartMotor_Proto->g_machine.s_machine_config.z_axis._pos_working_limit); UpdateData(FALSE); } //=========================================================== void AnimaticsUtilityDlg::ShowMotorStatusX() { //=====================status word================================== if (pSmartMotor_Proto->g_machine.x.s_machine_status.DriverRdy) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.MotorOff) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.VoltageFault) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.PosErr) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.OverHeat) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.NegLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_X))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.x.s_machine_status.PosLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_X))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_X))->SetIcon(m_hBlack); } } //=========================================================== void AnimaticsUtilityDlg::ShowMotorStatusY() { //=====================status word================================== if (pSmartMotor_Proto->g_machine.y.s_machine_status.DriverRdy) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.MotorOff) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.VoltageFault) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.PosErr) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.OverHeat) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.NegLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_Y))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.y.s_machine_status.PosLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_Y))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_Y))->SetIcon(m_hBlack); } } //=========================================================== void AnimaticsUtilityDlg::ShowMotorStatusZ() { //=====================status word================================== if (pSmartMotor_Proto->g_machine.z.s_machine_status.DriverRdy) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_DRIVER_RDY_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.MotorOff) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_MOTOR_OFF_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.VoltageFault) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_VOLFAULT_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.PosErr) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSERR_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.OverHeat) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_OVERHEAT_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.NegLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_NEGLIMIT_Z))->SetIcon(m_hBlack); } //------------------------------------------------------ if (pSmartMotor_Proto->g_machine.z.s_machine_status.PosLimit) { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_Z))->SetIcon(m_hWhite); } else { ((CButton*)GetDlgItem(IDC_BUTTON_STATUS_POSLIMIT_Z))->SetIcon(m_hBlack); } }