TCCode TCmd::WakeUp( void )
{
// does not change the actual motor
int mid;
double dd;
BOOL bAllReady = TRUE;
for (mid = 0; mid < mlGetAxisNumber(); mid++)
if (!bMoveOk[mid])
{
if (mlIsMoveFinish( mid ))
{
DelayTime( 5 );
if (mlGetDistance( mid, dd ))
bMoveOk[mid] = TRUE;
else
// Motorbewegung noch nicht abgeschlossen oder Auslesefehler
bAllReady = FALSE;
}
else
// Motorbewegung noch nicht beendet
bAllReady = FALSE;
}
if (bAllReady)
{
bPositionValid = TRUE;
if (bNoMeasure)
{
bNoMeasure = FALSE;
return DoAction();
}
else
// Detektor ist nicht aktiv gewesen
return CMeasure;
}
// wenigstens ein Motor ist in Bewegung bzw. hatte Auslesefehler
return CRecall;
/*
if (nAskIdx > 0)
return CRecall;
else
return DoAction();
*/
}
Nachfolgend die gerufene Funktion DoAction().
TCCode TCmd::DoAction( void )
{
switch(eStep)
{
case CFirstStep:
// virtuelle Funktion, abhängig vom aktuellen Befehl
return FirstStep();
case CControlStep:
// virtuelle Funktion, abhängig vom aktuellen Befehl
return ControlStep();
case CReadyStep:
// virtuelle Funktion, abhängig vom aktuellen Befehl
return ReadyStep();
case CReady:
// virtuelle Funktion, abhängig vom aktuellen Befehl
return Ready();
}
MessageBox( GetFocus(), "Unbekannter Schritt", "Meldung", MBINFO );
return CStop;
}