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

📄 basictestdlg.cpp

📁 是一个运动控制器的实验平台软件,主要通过编程实现伺服/步进电机的不同控制模式.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	if(inputdata&0x400)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK11);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
	else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK11);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}
	if(inputdata&0x800)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK12);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
	else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK12);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}
	if(inputdata&0x1000)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK13);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
	else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK13);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}
	if(inputdata&0x2000)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK14);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
	else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK14);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}
	if(inputdata&0x4000)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK15);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
    else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK15);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}
	if(inputdata&0x8000)
	{
		CButton *button=(CButton*)GetDlgItem(IDC_CHECK16);
		button->EnableWindow(TRUE);
	    button->SetCheck(1);
	}
	else
	{
		 CButton *button=(CButton*)GetDlgItem(IDC_CHECK16);
		button->EnableWindow(FALSE);
	    button->SetCheck(0);
	}

	if(m_bit1)   //设置通用数字量输出状态
    {
		outputdata=outputdata|0x1;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFFE;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit2)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x2;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFFD;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit3)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x4;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFFB;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit4)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x8;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFF7;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit5)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x10;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFEF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit6)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x20;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFDF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit7)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x40;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFFBF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit8)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x80;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFF7F;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit9)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x100;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFEFF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit10)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x200;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFDFF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit11)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x400;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xFBFF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit12)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x800;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xF7FF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit13)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x1000;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xEFFF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit14)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x2000;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xDFEF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit15)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x4000;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0xBFEF;
		rtn=GT_ExOpt(outputdata);
	}
	if(m_bit16)   //设置通用数字量输出状态
	{
		outputdata=outputdata|0x8000;
		rtn=GT_ExOpt(outputdata);
	}
    else
	{
		outputdata=outputdata&0x7FEF;
		rtn=GT_ExOpt(outputdata);
	}
	int home[4]={IDC_AXIS1_HOME_STATIC,IDC_AXIS2_HOME_STATIC,IDC_AXIS3_HOME_STATIC,
		          IDC_AXIS4_HOME_STATIC};
    int poslimit[4]={IDC_STATIC_POSLIMIT1,IDC_STATIC_POSLIMIT2,IDC_STATIC_POSLIMIT3,
		              IDC_STATIC_POSLIMIT4};
	int neglimit[4]={IDC_STATIC_NEGLIMIT1,IDC_STATIC_NEGLIMIT2,IDC_STATIC_NEGLIMIT3,
		              IDC_STATIC_NEGLIMIT4};
	int erro[4]={IDC_STATIC_ERRO1,IDC_STATIC_ERRO2,IDC_STATIC_ERRO3,
		              IDC_STATIC_ERRO4};
	//unsigned short status;
	for(int axis=0;axis<4;axis++)
	{
	 rtn=GT_Axis(axis+1);//零位信号捕获
//	rtn=GT_ClrSts();
//	rtn=GT_CaptHome();
	 rtn=GT_GetSts(&status);
	 if(status&0x8)
	 {
		pstatic=(CStatic*)GetDlgItem(home[axis]);//
	    pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2));
	 }
	 else
	 {
         pstatic=(CStatic*)GetDlgItem(home[axis]);//
	     pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
	 }
	
	 if(status&0x2)//伺服报警信号
    	{
		pstatic=(CStatic*)GetDlgItem(erro[axis]);//
	    pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3));
	 }
	 else
	 {
         pstatic=(CStatic*)GetDlgItem(erro[axis]);//
	     pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
	 }

     if(status&0x20)//正限位信号
	 {
		pstatic=(CStatic*)GetDlgItem(poslimit[axis]);//
	    pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3));
	 }
	 else
	 {
         pstatic=(CStatic*)GetDlgItem(poslimit[axis]);//
	     pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
	 }

	 if(status&0x40)//负限位信号
     {
		pstatic=(CStatic*)GetDlgItem(neglimit[axis]);//
	    pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3));
	 }
   	else
	{
         pstatic=(CStatic*)GetDlgItem(neglimit[axis]);//
	     pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
	}
	rtn=GT_ClrSts();
	}
	CDialog::OnTimer(nIDEvent);
}

BEGIN_EVENTSINK_MAP(CBASICTESTDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CBASICTESTDlg)
	
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CBASICTESTDlg::OnClickOpencButton() 
{
	// TODO: Add your control notification handler code here
		short rtn;
	rtn=GT_Open();
//	rtn=GT_Reset();
	
    CButton *Bbutton=(CButton*)GetDlgItem(IDC_CLOSE_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_OPENC_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_ONSERVOC_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_OFFSERVO_BUTTON);
	Bbutton->EnableWindow(FALSE);
//	Bbutton=(CButton*)GetDlgItem(IDC_MODE_BUTTON);
//	Bbutton->EnableWindow(FALSE);
}

void CBASICTESTDlg::OnClickOnservocButton() 
{
	// TODO: Add your control notification handler code here
	short rtn;
	//CDRAW dlg;
	CButton *Bbutton=(CButton*)GetDlgItem(IDC_CLOSE_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_OPENC_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_ONSERVOC_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_OFFSERVO_BUTTON);
	Bbutton->EnableWindow(TRUE);
//	Bbutton=(CButton*)GetDlgItem(IDC_MODE_BUTTON);
//	Bbutton->EnableWindow(TRUE);
//	dlg.DoModal();
	UpdateData(TRUE);
	rtn=GT_LmtSns(0xff);
/*	for(int i=1;i<5;i++)
	{
      rtn=GT_Axis(1);
	  rtn=GT_AxisOn();
	  rtn=GT_ClrSts();
	}*/
	switch(m_axis)/////////////////////////////轴开启
	{
	  case 0:
		  rtn=GT_Axis(1);
		  rtn=GT_AxisOn();
		  rtn=GT_ClrSts();
		  break;
	  case 1:
		  rtn=GT_Axis(2);
	       rtn=GT_AxisOn();
		   rtn=GT_ClrSts();
		  break;
	  case 2:
		  rtn=GT_Axis(3);
		  rtn=GT_AxisOn();
		  rtn=GT_ClrSts();
		  break;
      case 3:
		  rtn=GT_Axis(4);
		  rtn=GT_AxisOn();
		  rtn=GT_ClrSts();
		  break;
	}
	onflag=1;
	CStatic* pstatic=(CStatic*)GetDlgItem(IDC_AXIS1_ON_STATIC);//初始轴1开启
	pstatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2));
