using System; using System.Threading; using SHJX.Service.Common.Extend; using SHJX.Service.Model.Control; using SHJX.Service.Common.ReadXML; using SHJX.Service.ServerClient.Interface; using SHJX.Service.ServerClient.TempController; using SHJX.Service.Common.Logging; using Microsoft.Extensions.Logging; namespace SHJX.Service.ServerClient.RS485Control { public class MotorTPort : SerialPortImp, PortControlImp { private static readonly ILogger logger = LogFactory.BuildLogger(typeof(MotorTPort)); /// /// T轴 /// /// 日志 /// 配置 public MotorTPort( ReadConfigUtil config) : base( config) { config.GetSpeed.ForEach(item => { if (item.NodeName == "MotorT") speedT = item.Speed; }); } private double speedT = 0; public object Read(PortArgs args) { object obj = args.ReadWay switch { "OriginalPosition" => GetOriginalPosition(args), _ => JudgeStorage(args.NodeId), }; return obj; } public object GetOriginalPosition(PortArgs args) { var res = JudgeStorage(args.NodeId); if (res is null or { Length: 0 }) return false; return res[2].Equals('0'); } public bool Write(PortArgs args) { var res = args.WriteWay switch { WriteWay.Move => Move(args.NodeId, args.Distance, 1000,speedT), WriteWay.GoBack => MotorGoBack(args.NodeId, 3), WriteWay.Stop => MotorStop(args.NodeId), WriteWay.Speed => MotorSpeed(args.NodeId, args.Distance), WriteWay.AcSpeed => MotorAcSpeed(args.NodeId, args.Distance), WriteWay.DeSpeed => MotorDeSpeed(args.NodeId, args.Distance), _ => throw new ArgumentNullException(args.WriteWay.GetEnumDesc()), }; return res; } } }