コード例 #1
0
ファイル: Pump.cs プロジェクト: Mokarski/Vagonka
        public static void Start()
        {
            if (!mCord.IsNormal)
            {
                return;
            }

            if (Pedals.IsPressed)
            {
                return;
            }

            if (SoundAlarm.IsUnlock)
            {
                OnComplete(null);
            }
            else
            {
                SoundAlarm.OnComplete += OnComplete;
                SoundAlarm.On();
            }
        }
コード例 #2
0
        private void KeyboardInit()
        {
            var pressLockTime = DateTime.MaxValue;

            Keyboard.OnPress += code =>
            {
                switch (code)
                {
                    #region lock & fault reset
                case KeyboardCode.Reserved:
                {
                    switch (mState)
                    {
                    case SystemState.Init:
                    case SystemState.Ready:
                    case SystemState.Failure:
                    {
                        mJournal.Debug(string.Format("Сброс системы: {0}", mState), MessageLevel.System);
                        Pump.ResetFault();
                        Engine.ResetFault();
                        SetState(SystemState.Init, SystemStateCodes.State.Initialization);
                    }
                    break;
                    }
                }
                break;

                //now this button is reset
                case KeyboardCode.UserLock:
                {
                    //pressLockTime = DateTime.Now;
                    switch (mState)
                    {
                    case SystemState.Init:
                    case SystemState.Ready:
                    case SystemState.Failure:
                    {
                        mJournal.Debug(string.Format("Сброс системы: {0}", mState), MessageLevel.System);
                        Pump.ResetFault();
                        Engine.ResetFault();
                        SetState(SystemState.Init, SystemStateCodes.State.Initialization);
                    }
                    break;
                    }
                }
                break;
                    #endregion

                    #region engine
                // now is speed 4 button
                case KeyboardCode.SpeedUp:
                {
                    /*switch (mState)
                     * {
                     *  //case SystemState.Init:
                     *  case SystemState.Ready:
                     *  case SystemState.Active:
                     *      Engine.SpeedUp(EngineMode.Motion);
                     *      break;
                     * }
                     */
                    switch (mState)
                    {
                    // можем запускать только из состояния, когда включен только насос
                    case SystemState.Ready:
                    {
                        Engine.SetMode(EngineMode.Motion);

                        // если нет блокировок на запуск, то mIsActionBlock == false
                        if (!mIsActionBlock)
                        {
                            SetState(SystemState.Active, SystemStateCodes.State.MotionMode);
                        }

                        Engine.Speed4(EngineMode.Motion);
                    }

                    break;
                    }
                }
                break;

                // now this is speed 2 button
                case KeyboardCode.SpeedDown:
                {
                    /*
                     * switch (mState)
                     * {
                     *
                     *  //case SystemState.Init:
                     *  case SystemState.Ready:
                     *  case SystemState.Active:
                     *      Engine.SpeedDown(EngineMode.Motion);
                     *      break;
                     *
                     * }
                     */
                    switch (mState)
                    {
                    // можем запускать только из состояния, когда включен только насос
                    case SystemState.Ready:
                    {
                        Engine.SetMode(EngineMode.Motion);

                        // если нет блокировок на запуск, то mIsActionBlock == false
                        if (!mIsActionBlock)
                        {
                            SetState(SystemState.Active, SystemStateCodes.State.MotionMode);
                        }

                        Engine.Speed2(EngineMode.Motion);
                    }

                    break;
                    }
                }
                break;

                //now is speed 3 button
                case KeyboardCode.MotionStart:
                {
                    switch (mState)
                    {
                    // можем запускать только из состояния, когда включен только насос
                    case SystemState.Ready:
                    {
                        Engine.SetMode(EngineMode.Motion);

                        // если нет блокировок на запуск, то mIsActionBlock == false
                        if (!mIsActionBlock)
                        {
                            SetState(SystemState.Active, SystemStateCodes.State.MotionMode);
                        }

                        Engine.Speed3(EngineMode.Motion);
                    }

                    break;
                    }
                }
                break;

                // now is speed1 button
                case KeyboardCode.MotionStop:
                {
                    switch (mState)
                    {
                    // можем запускать только из состояния, когда включен только насос
                    case SystemState.Ready:
                    {
                        Engine.SetMode(EngineMode.Motion);

                        // если нет блокировок на запуск, то mIsActionBlock == false
                        if (!mIsActionBlock)
                        {
                            SetState(SystemState.Active, SystemStateCodes.State.MotionMode);
                        }

                        Engine.Speed1(EngineMode.Motion);
                    }

                    break;
                    }
                }
                break;
                    #endregion

                    #region conveyor

                case KeyboardCode.ConveyorUp:
                {
                    switch (mState)
                    {
                    case SystemState.Init:
                    case SystemState.Ready:
                    case SystemState.Active:
                        Engine.ConveyorSpeed2();
                        Engine.ConveyorOn(1);
                        //Engine.SpeedUp(EngineMode.Conveyor);
                        break;
                    }
                }
                break;

                case KeyboardCode.ConveyorDown:
                {
                    switch (mState)
                    {
                    case SystemState.Init:
                    case SystemState.Ready:
                    case SystemState.Active:
                        Engine.ConveyorOn(0);
                        Engine.ConveyorSpeed1();
                        //Engine.SpeedDown(EngineMode.Conveyor);
                        break;
                    }
                }
                break;

                case KeyboardCode.ConveyorStart:
                {
                    if (mState != SystemState.Failure)
                    {
                        Engine.ConveyorOn(0);
                    }

                    /*
                     * switch (mState)
                     * {
                     *  // можем запускать только из состояния, когда включен только насос
                     *  case SystemState.Ready:
                     *      {
                     *          Engine.SetMode(EngineMode.Conveyor);
                     *
                     *          // если нет блокировок на запуск, то mIsActionBlock == false
                     *          if (!mIsActionBlock)
                     *              SetState(SystemState.Active, SystemStateCodes.State.ConveyorMode);
                     *      }
                     *
                     *      break;
                     * }
                     */
                }
                break;

                case KeyboardCode.ConveyorStop:
                {
                    Engine.ConveyorOff();

                    /*
                     *  if(Engine.Mode == EngineMode.Conveyor)
                     *  switch (mState)
                     *  {
                     *      case SystemState.Active:
                     *          Engine.SetMode(EngineMode.Deactivate);
                     *          SetState(SystemState.Ready, SystemStateCodes.State.ReadyToUse);
                     *          break;
                     *  }
                     */
                }
                break;

                    #endregion

                    #region pump

                case KeyboardCode.PumpStart:
                {
                    switch (mState)
                    {
                    case SystemState.Ready:
                        Pump.Start();
                        break;
                    }
                }
                break;

                case KeyboardCode.PumpStop:
                {
                    Pump.Stop();
                    SetState(SystemState.Init, SystemStateCodes.State.Initialization);
                }
                break;

                    #endregion

                    #region alarm

                case KeyboardCode.SoundAlarm:
                {
                    SoundAlarm.On();
                }
                break;

                    #endregion
                }
            };

            Keyboard.OnRelese += code =>
            {
                switch (code)
                {
                    #region alarm

                case KeyboardCode.SoundAlarm:
                {
                    SoundAlarm.Off();
                }
                break;

                    #endregion

                    #region conveyor

                case KeyboardCode.ConveyorStart:
                {
                    Engine.ConveyorOff();
                }
                break;

                    #endregion
                //not used
                case KeyboardCode.UserLock:
                {
                    /*
                     * if (DateTime.Now.Subtract(pressLockTime).TotalMilliseconds > 3000)
                     * {
                     *  mJournal.Debug("Станция заблокирована оператором", MessageLevel.System);
                     *  //SetState(SystemState.UserLock);
                     * }
                     */
                }
                break;
                }
            };
        }