using Aitex.Core.RT.Routine; using MECF.Framework.Common.Persistent.Prewet; using MECF.Framework.Common.Routine; using CyberX8_Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Devices.Prewet { public class PrewetPumpEnableRoutine : RoutineBase, IRoutine { private enum PumpEnableStep { PumpValve, Delay, PumpEnable, WritePumpSpeed, LastDelay, End } #region 内部变量 PrewetDevice _device; PrewetPersistentValue _prewetPersistentValue; #endregion /// /// 构造函数 /// /// public PrewetPumpEnableRoutine(string module,PrewetDevice prewetDevice,PrewetPersistentValue prewetPersistentValue) : base(module) { _device = prewetDevice; _prewetPersistentValue = prewetPersistentValue; } /// /// 中止 /// public void Abort() { Runner.Stop("Manual Abort"); } /// /// 监控 /// /// public RState Monitor() { Runner.Run(PumpEnableStep.PumpValve, _device.PumpValveOpen, () => { return _device.PrewetPumpData.PumpValve; }, _delay_1s) .Delay(PumpEnableStep.Delay, 200) .Run(PumpEnableStep.PumpEnable, _device.PumpEnable, () => { return _device.PrewetPumpData.PumpEnable; }, _delay_1s) .Run(PumpEnableStep.WritePumpSpeed, () => { return _device.PumpSpeed(); }, _delay_1ms) .Delay(PumpEnableStep.LastDelay, 500) .End(PumpEnableStep.End, NullFun, _delay_1ms); return Runner.Status; } /// /// 启动 /// /// /// public RState Start(params object[] objs) { return Runner.Start(Module, "Pump Enable"); } } }