using System; using SHJX.Service.Model.Control; using SHJX.Service.Common.Extend; 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.LiquidPump { /// 硫酸银 /// public class SilverSulfatePort : SerialPortImp, PortControlImp { private static readonly ILogger logger = LogFactory.BuildLogger(typeof(SilverSulfatePort)); /// /// /// 硫酸银 /// /// 配置 public SilverSulfatePort( ReadConfigUtil config) : base( config) { } public object Read(PortArgs args) { //return JudgeStorage(args.NodeId); object res = args.ReadWay switch { "OriginalPosition" => GetOriginalPosition(args), _ => JudgeStorage(args.NodeId), }; return res; } 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.Normotopia => MotorStorage(args.NodeId, 1, "L"), WriteWay.Antiposition => MotorStorage(args.NodeId, 1, "H"), WriteWay.GoBack => MotorGoBackDissolvePort(args.NodeId, 3), WriteWay.Move => MotorMove(args.NodeId, args.Distance), 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; } } }