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; }