using System; using System.Threading; 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 CagePort : SerialPortImp, PortControlImp { private static readonly ILogger logger = LogFactory.BuildLogger(typeof(CagePort)); /// /// 升降台 /// /// 日志 /// 配置 public CagePort( ReadConfigUtil config) : base( config) { } public object Read(PortArgs args) { object obj = args.ReadWay switch { "OriginalPosition" => JudgeStorage(args.NodeId), _ => throw new ArgumentNullException(args.ReadWay), }; return obj; } public bool Write(PortArgs args) { (int address, string way)[] values = args.WriteWay switch { WriteWay.Normotopia => new[] { (1, "L"), (2, "H"), (3, "L") }, WriteWay.Antiposition => new[] { (1, "L"), (3, "H"), (2, "L") }, _ => throw new ArgumentNullException("None") }; var result = true; for (var i = 0; i < values.Length; i++) { var res = MotorStorage(args.NodeId, values[i].address, values[i].way); result = result && res; } Thread.Sleep(5 * 1000); return result; } } }