//	CStatic* perro=(CStatic*)GetDlgItem(IDC_STATIC_ERRO1);
//	perro->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3));
	int m_timer=SetTimer(1,200,NULL);
	ASSERT(m_timer!=0);
}


void CBASICTESTDlg::OnClickCloseButton() 
{
	// TODO: Add your control notification handler code here
	short rtn;
	rtn=GT_Close();/////////关闭控制器
	CButton *Bbutton=(CButton*)GetDlgItem(IDC_CLOSE_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_OPENC_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_ONSERVOC_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_OFFSERVO_BUTTON);
	Bbutton->EnableWindow(FALSE);
//	Bbutton=(CButton*)GetDlgItem(IDC_MODE_BUTTON);
//	Bbutton->EnableWindow(FALSE);
}

void CBASICTESTDlg::OnClickOffservoButton() 
{
	// TODO: Add your control notification handler code here
	short rtn;
	switch(m_axis)//////////////////////伺服断电
	{
	  case 0:
		  rtn=GT_Axis(1);
		  rtn=GT_AxisOff();
		  break;
	  case 1:
		  rtn=GT_Axis(2);
	       rtn=GT_AxisOff();
		  break;
	  case 2:
		  rtn=GT_Axis(3);
		  rtn=GT_AxisOff();
		  break;
      case 3:
		  rtn=GT_Axis(4);
		  rtn=GT_AxisOff();
		  break;
	}
	onflag=0;
	CButton *Bbutton=(CButton*)GetDlgItem(IDC_CLOSE_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_OPENC_BUTTON);
	Bbutton->EnableWindow(FALSE);
	Bbutton=(CButton*)GetDlgItem(IDC_ONSERVOC_BUTTON);
	Bbutton->EnableWindow(TRUE);
	Bbutton=(CButton*)GetDlgItem(IDC_OFFSERVO_BUTTON);
	Bbutton->EnableWindow(FALSE);
//	Bbutton=(CButton*)GetDlgItem(IDC_MODE_BUTTON);
//	Bbutton->EnableWindow(FALSE);
}

void CBASICTESTDlg::OnClickRun() 
{
	// TODO: Add your control notification handler code here
	short rtn;
    UpdateData(TRUE);///////////////////////////启动相应得轴运行
	rtn=GT_Axis(m_axis+1);
	rtn=GT_ClrSts();
//	rtn=GT_AxisOn();
	if(m_mode==1)//////S_曲线模式运行
	{
     rtn=GT_PrflS();
	 rtn=GT_SetJerk(m_jerk);
	 rtn=GT_SetMAcc(m_macc);
     rtn=GT_SetVel(m_vel);
	 rtn=GT_SetPos(m_pos);
	}
	else
	{
	rtn=GT_PrflT();////T_曲线模式运行
	rtn=GT_SetAcc(m_acc);
	rtn=GT_SetPos(m_pos);
	rtn=GT_SetVel(m_mvel);
	}
	rtn=GT_Update();
}

void CBASICTESTDlg::OnClickCommandStop() 
{
	// TODO: Add your control notification handler code here
	//CDRAW dlg;
	//dlg.DoModal();
	short rtn;
	rtn=GT_Axis(m_axis+1);/////////平滑停止轴的运动
	rtn=GT_SmthStp();
	rtn=GT_Update();
}

void CBASICTESTDlg::OnModeRadio() 
{
	// TODO: Add your control notification handler code here
	
		m_cjerk.EnableWindow(TRUE);//S_曲线模式设置界面输入生效
		m_cmacc.EnableWindow(TRUE);
		m_cvel.EnableWindow(TRUE);
		m_cpos.EnableWindow(TRUE);
		m_cacc.EnableWindow(FALSE);
		m_cmvel.EnableWindow(FALSE);
		m_mode=1;
}

void CBASICTESTDlg::OnRadio5() 
{
	// TODO: Add your control notification handler code here
	    m_cjerk.EnableWindow(FALSE);/////T_曲线模式设置界面输入生效
		m_cmacc.EnableWindow(FALSE);
		m_cvel.EnableWindow(FALSE);
		m_cpos.EnableWindow(TRUE);
		m_cacc.EnableWindow(TRUE);
		m_cmvel.EnableWindow(TRUE);
		m_mode=2;
}

void CBASICTESTDlg::OnClickEstopCommand() 
{
	// TODO: Add your control notification handler code here
	short rtn;
	rtn=GT_Axis(m_axis+1);///////立即停止当前轴的运动
	rtn=GT_AbptStp();
}

void CBASICTESTDlg::OnClickClearButton() 
{
	// TODO: Add your control notification handler code here
	m_jerk=0;///将界面上参数设置置零
    m_macc=0;
    m_vel=0;
	m_pos=0;
	m_acc=0;
	m_mvel=0;
	UpdateData(FALSE);
}

void CBASICTESTDlg::OnOpencButton() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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