using SHJX.Service.Control.Extends; using SHJX.Service.Control.Common.Assets; using SHJX.Service.Control.Disposables; namespace SHJX.Service.Control.Pipeline.Nodes.LiquidNode { public class Titration2DropperOpen : INode { #region Fields private static TaskExtend _taskExtend; private static IDataManager _dataManager; #endregion public Titration2DropperOpen(TaskExtend taskExtend, IDataManager dataManager) { Name = nameof(Titration2DropperOpen); _taskExtend = taskExtend; _dataManager = dataManager; } public override INode Invoke() { bool locker; //do //{ // StateMachine state = DataManagerInstance.QueryStateMachine(StateMachineName.TITRATION_LOCK); // locker = state.Status > 0; //} while (locker); do { StateMachine state = DataManagerInstance.QueryStateMachine(StateMachineName.MOTOR_LOCKDROPPER); locker = state.Status > 0; } while (locker); //DataManagerInstance.IncreaseLock(StateMachineName.TITRATION_LOCK); DataManagerInstance.IncreaseLock(StateMachineName.MOTOR_LOCKDROPPER); // ExecuteCommand.ShowStatusOpenClose(CurrentTask, "移动滴定滴嘴(开启)"); bool res = true; do { char[] readData = EquipmentNames.AxisD.MotorRead(); if (readData is null or not { Length: 8 }) { continue; } res = readData[2].Equals('0'); Thread.Sleep(800); } while (!res); res = EquipmentNames.AxisD.LiquidMotorMove(Convert.ToInt32(-70 * 4000)); //EquipmentNames.Titration2DropperForward.RegisterOpen(); //EquipmentNames.Titration2DropperInversion.RegisterOpen(); //bool res = true; //do //{ // char[] readData = EquipmentNames.Titration2Dropper.MotorRead(); // if (readData is null or { Length: 0 }) // { // continue; // } // res = readData[5 - 1].Equals('0'); // Thread.Sleep(200); //} while (!res); //EquipmentNames.Titration2DropperInversion.RegisterClose(); //EquipmentNames.Titration2DropperForward.RegisterClose(); return this; } } }