1163 lines
45 KiB
C++
1163 lines
45 KiB
C++
// 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<iRepeTestTimes*2)
|
|
{
|
|
if (bRepeTestDone)
|
|
{
|
|
if (RepeTestCnt==-1)
|
|
{
|
|
if (RepeTestAxisX)
|
|
{
|
|
pSmartMotor_Proto->_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);
|
|
}
|
|
}
|
|
|