📄 testdlg.cpp
字号:
distance[0]=m_fObjX; distance[1]=m_fObjZ;distance[2]=m_fObjW;
}
if (axis[1] && axis[2] && axis[3])
{
homeaxis[0]=2; homeaxis[1]=3; homeaxis[2]=4;
distance[0]=m_fObjY; distance[1]=m_fObjZ;distance[2]=m_fObjW;
}
result=work_move3(homeaxis[0],distance[0],homeaxis[1],distance[1],homeaxis[2],distance[2],ifRel?0:1,0,ActionFunction);
}
else if (axis[0] && axis[1] && axis[2] && axis[3])
{
result=work_move4(m_fObjX,m_fObjY,m_fObjZ,m_fObjW,ifRel?0:1,0,ActionFunction);
}
else
{
MessageBox("请选定轴!","提示");
g_WorkStatus=NORUN;
return;
}
if (result==-1)
MessageBox("有禁止轴参与运动!","错误",MB_OK||MB_ICONSTOP);
else if (result==-2)
MessageBox("软限位报警!","错误",MB_OK||MB_ICONSTOP);
else if (result==-3)
MessageBox("有错误停止!","提示",MB_OK||MB_ICONINFORMATION);
else if (result==0)
MessageBox("运动终止!","提示",MB_OK||MB_ICONSTOP);
else if (result==1)
MessageBox("运动结束!","提示",MB_OK||MB_ICONINFORMATION);
g_WorkStatus=NORUN;
}
void CTestDlg::OnCheckAbsrel()
{
// TODO: Add your control notification handler code here
ifRel=!ifRel;
CButton *btn=(CButton*)GetDlgItem(IDC_CHECK_ABSREL);
btn->SetWindowText(ifRel?"相对模式":"绝对模式");
}
void CTestDlg::OnButtonInp()
{
// TODO: Add your control notification handler code here
if (g_WorkStatus==RUNNING) return;
UpdateData(TRUE);
int nID[]={IDC_CHECK_AXISX,IDC_CHECK_AXISY,IDC_CHECK_AXISZ,IDC_CHECK_AXISW};
float d[]={m_fObjX,m_fObjY,m_fObjZ,m_fObjW};
int axis[4],axisNum=0;
float pos[4];
int result;
CButton *btn;
for (int i=0;i<4;i++)
{
btn=(CButton*)GetDlgItem(nID[i]);
if (btn->GetCheck()==1)
{
axis[axisNum]=i+1;
pos[axisNum]=d[i];
axisNum++;
}
}
g_WorkStatus=RUNNING;
if (axisNum<2) return;
if (axisNum==2)
result=work_inp2(axis[0],pos[0],axis[1],pos[1],ifRel?0:1,0,ActionFunction);
else if (axisNum==3)
{
btn=(CButton*)GetDlgItem(nID[3]);
if (btn->GetCheck()!=1)
result=work_inp3(pos[0],pos[1],pos[2],ifRel?0:1,0,ActionFunction);
else result=-4;
}
else if (axisNum==4)
result=work_inp4(pos[0],pos[1],pos[2],pos[3],ifRel?0:1,0,ActionFunction);
if (result==-1)
MessageBox("有禁止轴参与运动!","错误",MB_OK||MB_ICONSTOP);
else if (result==-2)
MessageBox("软限位报警!","错误",MB_OK||MB_ICONSTOP);
else if (result==-3)
MessageBox("有错误停止!","提示",MB_OK||MB_ICONINFORMATION);
else if (result==-4)
MessageBox("选取的插补轴错误!","提示",MB_OK||MB_ICONSTOP);
else if (result==0)
MessageBox("运动终止!","提示",MB_OK||MB_ICONSTOP);
else if (result==1)
MessageBox("运动结束!","提示",MB_OK||MB_ICONINFORMATION);
g_WorkStatus=NORUN;
}
void CTestDlg::OnButtonContinue()
{
// TODO: Add your control notification handler code here
if (g_WorkStatus==RUNNING) return;
int result;
BOOL axis[4]={FALSE,FALSE,FALSE,FALSE};
float distance[4];
CButton *btn;
btn=(CButton*)GetDlgItem(IDC_CHECK_AXISX);
if (btn->GetCheck()==1) axis[0]=TRUE;
btn=(CButton*)GetDlgItem(IDC_CHECK_AXISY);
if (btn->GetCheck()==1) axis[1]=TRUE;
btn=(CButton*)GetDlgItem(IDC_CHECK_AXISZ);
if (btn->GetCheck()==1) axis[2]=TRUE;
btn=(CButton*)GetDlgItem(IDC_CHECK_AXISW);
if (btn->GetCheck()==1) axis[3]=TRUE;
// SetTimer(IDC_MAIN_TIMER,100,NULL);
g_WorkStatus=RUNNING;
if (axis[0] && !axis[1] && !axis[2] && !axis[3] ||
axis[1] && !axis[0] && !axis[2] && !axis[3] ||
axis[2] && !axis[0] && !axis[1] && !axis[3] ||
axis[3] && !axis[0] && !axis[1] && !axis[2] )
{
int homeaxis;
if (axis[0]) {homeaxis=1;}
if (axis[1]) {homeaxis=2;}
if (axis[2]) {homeaxis=3;}
if (axis[3]) {homeaxis=4;}
result=continue_move1(homeaxis,0,0,ActionFunction);
}
else if (axis[0] && axis[1] && !axis[2] && !axis[3] ||
axis[0] && axis[2] && !axis[1] && !axis[3] ||
axis[0] && axis[3] && !axis[1] && !axis[2] ||
axis[1] && axis[2] && !axis[0] && !axis[3] ||
axis[1] && axis[3] && !axis[0] && !axis[2] ||
axis[2] && axis[3] && !axis[0] && !axis[1] )
{
int homeaxis[2];
if (axis[0] && axis[1]) {homeaxis[0]=1; homeaxis[1]=2;}
if (axis[0] && axis[2]) {homeaxis[0]=1; homeaxis[1]=3;}
if (axis[0] && axis[3]) {homeaxis[0]=1; homeaxis[1]=4;}
if (axis[1] && axis[2]) {homeaxis[0]=2; homeaxis[1]=3;}
if (axis[1] && axis[3]) {homeaxis[0]=2; homeaxis[1]=4;}
if (axis[2] && axis[3]) {homeaxis[0]=3; homeaxis[1]=4;}
result=continue_move2(homeaxis[0],0,homeaxis[1],0,0,ActionFunction);
}
else if (axis[0] && axis[1] && axis[2] && !axis[3] ||
axis[0] && axis[1] && axis[3] && !axis[2] ||
axis[0] && axis[2] && axis[3] && !axis[1] ||
axis[1] && axis[2] && axis[3] && !axis[0] )
{
int homeaxis[3];
if (axis[0] && axis[1] && axis[2])
{
homeaxis[0]=1; homeaxis[1]=2; homeaxis[2]=3;
}
if (axis[0] && axis[1] && axis[3])
{
homeaxis[0]=1; homeaxis[1]=2; homeaxis[2]=4;
}
if (axis[0] && axis[2] && axis[3])
{
homeaxis[0]=1; homeaxis[1]=3; homeaxis[2]=4;
}
if (axis[1] && axis[2] && axis[3])
{
homeaxis[0]=2; homeaxis[1]=3; homeaxis[2]=4;
}
result=continue_move3(homeaxis[0],0,homeaxis[1],0,homeaxis[2],0,0,ActionFunction);
}
else if (axis[0] && axis[1] && axis[2] && axis[3])
{
result=continue_move4(0,0,0,0,0,ActionFunction);
}
else
{
MessageBox("请选定轴!","提示");
g_WorkStatus=NORUN;
// KillTimer(IDC_MAIN_TIMER);
return;
}
if (result==-1)
MessageBox("有禁止轴参与运动!","错误",MB_OK||MB_ICONSTOP);
else if (result==0)
MessageBox("运动终止!","提示",MB_OK||MB_ICONSTOP);
else if (result==-3)
MessageBox("有错误停止!","提示",MB_OK||MB_ICONINFORMATION);
g_WorkStatus=NORUN;
// KillTimer(IDC_MAIN_TIMER);
}
void CTestDlg::OnButtonInparc()
{
// TODO: Add your control notification handler code here
if (g_WorkStatus==RUNNING) return;
UpdateData(TRUE);
int nID[]={IDC_CHECK_AXISX,IDC_CHECK_AXISY,IDC_CHECK_AXISZ,IDC_CHECK_AXISW};
int inpID[2];
float pos[6]={1,1,11,11,21,1};
int n=0;
CButton *btn;
for (int i=0;i<4;i++)
{
btn=(CButton*)GetDlgItem(nID[i]);
if (btn->GetCheck()==1)
{
inpID[n]=i+1;
n++;
if (n>1) break;
}
}
if (n!=2) return;
int result;
g_WorkStatus=RUNNING;
result=work_arc(inpID[0],inpID[1],pos,0,ActionFunction);
if (result==-1)
MessageBox("有禁止轴参与运动!","错误",MB_OK||MB_ICONSTOP);
else if (result==-2)
MessageBox("软限位报警!","错误",MB_OK||MB_ICONSTOP);
else if (result==-3)
MessageBox("有错误停止!","提示",MB_OK||MB_ICONINFORMATION);
else if (result==-4)
MessageBox("三点不能构成圆!","提示",MB_OK||MB_ICONINFORMATION);
else if (result==-5)
MessageBox("选取的插补轴不能进行插补!","错误",MB_OK||MB_ICONSTOP);
else if (result==0)
MessageBox("运动终止!","提示",MB_OK||MB_ICONSTOP);
else if (result==1)
MessageBox("运动结束!","提示",MB_OK||MB_ICONINFORMATION);
g_WorkStatus=NORUN;
}
void CTestDlg::OnButtonMovefree()
{
// TODO: Add your control notification handler code here
if (g_WorkStatus==RUNNING) return;
UpdateData(TRUE);
int nID[]={IDC_CHECK_AXISX,IDC_CHECK_AXISY,IDC_CHECK_AXISZ,IDC_CHECK_AXISW};
float d[]={m_fObjX,m_fObjY,m_fObjZ,m_fObjW};
int axis[4],axisNum=0;
float pos[4];
int result;
CButton *btn;
for (int i=0;i<4;i++)
{
btn=(CButton*)GetDlgItem(nID[i]);
if (btn->GetCheck()==1)
{
axis[axisNum]=i+1;
pos[axisNum]=d[i];
axisNum++;
}
}
if (axisNum==0) return;
g_WorkStatus=RUNNING;
if (axisNum==1)
result=free_move1(axis[0],d[0],5,6,0.1,ifRel?0:1,ActionFunction);
else if (axisNum==2)
result=free_move2(axis[0],pos[0],5,6,0.1,axis[1],pos[1],4,5,0.1,ifRel?0:1,ActionFunction);
else if (axisNum==3)
result=free_move3(axis[0],pos[0],3,4,0.1,axis[1],pos[1],4,5,0.1,axis[2],pos[2],5,6,0.1,ifRel?0:1,ActionFunction);
else if (axisNum==4)
result=free_move4(pos[0],2,3,0.1,pos[1],3,4,0.2,pos[2],4,5,0.4,pos[3],5,6,0.3,ifRel?0:1,ActionFunction);
if (result==-1)
MessageBox("有禁止轴参与运动!","错误",MB_OK||MB_ICONSTOP);
else if (result==-2)
MessageBox("软限位报警!","错误",MB_OK||MB_ICONSTOP);
else if (result==-3)
MessageBox("有错误停止!","提示",MB_OK||MB_ICONINFORMATION);
else if (result==0)
MessageBox("运动终止!","提示",MB_OK||MB_ICONSTOP);
else if (result==1)
MessageBox("运动结束!","提示",MB_OK||MB_ICONINFORMATION);
g_WorkStatus=NORUN;
}
void CTestDlg::OnButtonStop()
{
// TODO: Add your control notification handler code here
all_stop(0);
}
void CTestDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (!ifInit || nIDEvent!=IDC_MAIN_TIMER) return;
int IO[12]={0,1,2,8,9,10,16,17,18,24,25,26};
int IOID[12]={IDC_CHECK_LIMITX,IDC_CHECK_LIMITX2,IDC_CHECK_ORIGINX,
IDC_CHECK_LIMITY,IDC_CHECK_LIMITY2,IDC_CHECK_ORIGINY,
IDC_CHECK_LIMITZ,IDC_CHECK_LIMITZ2,IDC_CHECK_ORIGINZ,
IDC_CHECK_LIMITW,IDC_CHECK_LIMITW2,IDC_CHECK_ORIGINW};
CButton *btn;
for (int i=0; i<12; i++)
{
btn=(CButton*)GetDlgItem(IOID[i]);
btn->SetCheck(get_input(IO[i])==0?1:0);
}
if(g_WorkStatus!=RUNNING)return;
Update();
CDialog::OnTimer(nIDEvent);
}
void CTestDlg::ActionFunction()
{
static int count=0;
if (count<1000 )
{
count++;
return;
}
DoEvent();
}
void CTestDlg::OnCheckAxisx()
{
// TODO: Add your control notification handler code here
CButton *btn=(CButton*)GetDlgItem(IDC_CHECK_AXISX);
if (btn->GetCheck()==1)
g_Axis[0]=1;
else
g_Axis[0]=0;
}
void CTestDlg::OnCheckAxisy()
{
// TODO: Add your control notification handler code here
CButton *btn=(CButton*)GetDlgItem(IDC_CHECK_AXISY);
if (btn->GetCheck()==1)
g_Axis[1]=2;
else
g_Axis[1]=0;
}
void CTestDlg::OnCheckAxisz()
{
// TODO: Add your control notification handler code here
CButton *btn=(CButton*)GetDlgItem(IDC_CHECK_AXISZ);
if (btn->GetCheck()==1)
g_Axis[2]=3;
else
g_Axis[2]=0;
}
void CTestDlg::OnCheckAxisw()
{
// TODO: Add your control notification handler code here
CButton *btn=(CButton*)GetDlgItem(IDC_CHECK_AXISW);
if (btn->GetCheck()==1)
g_Axis[3]=4;
else
g_Axis[3]=0;
}
void CTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if( g_WorkStatus==RUNNING || ifHand ) return;//正忙中...
switch( nChar)
{
default:
break;
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CTestDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if( g_WorkStatus==RUNNING || ifHand ) return;//正忙中...
switch( nChar )
{
case VK_LEFT:
case VK_RIGHT:
all_stop(0);
return;
}
CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message == WM_KEYUP || pMsg->message == WM_SYSKEYUP ){
if ( pMsg->wParam == VK_LEFT||
pMsg->wParam == VK_RIGHT)
all_stop(1);
SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);
return TRUE;
}
switch ( pMsg->wParam )
{
case VK_RIGHT:
if( g_WorkStatus==RUNNING || ifHand ) break;//正忙中...
MouseDOWN(0x1000);
break;
case VK_LEFT:
if( g_WorkStatus==RUNNING || ifHand ) break;//正忙中
MouseDOWN(0x1001);
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
void CTestDlg::Update()
{
UpdateData(TRUE);
m_fLogPosX=get_logical_pos(1,0);
m_fLogPosY=get_logical_pos(2,0);
m_fLogPosZ=get_logical_pos(3,0);
m_fLogPosW=get_logical_pos(4,0);
m_fFactPosX=get_fact_pos(1,0);
m_fFactPosY=get_fact_pos(2,0);
m_fFactPosZ=get_fact_pos(3,0);
m_fFactPosW=get_fact_pos(4,0);
m_fSpeedX=get_move_speed(1,0);
m_fSpeedY=get_move_speed(2,0);
m_fSpeedZ=get_move_speed(3,0);
m_fSpeedW=get_move_speed(4,0);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -