示例#1
0
 protected void ChangePhase(AMSPhase newPhase)
 {
     currentPhase = newPhase;
     if (currentPhase == null)
     {
         currentPhase = phaseNone;
     }
     currentPhase.Init();
 }
示例#2
0
            protected AMSPhase AddPhase(string name, Func <bool> fcntRun,
                                        Func <bool> beforeFirstRun = null)
            {
                AMSPhase phase = new AMSPhase(name, fcntRun)
                {
                    BeforeFirstRun = beforeFirstRun
                };

                this.listPhase.Add(phase);
                return(phase);
            }
示例#3
0
 public AbstractAMS(P parameters)
 {
     this.Params           = parameters;
     logger                = new Logger(GetProgram());
     this.isRunning        = false;
     phaseNone             = AddPhase(PHASE_NONE, RunPhaseNone);
     phaseLaunch           = AddPhase(PHASE_LAUNCH, ResetPosition, BeforeFirstRunResetPosition);
     phaseEnding           = AddPhase(PHASE_ENDING, ResetPosition, BeforeFirstRunResetPosition);
     phaseEnd              = AddPhase(PHASE_END, RunPhaseEnd);
     phaseEnding.NextPhase = phaseEnd;
     this.currentPhase     = phaseNone;
 }
            public AutomaticMiningSystem(AutomaticMiningSystemParams parameters) : base(parameters)
            {
                this.lastAngle = Params.MinRotorAngle;

                AMSPhase phase1 = this.AddPhase(PHASE_EXTENDING_DRILL, RunPhaseExtendingPistonMiningDirection);
                AMSPhase phase2 = this.AddPhase(PHASE_RETRACTING_LG, RunPhaseRetractingPistionOppositeMiningDirection);
                AMSPhase phase3 = this.AddPhase(PHASE_MOVING_MOTOR, RunPhaseRotating);

                // Set worflow
                phaseLaunch.NextPhase = phase1;
                phase1.NextPhase      = phase2;
                phase2.NextPhase      = phase3;
                phase3.NextPhase      = phaseEnding;
            }
            public PlateformeForage(PlateformeForageParams parameters) : base(parameters)
            {
                AMSPhase phase1 = this.AddPhase(PHASE_EXTENDING_PISTON, RunPhaseExtendingPistons);
                AMSPhase phase2 = this.AddPhase(PHASE_RETRACTING_HINGE, RunPhaseRetractingHinge, BeforeFirstRunPhaseRetractingHinge);
                AMSPhase phase3 = this.AddPhase(PHASE_RETRACTING_PISTON, RunPhaseRetractingPistons);
                AMSPhase phase4 = this.AddPhase(PHASE_MOVING_HINGE, RunPhaseInclinate, BeforeFirstRunPhaseInclinate);

                // set worflow
                AfterLaunch(phase1);
                phase1.NextPhase = phase2;
                phase2.NextPhase = phase3;
                phase3.NextPhase = phase4;
                phase4.NextPhase = phase1;
            }
示例#6
0
            /** Manual Commande Start */
            protected virtual void Start()
            {
                logger.Info("==> Start");
                bool wasRunning = isRunning;

                isRunning = true;
                this.LoadBlocks();
                // If off, start from the beginning = launch
                // else continue the currentPhase
                if (currentPhase.Name == PHASE_NONE)
                {
                    currentPhase = phaseLaunch;
                }
                if (!wasRunning)
                {
                    currentPhase.Init();
                }
            }
示例#7
0
 protected void AfterLaunch(AMSPhase phase)
 {
     this.phaseLaunch.NextPhase = phase;
 }