button5.cpp

来自「机械手IPC控制器伺服运动程序」· C++ 代码 · 共 373 行

CPP
373
字号
// Button5.cpp : implementation file
//

#include "stdafx.h"
#include "alfa.h"
#include "Button5.h"
#include "mccl.h"
#include "sys.h"
#include "main.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "manul.h"
/////////////////////////////////////////////////////////////////////////////
// CButton5
	WORD  wLimitSwitchStatus;
	int	marm_stop=0;
	int	sarm_stop=0;
	int mx_stop=0;
	int	sx_stop=0;
	int	my_stop=0;
	int	my_fwd=0;
	int	my_bck=0;
//	double msafepos;   // Z Pos.
//	double mytsafepos; // Y Take Pos.
//	double mypsafepos; // Y Put Pos.

CButton5::CButton5()
{
}

CButton5::~CButton5()
{
}


BEGIN_MESSAGE_MAP(CButton5, CButton)
	//{{AFX_MSG_MAP(CButton5)
	ON_WM_TIMER()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CButton5 message handlers

void CButton5::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	int TempAlarm;
	long m_mposx, m_mposz, m_msposy, m_sposx, m_sposz;
	double n_mposx, n_mposz, n_msposy, n_sposx, n_sposz;
	WORD wInput0;
    WORD OTStatus, OTStatus1;
	
    TempAlarm=0;
    MCC_GetRIOInputValue(&wInput0, RIO_SET1, RIO_PORT0, CARD_INDEX);
	MCC_GetENCValue(&m_mposx, 0, 0);
	MCC_GetENCValue(&m_mposz, 1, 0);
	MCC_GetENCValue(&m_msposy,2, 0);
	MCC_GetENCValue(&m_sposx, 3, 0);
	MCC_GetENCValue(&m_sposz, 4, 0);
    m_mposx=m_mposx*unit0a;
    m_mposz=m_mposz*unit1a;
    m_msposy=m_msposy*unit2a;
    m_sposx=m_sposx*unit3a;
    m_sposz=m_sposz*unit4a;
	n_mposx=(m_mposx/2500.0)*unit0;
	n_mposz=(m_mposz/2500.0)*unit1;
	n_msposy=(m_msposy/2500.0)*unit2;
	n_sposx=(m_sposx/2500.0)*unit3;
	n_sposz=(m_sposz/2500.0)*unit4;

	if((OUTPUT0 & 0x2000)>0 || (wInput0 & 0x0080)>0) TempAlarm=1;
    if(mx_stop==1) { // MX+
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 0, 0)==0) { // MX+, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && n_mposx>MXSOT_Plus) TempAlarm=1; // MX+, SOT
        }
		else TempAlarm=1;
	}
    else if(mx_stop==2) { // MX-
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 0, 0)==0) { // MX-, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && n_mposx<MXSOT_Minus) TempAlarm=1; // MX-, SOT
		}
		else TempAlarm=1;
	}
    if(marm_stop==1) { // MZ+
	    MCC_GetLimitSwitchStatus(&OTStatus1, 0, 1, 0);
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 1, 0)==0) { // MZ+, HOT
            if(OTStatus==1) TempAlarm=1;
		    else if(HomeOKflg==1 && (n_mposz>msafepos || (wInput0 & 0x0800)==0) &&                          
			        n_msposy>mytsafepos && n_msposy<mypsafepos) TempAlarm=1; // MZ+, SOT
            else if(HomeOKflg==1 && n_mposz>MZSOT_Plus)	TempAlarm=1;
			else if(HomeOKflg==1 && OTStatus1==0 && n_msposy<mytsafepos &&
				   (wInput0 & 0x0001)==0) TempAlarm=1;
		}
		else TempAlarm=1;
	}
    else if(marm_stop==2) { // MZ-
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 1, 0)==0) { // MZ-, HOT
            if(OTStatus==1) TempAlarm=1;
		    else if(HomeOKflg==1 && n_mposz<MZSOT_Minus) TempAlarm=1; // MZ-, SOT
		}
		else TempAlarm=1;
	}
	if(my_stop==1) {  // Y+
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 2, 0)==0) { // Y+, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && 
				    n_msposy>mytsafepos && n_msposy<((mypsafepos+mytsafepos)/2.0) &&
		           (n_mposz>msafepos     || n_sposz>msafepos ||
		           (wInput0 & 0x0800)==0 || (wInput0 & 0x1000)==0)) TempAlarm=1;
            else if(HomeOKflg==1 && n_msposy>YSOT_Plus)	TempAlarm=1;
        }
		else TempAlarm=1;
	}
	else if(my_stop==2) {  // Y-
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 2, 0)==0) { // Y-, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && 
				    n_msposy<mypsafepos && n_msposy>((mypsafepos+mytsafepos)/2.0) &&
		           (n_mposz>msafepos     || n_sposz>msafepos ||
		           (wInput0 & 0x0800)==0 || (wInput0 & 0x1000)==0)) TempAlarm=1;
            else if(HomeOKflg==1 && n_msposy<YSOT_Minus) TempAlarm=1;
        }
		else TempAlarm=1;

	}
	if(sx_stop==1) { // SX+
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 3, 0)==0) { // SX+, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && n_sposx>SXSOT_Plus) TempAlarm=1; // SX+, SOT
        }
		else TempAlarm=1;
	}
    else if(sx_stop==2) { // SX-
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 3, 0)==0) { // SX-, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && n_sposx<SXSOT_Minus) TempAlarm=1; // SX-, SOT
		}
		else TempAlarm=1;
	}
	if(sarm_stop==1) { // SZ+
        MCC_GetLimitSwitchStatus(&OTStatus1, 0, 4, 0);
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 4, 0)==0) { // SZ+, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && (n_sposz>msafepos || (wInput0 & 0x1000)==0) &&                          
				    n_msposy>mytsafepos && n_msposy<mypsafepos) TempAlarm=1; // SZ+, SOT
            else if(HomeOKflg==1 && n_sposz>SZSOT_Plus)	TempAlarm=1;
            else if(HomeOKflg==1 && OTStatus1==0 && n_msposy<mytsafepos &&
				   (wInput0 & 0x0001)==0) TempAlarm=1;
		}
		else TempAlarm=1;
	}
    else if(sarm_stop==2) { // SZ-
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 4, 0)==0) { // SZ-, HOT
            if(OTStatus==1) TempAlarm=1;
			else if(HomeOKflg==1 && n_sposz<SZSOT_Minus) TempAlarm=1; // SZ-, SOT
		}
		else TempAlarm=1;
	}

	if(TempAlarm>0) {
	    mx_stop=0;  marm_stop=0;  my_stop=0;  sx_stop=0;  sarm_stop=0; 
	    MCC_AbortMotion(0);
	    MCC_AbortMotion(1);
	    MCC_AbortMotion(2);

//        MCC_AbortMotionEx(MX_DecTime*((double)JogSpeed/100.0), GROUP_INDEX0);
//        MCC_AbortMotionEx(SX_DecTime*((double)JogSpeed/100.0), GROUP_INDEX1);
//        MCC_AbortMotionEx(Y_DecTime*((double)JogSpeed/300.0), GROUP_INDEX2);
	    KillTimer(12);	
    }
	CButton::OnTimer(nIDEvent);
}


void CButton5::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	long m_mposx, m_mposz, m_msposy, m_sposx, m_sposz;
	double n_mposx, n_mposz, n_msposy, n_sposx, n_sposz;
	WORD wInput0;
	WORD OTStatus, OTStatus1;

    MCC_GetRIOInputValue(&wInput0, RIO_SET1, RIO_PORT0, CARD_INDEX);
	MCC_GetENCValue(&m_mposx, 0, 0);
	MCC_GetENCValue(&m_mposz, 1, 0);
	MCC_GetENCValue(&m_msposy,2, 0);
	MCC_GetENCValue(&m_sposx, 3, 0);
	MCC_GetENCValue(&m_sposz, 4, 0);
    m_mposx=m_mposx*unit0a;
    m_mposz=m_mposz*unit1a;
    m_msposy=m_msposy*unit2a;
    m_sposx=m_sposx*unit3a;
    m_sposz=m_sposz*unit4a;
	n_mposx=(m_mposx/2500.0)*unit0;
	n_mposz=(m_mposz/2500.0)*unit1;
	n_msposy=(m_msposy/2500.0)*unit2;
	n_sposx=(m_sposx/2500.0)*unit3;
	n_sposz=(m_sposz/2500.0)*unit4;
	mx_stop=0;  marm_stop=0;  my_stop=0;  sx_stop=0;  sarm_stop=0; 

	CManul * wnd=(CManul *)GetParent();
	ClientToScreen(&point);
