⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movetest.cpp

📁 演示vc与专业控制器的连接
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	m_dbXHighSpeed=atof(m_sXHighSpeed);
	m_dbXLowSpeed=atof(m_sXLowSpeed);
	m_dbXStep=atof(m_sXStep);
	m_dbYaccel=atof(m_sYaccel);
	m_nYAxisNum=atoi(m_sYAxisNum);
	m_dbYHighSpeed=atof(m_sYHighSpeed);
	m_dbYLowSpeed=atof(m_sYLowSpeed);
	m_dbYStep=atof(m_sYStep);
	m_dbZaccel=atof(m_sZaccel);
	m_nZAxisNum=atoi(m_sZAxisNum);
	m_dbZHighSpeed=atof(m_sZHighSpeed);
	m_dbZLowSpeed=atof(m_sZLowSpeed);
	m_dbZStep=atof(m_sZStep);
	//直线插补运动参数转换
	m_nLAaxisNum=atoi(m_sLAaxisNum);
	m_dbLaccel=atof(m_sLaccel);
	m_dbLAstep=atof(m_sLAstep);
	m_dbLHighSpeed=atof(m_sLHighSpeed);
	m_dbLLowSpeed=atof(m_sLLowSpeed);
	m_nLXaxisNum=atoi(m_sLXaxisNum);
	m_dbLXstep=atof(m_sLXstep);
	m_nLYaxisNum=atof(m_sLYaxisNum);
	m_dbLYstep=atof(m_sLYstep);
	m_nLZaxisNum=atof(m_sLZaxisNum);
	m_dbLZstep=atof(m_sLZstep);
	//圆弧插补运动参数转换
	m_dbCircleAccel=atof(m_sCircleAccel);
	m_dbCircleHighSpeed=atof(m_sCircleHighSpeed);
	m_dbCircleLowSpeed=atof(m_sCircleLowSpeed);
	m_dbCircleAngle=atof(m_sCircleAngle);
	m_dbCircleJingDu=atof(m_sCircleJingDu);
	m_dbCirclebili=atof(m_sCirclebili);
	m_dbCircleXorign=atof(m_sCircleXorign);
	m_dbCircleYorign=atof(m_sCircleYorign);
	m_nCircleXAxis=atoi(m_sCircleXAxis);
	m_nCircleYAxis=atoi(m_sCircleYAxis);
}
//////////////////////////////////////////////////////////////////////////
//函数功能:直线运动形式为点位运动
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnRadPmove() 
{
	// TODO: Add your control notification handler code here
	m_nLineMoveStyle=0;
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:直线运动形式为连续运动
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnRadVmove() 
{
	// TODO: Add your control notification handler code here
	m_nLineMoveStyle=1;
}
//////////////////////////////////////////////////////////////////////////
//函数功能:实现紧急停止功能
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnSuddenstop() 
{
	// TODO: Add your control notification handler code here
	int i;
	for(i=0;i<4;i++)
	{
		sudden_stop(i+1);
	}
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:实现复位功能
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnReset() 
{
	// TODO: Add your control notification handler code here
	int i;
	for(i=0;i<4;i++)
	{
		reset_pos(i+1);
	}
	
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:实现缓停功能只对快速运动有效
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnDecelstop() 
{
	// TODO: Add your control notification handler code here
	int i;
	for(i=0;i<4;i++)
	{
		decel_stop(i+1);
	}
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:实现暂停功能
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnButtonPause() 
{
	// TODO: Add your control notification handler code here
	move_pause(1);
	move_pause(2);
	move_pause(3);
	move_pause(4);
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:实现暂停功能
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnButtonResume() 
{
	// TODO: Add your control notification handler code here
	move_resume(1);
	move_resume(2);
	move_resume(3);
	move_resume(4);
	
}
//////////////////////////////////////////////////////////////////////////
//函数功能:刷新运动界面,动态显示运动轴的参数信息
//////////////////////////////////////////////////////////////////////////
void CMoveTest::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	get_abs_pos(1,&m_dbXPos);
	get_abs_pos(2,&m_dbYPos);
	get_abs_pos(3,&m_dbZPos);
	get_abs_pos(4,&m_dbAPos);
	m_sXPos.Format("%f",m_dbXPos);
	m_sYPos.Format("%f",m_dbYPos);
	m_sZPos.Format("%f",m_dbZPos);
	m_sAPos.Format("%f",m_dbAPos);
	GetDlgItem(IDC_EDIT_XPOS)->SetWindowText(m_sXPos);
	GetDlgItem(IDC_EDIT_YPOS)->SetWindowText(m_sYPos);
	GetDlgItem(IDC_EDIT_ZPOS)->SetWindowText(m_sZPos);
	GetDlgItem(IDC_EDIT_APOS)->SetWindowText(m_sAPos);
	
	m_dbXSpeed=get_rate(1);
	m_dbYSpeed=get_rate(2);
	m_dbZSpeed=get_rate(3);
	m_dbASpeed=get_rate(4);
	m_sXSpeed.Format("%f",m_dbXSpeed);
	m_sYSpeed.Format("%f",m_dbYSpeed);
	m_sZSpeed.Format("%f",m_dbZSpeed);
	m_sASpeed.Format("%f",m_dbASpeed);
	GetDlgItem(IDC_EDIT_XSPEED)->SetWindowText(m_sXSpeed);
	GetDlgItem(IDC_EDIT_YSPEED)->SetWindowText(m_sYSpeed);
	GetDlgItem(IDC_EDIT_ZSPEED)->SetWindowText(m_sZSpeed);
	GetDlgItem(IDC_EDIT_ASPEED)->SetWindowText(m_sASpeed);

	get_encoder(1,&m_lXBack);
	get_encoder(2,&m_lYBack);
	get_encoder(3,&m_lZBack);
	get_encoder(4,&m_lABack);
	m_sXBack.Format("%d",m_lXBack);
	m_sYBack.Format("%d",m_lYBack);
	m_sZBack.Format("%d",m_lZBack);
	m_sABack.Format("%d",m_lABack);
	GetDlgItem(IDC_EDIT_XBACK)->SetWindowText(m_sXBack);
	GetDlgItem(IDC_EDIT_YBACK)->SetWindowText(m_sYBack);
	GetDlgItem(IDC_EDIT_ZBACK)->SetWindowText(m_sZBack);
	GetDlgItem(IDC_EDIT_ABACK)->SetWindowText(m_sABack);

	CFormView::OnTimer(nIDEvent);
}

void CMoveTest::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	//CMPC2810DemoDoc *pDoc=GetDocument();
	//初始化运动参数
	InitParam();
	CreateTab();
	SetTabContentStatus(0);

	//////////////////////////////////////////////////////////////////////////
	//启动定时器
	SetTimer(2,50,NULL);
	m_pParentWnd = (CMainFrame*)AfxGetMainWnd();
	m_pDoc = (CMPC2810DemoDoc *)(m_pParentWnd->GetActiveDocument());
	
	m_nXAxisNum = m_pDoc->m_nXAxisNum;
	m_dbXLowSpeed = m_pDoc->m_dbXLowSpeed;
	m_dbXStep = m_pDoc->m_dbXStep;
	m_dbXHighSpeed = m_pDoc->m_dbXHighSpeed;
	m_dbXaccel = m_pDoc->m_dbXaccel;
	
	m_nYAxisNum = m_pDoc->m_nYAxisNum;
	m_dbYLowSpeed = m_pDoc->m_dbYLowSpeed;
	m_dbYStep = m_pDoc->m_dbYStep;
	m_dbYHighSpeed = m_pDoc->m_dbYHighSpeed;
	m_dbYaccel = m_pDoc->m_dbYaccel;
	
	m_nZAxisNum = m_pDoc->m_nZAxisNum;
	m_dbZLowSpeed = m_pDoc->m_dbZLowSpeed;
	m_dbZStep = m_pDoc->m_dbZStep;
	m_dbZHighSpeed = m_pDoc->m_dbZHighSpeed;
	m_dbZaccel = m_pDoc->m_dbZaccel;
	
	m_nAAxisNum = m_pDoc->m_nAAxisNum;
	m_dbALowSpeed = m_pDoc->m_dbALowSpeed;
	m_dbAStep = m_pDoc->m_dbAStep;
	m_dbAHighSpeed = m_pDoc->m_dbAHighSpeed;
	m_dbAaccel = m_pDoc->m_dbAaccel;
	m_nLXaxisNum = m_pDoc->m_nLXaxisNum;
	m_dbLXstep = m_pDoc->m_dbLXstep;
	m_nLYaxisNum = m_pDoc->m_nLYaxisNum;
	m_dbLYstep = m_pDoc->m_dbLYstep;
	m_nLZaxisNum = m_pDoc->m_nLZaxisNum;
	m_dbLZstep = m_pDoc->m_dbLZstep;
	m_nLAaxisNum = m_pDoc->m_nLAaxisNum;
	m_dbLAstep = m_pDoc->m_dbLAstep;
	m_dbLLowSpeed = m_pDoc->m_dbLLowSpeed;
	m_dbLHighSpeed = m_pDoc->m_dbLHighSpeed;
	m_dbLaccel = m_pDoc->m_dbLaccel;

	m_dbCircleAngle = m_pDoc->m_dbCircleAngle;
	m_dbCircleJingDu = m_pDoc->m_dbCircleJingDu;
	m_dbCirclebili = m_pDoc->m_dbCirclebili;
	m_dbCircleXorign = m_pDoc->m_dbCircleXorign;
	m_dbCircleYorign = m_pDoc->m_dbCircleYorign;
	m_nCircleXAxis = m_pDoc->m_nCircleXAxis;
	m_nCircleYAxis = m_pDoc->m_nCircleYAxis;
	m_dbCircleLowSpeed = m_pDoc->m_dbCircleLowSpeed;
	m_dbCircleHighSpeed = m_pDoc->m_dbCircleHighSpeed;
	m_dbCircleAccel = m_pDoc->m_dbCircleAccel;

	((CButton*)GetDlgItem(IDC_RAD_CONSPEED))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_RAD_PMOVE))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_RAD_ONEAXIS))->SetCheck(1);

	((CButton*)GetDlgItem(IDC_RAD_LCONSPEED))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_RAD_LTWONUM))->SetCheck(1);

	((CButton*)GetDlgItem(IDC_RAD_CLCONSPEED))->SetCheck(1);
	m_sXAxisNum.Format("%d",m_nXAxisNum);
	m_sXLowSpeed.Format("%0.1lf", m_dbXLowSpeed);
	m_sXStep.Format("%0.1f",m_dbXStep);
	m_sXHighSpeed.Format("%0.1f",m_dbXHighSpeed);
	m_sXaccel.Format("%0.1f",m_dbXaccel);

	m_sYAxisNum.Format("%d",m_nYAxisNum);
	m_sYLowSpeed.Format("%0.1lf", m_dbYLowSpeed);
	m_sYStep.Format("%0.1f",m_dbYStep);
	m_sYHighSpeed.Format("%0.1f",m_dbYHighSpeed);
	m_sYaccel.Format("%0.1f",m_dbYaccel);

	m_sZAxisNum.Format("%d",m_nZAxisNum);
	m_sZLowSpeed.Format("%0.1lf", m_dbZLowSpeed);
	m_sZStep.Format("%0.1f",m_dbZStep);
	m_sZHighSpeed.Format("%0.1f",m_dbZHighSpeed);
	m_sZaccel.Format("%0.1f",m_dbZaccel);

	m_sAAxisNum.Format("%d",m_nAAxisNum);
	m_sALowSpeed.Format("%0.1lf", m_dbXLowSpeed);
	m_sAStep.Format("%0.1f",m_dbXStep);
	m_sAHighSpeed.Format("%0.1f",m_dbXHighSpeed);
	m_sAAccel.Format("%0.1f",m_dbAaccel);

	m_sLLowSpeed.Format("%0.1f",m_dbLLowSpeed);
	m_sLHighSpeed.Format("%0.1f",m_dbLHighSpeed);
	m_sLaccel.Format("%0.1f",m_dbLaccel);
	
	m_sLXaxisNum.Format("%d",m_nLXaxisNum);
	m_sLXstep.Format("%0.1f",m_dbLXstep);
	m_sLYaxisNum.Format("%d",m_nLYaxisNum);
	m_sLYstep.Format("%0.1f",m_dbLYstep);
	m_sLZaxisNum.Format("%d",m_nLZaxisNum);
	m_sLZstep.Format("%0.1f",m_dbLZstep);
	m_sLAaxisNum.Format("%d",m_nLAaxisNum);
	m_sLAstep.Format("%0.1f",m_dbLAstep);

	m_sCircleLowSpeed.Format("%0.1f",m_dbCircleLowSpeed);
	m_sCircleHighSpeed.Format("%0.1f",m_dbCircleHighSpeed);
	m_sCircleAccel.Format("%0.1f",m_dbCircleAccel);
	m_sCircleAngle.Format("%0.1f",m_dbCircleAngle);
	m_sCircleJingDu.Format("%0.1f",m_dbCircleJingDu);
	m_sCirclebili.Format("%0.1f",m_dbCirclebili);
	m_sCircleXorign.Format("%0.1f",m_dbCircleXorign);
	m_sCircleYorign.Format("%0.1f",m_dbCircleYorign);
	m_sCircleXAxis.Format("%d",m_nCircleXAxis);
	m_sCircleYAxis.Format("%d",m_nCircleYAxis);
	
	GetDlgItem(IDC_EDIT_XAXIS)->SetWindowText(m_sXAxisNum);
	GetDlgItem(IDC_EDIT_XLOWSPD)->SetWindowText(m_sXLowSpeed);
	GetDlgItem(IDC_EDIT_XHIGHSPD)->SetWindowText(m_sXHighSpeed);
	GetDlgItem(IDC_EDIT_XSTEP)->SetWindowText(m_sXStep);
	GetDlgItem(IDC_EDIT_XACCEL)->SetWindowText(m_sXaccel);

	GetDlgItem(IDC_EDIT_YAXIS)->SetWindowText(m_sYAxisNum);
	GetDlgItem(IDC_EDIT_YLOWSPD)->SetWindowText(m_sYLowSpeed);
	GetDlgItem(IDC_EDIT_YHIGHSPD)->SetWindowText(m_sYHighSpeed);
	GetDlgItem(IDC_EDIT_YSTEP)->SetWindowText(m_sYStep);
	GetDlgItem(IDC_EDIT_YACCEL)->SetWindowText(m_sYaccel);

	GetDlgItem(IDC_EDIT_ZAXIS)->SetWindowText(m_sZAxisNum);
	GetDlgItem(IDC_EDIT_ZLOWSPD)->SetWindowText(m_sZLowSpeed);
	GetDlgItem(IDC_EDIT_ZHIGHSPD)->SetWindowText(m_sZHighSpeed);
	GetDlgItem(IDC_EDIT_ZSTEP)->SetWindowText(m_sZStep);
	GetDlgItem(IDC_EDIT_ZACCEL)->SetWindowText(m_sZaccel);

	GetDlgItem(IDC_EDIT_AAXIS)->SetWindowText(m_sAAxisNum);
	GetDlgItem(IDC_EDIT_ALOWSPD)->SetWindowText(m_sALowSpeed);
	GetDlgItem(IDC_EDIT_AHIGHSPD)->SetWindowText(m_sAHighSpeed);
	GetDlgItem(IDC_EDIT_ASTEP)->SetWindowText(m_sAStep);
	GetDlgItem(IDC_EDIT_AACCEL)->SetWindowText(m_sAAccel);

	GetDlgItem(IDC_EDIT_LLOWSPD)->SetWindowText(m_sLLowSpeed);
	GetDlgItem(IDC_EDIT_LHIGHSPD)->SetWindowText(m_sLHighSpeed);
	GetDlgItem(IDC_EDIT_LACCEL)->SetWindowText(m_sLaccel);
	GetDlgItem(IDC_EDIT_LXAXIS)->SetWindowText(m_sLXaxisNum);
	GetDlgItem(IDC_EDIT_LYAXIS)->SetWindowText(m_sLYaxisNum);
	GetDlgItem(IDC_EDIT_LZAXIS)->SetWindowText(m_sLZaxisNum);
	GetDlgItem(IDC_EDIT_LAAXIS)->SetWindowText(m_sLAaxisNum);
	GetDlgItem(IDC_EDIT_LXSTEP)->SetWindowText(m_sLXstep);
	GetDlgItem(IDC_EDIT_LYSTEP)->SetWindowText(m_sLYstep);
	GetDlgItem(IDC_EDIT_LZSTEP)->SetWindowText(m_sLZstep);
	GetDlgItem(IDC_EDIT_LASTEP)->SetWindowText(m_sLAstep);
	GetDlgItem(IDC_EDIT_CLLOWSPD)->SetWindowText(m_sCircleLowSpeed);
	GetDlgItem(IDC_EDIT_CLHIGHSPD)->SetWindowText(m_sCircleHighSpeed);
	GetDlgItem(IDC_EDIT_CLACCEL)->SetWindowText(m_sCircleAccel);
	GetDlgItem(IDC_EDIT_CXAXIS)->SetWindowText(m_sCircleXAxis);
	GetDlgItem(IDC_EDIT_CYAXIS)->SetWindowText(m_sCircleYAxis);
	GetDlgItem(IDC_EDIT_CLXORIGN)->SetWindowText(m_sCircleXorign);
	GetDlgItem(IDC_EDIT_CLYORIGN)->SetWindowText(m_sCircleYorign);
	GetDlgItem(IDC_EDIT_CLANGLE)->SetWindowText(m_sCircleAngle);
	GetDlgItem(IDC_EDIT_CLRANGE)->SetWindowText(m_sCircleJingDu);
	GetDlgItem(IDC_EDIT_CLSCAN)->SetWindowText(m_sCirclebili);
	UpdateData(FALSE);
	
}

