15,471
社区成员
发帖
与我相关
我的任务
分享
//
void DoEvents()
{
MSG msg;
// Process existing messages in the application's message queue.
// When the queue is empty, do clean up and return.
while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{// has msg
if (!AfxGetThread()->PumpMessage()) break;
}
}
//
bool setJogMode(short axis,double fAcc,double fDec)
{
TJogPrm jog;
short rtn = 0;
// 将AXIS轴设为Jog模式
rtn = GT_PrfJog(axis);
if(rtn) return false;
// 读取Jog运动参数
rtn = GT_GetJogPrm(axis,&jog);
if(rtn) return false;
//
jog.acc = fAcc;
jog.dec = fDec;
jog.smooth = 0.0;
// 设置Jog运动参数
rtn = GT_SetJogPrm(axis,&jog);
if(rtn) return false;
//
return true;
}
//
bool DoJogging(short axis,double vel)
{
short rtn = 0;
long sts = 0;
// 设置AXIS轴的目标速度
rtn = GT_SetVel(axis,vel);
if(rtn) return false;
// 启动AXIS轴的运动
rtn = GT_Update(1<<(axis-1));
if(rtn) return false;
do
{
DoEvents();
rtn = GT_GetSts(axis,&sts);
if(rtn) return false;
} while(!(sts & STS_MOTOR_ARRIVE));
//
return true;
}
// X+
void CCoffeeDlg::OnButton8()
{
// TODO: Add your control notification handler code here
if(setJogMode(AXIS_X,0.25,0.25))
{
bool ret=DoJogging(AXIS_X,100.0);
}
}
// X-
void CCoffeeDlg::OnButton9()
{
// TODO: Add your control notification handler code here
if(setJogMode(AXIS_X,0.3,0.3))
{
DoJogging(AXIS_X,-100.0);
}
}