//	point.Offset(-105, -41);

//	if((OUTPUT0 & 0x2000)>0 || (wInput0 & 0x0100)==0) return;
	if((OUTPUT0 & 0x2000)>0 || (wInput0 & 0x0080)>0) return;
  	if(teatovflg!=0 || autoovflg!=0 || Side_Correct==1) return;
	if(wnd->rt1.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 0, 0)==0) { // MX+, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_mposx>MXSOT_Plus) ;     // MX+, SOT
			else {
		        MCC_JogConti(1, JogSpeed, 0, 0);  //  MX+
		        mx_stop=1;
			    SetTimer(12, 10, NULL);
            }
		}
	}
	else if(wnd->rt2.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 0, 0)==0) { // MX-, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_mposx<MXSOT_Minus) ;    // MX-, SOT
			else {
		        MCC_JogConti(-1, JogSpeed, 0, 0); //  MX-
		        mx_stop=2;		       
			    SetTimer(12, 10, NULL);
            }
		}
	}
	else if(wnd->rt3.PtInRect(point)) {
        MCC_GetLimitSwitchStatus(&OTStatus1, 0, 1, 0);
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 1, 0)==0) { // MZ+, HOT
            if(OTStatus==1) ;
			else if(OTStatus1==1) {
		        MCC_JogConti(1, JogSpeed, 2, 0); //  MZ+
		        marm_stop=1;
			    SetTimer(12, 10, NULL);
            }
			else if(HomeOKflg==1 && (n_mposz>msafepos || (wInput0 & 0x0800)==0) &&                          
				    n_msposy>mytsafepos && n_msposy<mypsafepos) ; // MZ+, SOT
            else if(HomeOKflg==1 && n_mposz>MZSOT_Plus)	;
			else if(HomeOKflg==1 && n_msposy<mytsafepos && (wInput0 & 0x0001)==0) ;
			else {
		        MCC_JogConti(1, JogSpeed, 2, 0); //  MZ+
		        marm_stop=1;
			    SetTimer(12, 10, NULL);
            }	
        }

 	}
	else if(wnd->rt4.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 1, 0)==0) { // MZ-, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_mposz<MZSOT_Minus) ;    // MZ-, SOT
            else {			
		        MCC_JogConti(-1, JogSpeed, 2, 0);  //  MZ-
			    marm_stop=2;
			    SetTimer(12, 10, NULL);
			}
        }
	}
	else if(wnd->rt5.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 2, 0)==0) { // Y+, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && 
				    n_msposy>mytsafepos && n_msposy<((mypsafepos+mytsafepos)/2.0) &&
		           (n_mposz>msafepos     || n_sposz>msafepos ||
		           (wInput0 & 0x0800)==0 || (wInput0 & 0x1000)==0)) ;
            else if(HomeOKflg==1 && n_msposy>YSOT_Plus)	;
			else {
		        MCC_JogConti(1, JogSpeed, 1, 2); //  Y+
		        my_stop=1;
			    SetTimer(12, 10, NULL);
            }	
        }		
	}
	else if(wnd->rt6.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 2, 0)==0) { // Y-, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && 
				    n_msposy<mypsafepos && n_msposy>((mypsafepos+mytsafepos)/2.0) &&
		           (n_mposz>msafepos     || n_sposz>msafepos ||
		           (wInput0 & 0x0800)==0 || (wInput0 & 0x1000)==0)) ;
            else if(HomeOKflg==1 && n_msposy<YSOT_Minus) ;
			else {
		        MCC_JogConti(-1, JogSpeed, 1, 2); //  Y+
		        my_stop=2;
			    SetTimer(12, 10, NULL);
            }	
        }
	}
	else if(wnd->rt7.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 3, 0)==0) { // SX+, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_sposx>SXSOT_Plus) ;     // SX+, SOT
			else {
		        MCC_JogConti(1, JogSpeed, 0, 1);  //  SX+
		        sx_stop=1;
			    SetTimer(12, 10, NULL);
            }
		}
	}
	else if(wnd->rt8.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 3, 0)==0) { // SX-, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_sposx<SXSOT_Minus) ;    // SX-, SOT
			else {
		        MCC_JogConti(-1, JogSpeed, 0, 1);  //  SX-
		        sx_stop=2;
			    SetTimer(12, 10, NULL);
            }
		}
	}
	else if(wnd->rt9.PtInRect(point))	{
       MCC_GetLimitSwitchStatus(&OTStatus1, 0, 4, 0);
       if(MCC_GetLimitSwitchStatus(&OTStatus, 1, 4, 0)==0) { // SZ+, HOT
            if(OTStatus==1) ;
            else if(OTStatus1==1) {
		        MCC_JogConti(1, JogSpeed, 2, 1); //  SZ+
		        sarm_stop=1;
			    SetTimer(12, 10, NULL);
            }
			else if(HomeOKflg==1 && (n_sposz>msafepos || (wInput0 & 0x1000)==0) &&                          
				    n_msposy>mytsafepos && n_msposy<mypsafepos) ; // SZ+, SOT
            else if(HomeOKflg==1 && n_sposz>SZSOT_Plus)	;
			else if(HomeOKflg==1 && n_msposy<mytsafepos && (wInput0 & 0x0001)==0) ;
			else {
		        MCC_JogConti(1, JogSpeed, 2, 1); //  SZ+
		        sarm_stop=1;
			    SetTimer(12, 10, NULL);
            }	
        }	
	}
	else if(wnd->rt10.PtInRect(point)) {
        if(MCC_GetLimitSwitchStatus(&OTStatus, 0, 4, 0)==0) { // SZ-, HOT
            if(OTStatus==1) ;
			else if(HomeOKflg==1 && n_sposz<SZSOT_Minus) ;    // SZ-, SOT
            else {			
		        MCC_JogConti(-1, JogSpeed, 2, 1);  //  SZ-
			    sarm_stop=2;
			    SetTimer(12, 10, NULL);
			}
		}
	}

	CButton::OnLButtonDown(nFlags, point);
}


void CButton5::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	MCC_AbortMotion(0);
	MCC_AbortMotion(1);
	MCC_AbortMotion(2);

 //   MCC_AbortMotionEx(MX_DecTime*((double)JogSpeed/100.0), GROUP_INDEX0);
 //   MCC_AbortMotionEx(SX_DecTime*((double)JogSpeed/100.0), GROUP_INDEX1);
//    MCC_AbortMotionEx(Y_DecTime*((double)JogSpeed/300.0), GROUP_INDEX2);
//MCC_AbortMotionEx(Y_DecTime*((double)JogSpeed/300.0), GROUP_INDEX2);
	KillTimer(12);	

	CButton::OnLButtonUp(nFlags, point);
}

⌨️ 快捷键说明

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