BOOL CMoveTest::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
//	CString strSpeed;
	UpdateData(TRUE);
//	strSpeed= m_sXLowSpeed;
//	m_dbXLowSpeed=atoi(m_sXLowSpeed);
	ChangeData();
	m_pDoc->m_nXAxisNum = m_nXAxisNum;
	m_pDoc->m_dbXLowSpeed=m_dbXLowSpeed;
	m_pDoc->m_dbXStep = m_dbXStep;
	m_pDoc->m_dbXHighSpeed = m_dbXHighSpeed;
	m_pDoc->m_dbXaccel = m_dbXaccel ;
	
	m_pDoc->m_nYAxisNum = m_nYAxisNum;
	m_pDoc->m_dbYLowSpeed = m_dbYLowSpeed;
	m_pDoc->m_dbYStep=m_dbYStep;
	m_pDoc->m_dbYHighSpeed = m_dbYHighSpeed;
	m_pDoc->m_dbYaccel = m_dbYaccel;
	
	m_pDoc->m_nZAxisNum = m_nZAxisNum;
	m_pDoc->m_dbZLowSpeed = m_dbZLowSpeed;
	m_pDoc->m_dbZStep = m_dbZStep;
	m_pDoc->m_dbZHighSpeed = m_dbZHighSpeed;
	m_pDoc->m_dbZaccel = m_dbZaccel;
	
	m_pDoc->m_nAAxisNum = m_nAAxisNum;
	m_pDoc->m_dbALowSpeed = m_dbALowSpeed;
	m_pDoc->m_dbAStep = m_dbAStep;
	m_pDoc->m_dbAHighSpeed = m_dbAHighSpeed;
	m_pDoc->m_dbAaccel = m_dbAaccel;
	
	m_pDoc->m_nLXaxisNum = m_nLXaxisNum;
	m_pDoc->m_dbLXstep = m_dbLXstep;
	m_pDoc->m_nLYaxisNum = m_nLYaxisNum;
	m_pDoc->m_dbLYstep = m_dbLYstep;
	m_pDoc->m_nLZaxisNum = m_nLZaxisNum;
	m_pDoc->m_dbLZstep = m_dbLZstep;
	m_pDoc->m_nLAaxisNum = m_nLAaxisNum;
	m_pDoc->m_dbLAstep = m_dbLAstep;
	m_pDoc->m_dbLLowSpeed = m_dbLLowSpeed;
	m_pDoc->m_dbLHighSpeed = m_dbLHighSpeed;
	m_pDoc->m_dbLaccel = m_dbLaccel;

	m_pDoc->m_dbCircleAngle = m_dbCircleAngle;
	m_pDoc->m_dbCircleJingDu = m_dbCircleJingDu;
	m_pDoc->m_dbCirclebili = m_dbCirclebili;
	m_pDoc->m_dbCircleXorign = m_dbCircleXorign;
	m_pDoc->m_dbCircleYorign = m_dbCircleYorign;
	m_pDoc->m_nCircleXAxis = m_nCircleXAxis;
	m_pDoc->m_nCircleYAxis = m_nCircleYAxis;
	m_pDoc->m_dbCircleLowSpeed = m_dbCircleLowSpeed;
	m_pDoc->m_dbCircleHighSpeed = m_dbCircleHighSpeed;
	m_pDoc->m_dbCircleAccel= m_dbCircleAccel;
//	m_sXLowSpeed=strSpeed;
	
//	UpdateData(FALSE);

	return CFormView::DestroyWindow();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -