Die Funktion TCmd::WakeUp( void )

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


Zurück zu TSteering::WakeUp()

Startseite


Kay Schützler
Last modified: Tue Sep 21 15:27:06 MET DST 1999