using System.Threading; using System; 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 TimerPort : SerialPortImp, PortControlImp { private static readonly ILogger logger = LogFactory.BuildLogger(typeof(TimerPort)); /// /// 计时器 /// /// 日志 /// 配置 public TimerPort( ReadConfigUtil config) : base( config) { } public object Read(PortArgs args) { object res = null; switch (args.ReadWay) { case "Judge": res = JudgeStorage(args.NodeId)?[7].Equals('0'); break; } return res; } public bool Write(PortArgs args) { var way = args.WriteWay switch { WriteWay.Start => "L", WriteWay.Stop => "H", _ => throw new ArgumentNullException() }; return zMotorStorage(args, way); } private bool zMotorStorage(PortArgs args, string op) { string res1 = ""; while (res1 != "0009\r" && res1 != "0209\r") { var storageRes = JudgeXYZMove(4); if (storageRes.Equals("")) return false; res1 = storageRes; Thread.Sleep(300); } return MotorStorage(args.NodeId, 4, op); } } }