using System; using SHJX.Service.Model.Control; using SHJX.Service.Control.Modules; using SHJX.Service.Control.Interface; using System.Linq; using SHJX.Service.Common.ReadXML; namespace SHJX.Service.Control.Route.RouteController { public class MotorYOperate : FlowControlOperateImp { private const string OpName = "MotorY"; public virtual bool Operate(ReadConfigUtil config, DataEventArgs data) { var res = data.Task.RouteStep switch { "Y_Move_From" => SetSerialPortData(data, data.Task.From), "Y_Move_To" => SetSerialPortData(data, data.Task.To), _ => throw new ArgumentNullException(data.Task.RouteStep), }; return res; } private static bool SetSerialPortData(DataEventArgs data, string local) { PortArgs portArgs = new() { WriteWay = WriteWay.Move, TypeName = OpName, Distance = local.CalculateAreaPoint(OpName) }; if (data.Client.Factory(OpName).Write(portArgs)) { var motor = DataCentre.GetMotor.First(item => item.EquipmentName.Equals(OpName)); if (motor is null) throw new ArgumentNullException(OpName); motor.FinalPoint += -portArgs.Distance / motor.ConvertRatio; var row = DataCentre._dataManager.Update(motor); return true; } return false; } } }