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 + -
显示快捷键?