四、 驱动轴状态、位置读取和设定
对于驱动轴的状态,分为两种:1、指脉冲输出状态;2、指专用输入信号电平状态
检测脉冲输出是否完成,可以写成如下函数,假设软件总共只用到XYZ三轴:
int IsRunning( int nAxis = -1 )//默认为-1是有目的的
{
if( nAxis != -1 )
return d1000_check_done( nAxis ) == 0 ;
//当nAxis == -1时,检测三个轴是否有一个在运行,这种检测在加工时常用
return d1000_check_done( XCH ) == 0 ||
d1000_check_done( YCH ) == 0 ||
d1000_check_done( ZCH ) == 0;
}
当用户等待YCH脉冲发完,则用一个循环检测即可:
while( g_DmcCard.IsRuning( YCH ) ) ::DoEvents();
别忘了,IsRuning是CctrlCard的成员函数,而DoEvents函数在DMC1000不能响应系统消息的文章中有详细实现和功能描述。
在实际加工时,作插补时,常需要等待上次所有运动结束才开始新的运动。故有如下表现:
for( int I(0),step(0); I
{
DoEvents();
switch( m_nworkStatus ){
case Pause:
<