using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using CyberX8_Core; using CyberX8_RT.Devices.LinMot; using MECF.Framework.Common.Routine; using MECF.Framework.Common.Utilities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Modules.Prewet { public class PrewetDelayKeepwetRoutine : RoutineBase, IRoutine { private enum KeepwetStep { Delay, Keepwet, KeepwetWait, End } #region 内部变量 /// /// delay时间 /// private int _idleKeepwetPauseBetweenScanSeconds; /// /// keepwet状态机 /// //private PrewetKeepWetStateMachine _keepwetStateMachine; /// /// Linmot /// private LinMotAxis _linmotAxis; /// /// Keepwet Routine /// private PrewetKeepWetRoutine _prewetKeepWetRoutine; #endregion /// /// 构造函数 /// /// public PrewetDelayKeepwetRoutine(string module,LinMotAxis linMotAxis) : base(module) { _linmotAxis = linMotAxis; _prewetKeepWetRoutine = new PrewetKeepWetRoutine(module, linMotAxis); //_keepwetStateMachine = new PrewetKeepWetStateMachine(Module.ToString(), _linmotAxis); } /// /// 中止 /// public void Abort() { if (Runner.CurrentStep.ToString() == KeepwetStep.Delay.ToString()) { Runner.Stop("Manual abort"); } } /// /// 监控 /// /// public RState Monitor() { Runner.Delay(KeepwetStep.Delay, _idleKeepwetPauseBetweenScanSeconds * 1000) .Run(KeepwetStep.Keepwet, StartKeepwet, _delay_1ms) .WaitWithStopCondition(KeepwetStep.KeepwetWait, CheckKeepwetEndStaus, CheckKeepwetStopStaus) .End(KeepwetStep.End, NullFun, _delay_1ms); return Runner.Status; } /// /// 启动keepwet /// /// private bool StartKeepwet() { //return _keepwetStateMachine.CheckToPostMessage(eEvent.ERR_PREWET, Module.ToString(), (int)PrewetKeepWetMsg.KeepWetStart, null); return _prewetKeepWetRoutine.Start() == RState.Running; } /// /// 检验keepwet状态机结束状态 /// /// private bool CheckKeepwetEndStaus() { //return _keepwetStateMachine.State == PrewetKeepWetState.Idle.ToString(); return CommonFunction.CheckRoutineEndState(_prewetKeepWetRoutine); } /// /// 检验keepwet状态机停止状态 /// /// private bool CheckKeepwetStopStaus() { //return _keepwetStateMachine.State == PrewetKeepWetState.Error.ToString(); return CommonFunction.CheckRoutineStopState(_prewetKeepWetRoutine); } /// /// 启动 /// /// /// public RState Start(params object[] objs) { //_keepwetStateMachine.Initialize(); _idleKeepwetPauseBetweenScanSeconds = SC.GetValue("Prewet.IdleKeepwetPauseBetweenScanSeconds"); return Runner.Start(Module, "Start Delay Keepwet"); } } }