📄 demo1dlg.cpp
字号:
GetDlgItem(IDC_STATIC_XAXES)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_XLOWSPEED)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_XHIGHSPEED)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_XACCEL)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_XSTEP)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_YAXES)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_YLOWSPEED)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_YHIGHSPEED)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_YACCEL)->ShowWindow(iStatus);
GetDlgItem(IDC_STATIC_YSTEP)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_AXES1)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_AXES2)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_XAXES)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_YAXES)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_CON)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_FAST)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_PMOVE)->ShowWindow(iStatus);
GetDlgItem(IDC_RADIO_VMOVE)->ShowWindow(iStatus);
GetDlgItem(IDC_GROUP_XYAXES)->ShowWindow(iStatus);
GetDlgItem(IDC_GROUP_AXESNUM)->ShowWindow(iStatus);
GetDlgItem(IDC_GROUP_SPEEDTYPE)->ShowWindow(iStatus);
GetDlgItem(IDC_GROUP_MOVETYPE)->ShowWindow(iStatus);
GetDlgItem(IDC_CHK_IP)->ShowWindow(iStatus);
////////////////////////////////////////////////////
//选择了Tab2(圆弧运动参数设定)
GetDlgItem(IDC_STATIC_ARC_XAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_YAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VLOWSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VHIGHSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VACCEL)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_XCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_YCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_R)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_XAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_YAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VLOWSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VHIGHSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VACCEL)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_XCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_YCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_R)->ShowWindow(iStatus1);
GetDlgItem(IDC_GROUP_ARC_SPEEDTYPE)->ShowWindow(iStatus1);
GetDlgItem(IDC_RADIO_ARC_CON)->ShowWindow(iStatus1);
GetDlgItem(IDC_RADIO_ARC_FAST)->ShowWindow(iStatus1);
}
void CDemo1Dlg::OnRadioXaxes()
{
// TODO: Add your control notification handler code here
m_iAxes=IDC_RADIO_XAXES;
SetRadioButton();
}
void CDemo1Dlg::OnRadioYaxes()
{
// TODO: Add your control notification handler code here
m_iAxes=IDC_RADIO_YAXES;
SetRadioButton();
}
///////////////////////////////////
//设置单选按钮状态
void CDemo1Dlg::SetRadioButton()
{
CheckRadioButton(IDC_RADIO_XAXES,IDC_RADIO_YAXES,m_iAxes);
CheckRadioButton(IDC_RADIO_CON,IDC_RADIO_FAST,m_iConFast);
CheckRadioButton(IDC_RADIO_PMOVE,IDC_RADIO_VMOVE,m_iPVMove);
CheckRadioButton(IDC_RADIO_AXES1,IDC_RADIO_AXES2,m_iAxesNum);
CheckRadioButton(IDC_RADIO_ARC_CON,IDC_RADIO_ARC_FAST,m_iArcConFast);
}
void CDemo1Dlg::OnRadioCon()
{
// TODO: Add your control notification handler code here
m_iConFast=IDC_RADIO_CON;
SetRadioButton();
}
void CDemo1Dlg::OnRadioFast()
{
// TODO: Add your control notification handler code here
m_iConFast=IDC_RADIO_FAST;
SetRadioButton();
}
void CDemo1Dlg::OnRadioPmove()
{
// TODO: Add your control notification handler code here
m_iPVMove=IDC_RADIO_PMOVE;
SetRadioButton();
}
void CDemo1Dlg::OnRadioVmove()
{
// TODO: Add your control notification handler code here
m_iPVMove=IDC_RADIO_VMOVE;
SetRadioButton();
}
void CDemo1Dlg::OnRadioAxes1()
{
// TODO: Add your control notification handler code here
m_iAxesNum=IDC_RADIO_AXES1;
SetRadioButton();
}
void CDemo1Dlg::OnRadioAxes2()
{
// TODO: Add your control notification handler code here
m_iAxesNum=IDC_RADIO_AXES2;
SetRadioButton();
}
////////////////////////////////
//初始化运动参数设定
void CDemo1Dlg::InitParam()
{
m_iAxes=IDC_RADIO_XAXES; //以X轴为单轴
m_iConFast=IDC_RADIO_CON; //常速运动
m_iPVMove=IDC_RADIO_PMOVE; //点位运动
m_iAxesNum=IDC_RADIO_AXES1; //单轴运动
m_iArcConFast=IDC_RADIO_ARC_CON; //圆弧运动为常速运动
m_sXAxes="1"; //X轴参数
m_sXLowSpeed="2000";
m_sXHighSpeed="4000";
m_sXAccel="2000";
m_sXStep="4000";
m_sYAxes="2"; //Y轴参数
m_sYLowSpeed="2000";
m_sYHighSpeed="4000";
m_sYAccel="2000";
m_sYStep="4000";
m_sArcXAxes="1"; //圆弧运动参数
m_sArcYAxes="2";
m_sArcVLowSpeed="2000";
m_sArcVHighSpeed="4000";
m_sArcVAccel="2000";
m_sArcXCen="2000";
m_sArcYCen="0";
m_sArcR="360";
UpdateData(FALSE);
}
void CDemo1Dlg::OnBtnStartmove()
{
// TODO: Add your control notification handler code here
int ChX,ChY;
int StepX,StepY;
int DirX,DirY;
int iSelect;
long CenX,CenY;
float Angle;
//////////////////////////////////////////
//设置绘图比例
CString cStr="1";
m_cG.GetDlgItemText(IDC_EDIT_FACTOR,cStr);
m_cG.m_lfFactor=atof(cStr);
//////////////////////////////////////////
//读取运动参数
UpdateData(TRUE);
if(m_bBatch) m_cDll.DmcSetBatchProcessFlag(1); //批处理模式
else m_cDll.DmcSetBatchProcessFlag(0);
iSelect=m_cTabSet.GetCurSel();
if(iSelect==0) //直线运动
{
ChX=atoi(m_sXAxes); ChY=atoi(m_sYAxes);
StepX=atoi(m_sXStep); StepY=atoi(m_sYStep);
if(StepX>=0)DirX=1;
else DirX=-1;
if(StepY>=0)DirY=1;
else DirY=-1;
m_cDll.set_conspeed(ChX,atoi(m_sXLowSpeed));
m_cDll.set_conspeed(ChY,atoi(m_sYLowSpeed));
m_cDll.set_profile(ChX,atoi(m_sXLowSpeed),atoi(m_sXHighSpeed),atoi(m_sXAccel));
m_cDll.set_profile(ChY,atoi(m_sYLowSpeed),atoi(m_sYHighSpeed),atoi(m_sYAccel));
if(m_iConFast==IDC_RADIO_CON)
{
if(m_iPVMove==IDC_RADIO_PMOVE)
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
m_cDll.con_pmove(ChX,StepX);
else
m_cDll.con_pmove(ChY,StepY);
}
else
{
if(m_bIP) m_cDll.con_line2(ChX,StepX,ChY,StepY);
else m_cDll.con_pmove2(ChX,StepX,ChY,StepY);
}
}
else
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
m_cDll.con_vmove(ChX,DirX);
else
m_cDll.con_vmove(ChY,DirY);
}
else
{
if(m_bIP) m_cDll.con_line2(ChX,StepX,ChY,StepY);
else m_cDll.con_vmove2(ChX,DirX,ChY,DirY);
}
}
}
else
{
if(m_iPVMove==IDC_RADIO_PMOVE)
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
m_cDll.fast_pmove(ChX,StepX);
else
m_cDll.fast_pmove(ChY,StepY);
}
else
{
if(m_bIP) m_cDll.fast_line2(ChX,StepX,ChY,StepY);
else m_cDll.fast_pmove2(ChX,StepX,ChY,StepY);
}
}
else
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
m_cDll.fast_vmove(ChX,DirX);
else
{
m_cDll.fast_vmove(ChY,DirY);
}
}
else
{
if(m_bIP) m_cDll.fast_line2(ChX,StepX,ChY,StepY);
else m_cDll.fast_vmove2(ChX,DirX,ChY,DirY);
}
}
}
}
else //圆弧运动
{
m_cDll.set_vector_conspeed(atoi(m_sArcVLowSpeed));
m_cDll.set_vector_profile(atof(m_sArcVLowSpeed),atof(m_sArcVHighSpeed),atof(m_sArcVAccel));
ChX=atoi(m_sArcXAxes); ChY=atoi(m_sArcYAxes);
CenX=atol(m_sArcXCen); CenY=atol(m_sArcYCen);
Angle=(float)atof(m_sArcR);
if(m_iArcConFast==IDC_RADIO_ARC_CON)
{
m_cDll.arc_center(ChX,ChY,CenX,CenY,Angle);
}
else
{
m_cDll.fast_arc_center(ChX,ChY,CenX,CenY,Angle);
}
}
}
void CDemo1Dlg::OnBtnSuddenstop()
{
// TODO: Add your control notification handler code here
m_cDll.sudden_stop(atoi(m_sXAxes));
m_cDll.sudden_stop(atoi(m_sYAxes));
}
void CDemo1Dlg::OnBtnDescendstop()
{
// TODO: Add your control notification handler code here
m_cDll.decel_stop(atoi(m_sXAxes));
m_cDll.decel_stop(atoi(m_sYAxes));
}
BOOL CDemo1Dlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
KillTimer(1);
return CDialog::DestroyWindow();
}
void CDemo1Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
long PosX,PosY;
CString sMsg;
int iErr[10],i;
m_cDll.get_abs_pos(atoi(m_sXAxes),&PosX); //获取X轴位置
m_cDll.get_abs_pos(atoi(m_sYAxes),&PosY); //获取Y轴位置
m_cG.LineToPos(PosX,PosY); //画线
for(i=1;i<11;i++)
iErr[i-1]=m_cDll.DmcGetError(i); //读取错误代码
sMsg.Format("Err: %d %d %d %d %d %d %d %d %d %d"
,iErr[0],iErr[1],iErr[2],iErr[3],iErr[4]
,iErr[5],iErr[6],iErr[7],iErr[8],iErr[9]);
GetDlgItem(IDC_STATIC_MSG)->SetWindowText(sMsg);
//显示错误代码
CDialog::OnTimer(nIDEvent);
}
void CDemo1Dlg::OnBtnReset()
{
// TODO: Add your control notification handler code here
m_cDll.reset_pos(atoi(m_sXAxes));
m_cDll.reset_pos(atoi(m_sYAxes));
}
void CDemo1Dlg::OnRadioArcCon()
{
// TODO: Add your control notification handler code here
m_iArcConFast=IDC_RADIO_ARC_CON;
SetRadioButton();
}
void CDemo1Dlg::OnRadioArcFast()
{
// TODO: Add your control notification handler code here
m_iArcConFast=IDC_RADIO_ARC_FAST;
SetRadioButton();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -