using System; using SHJX.Service.Model.Control; using SHJX.Service.Common.ReadXML; using SHJX.Service.Common.UserTimer; using SHJX.Service.Common.UserDelegate; using SHJX.Service.Control.TimerControl.ChangeTaskState; using SHJX.Service.Control.TimerControl.WriteTaskToEquipment; using SHJX.Service.ServerClient; using SHJX.Service.Common.Logging; using Microsoft.Extensions.Logging; namespace SHJX.Service.Control { /// /// 任务控制 /// public sealed class TimerController { private static readonly ILogger logger = LogFactory.BuildLogger(typeof(TimerController)); /// /// 日志 /// private readonly ReadConfigUtil _config; private readonly WriteTaskFactory _writeTaskFactory; private readonly ChangeStateFactory _changeStateFactory; #region 定时器 private static TimerProcessor _changeTaskStateProcessor; private static TimerProcessor _writeTaskProcessor; private static TimerProcessor _changeWashTaskStateProcessor; private static TimerProcessor _writeWashTaskProcessor; private static TimerProcessor _changeBdTaskStateProcessor; private static TimerProcessor _writeBdTaskProcessor; private static TimerProcessor _writeSpTaskProcessor; private static TimerProcessor _readTemperatureProcessor; #endregion public TimerController( ReadConfigUtil config) { try { _config = config; var operateController = new FlowContent( config); _writeTaskFactory = new WriteTaskFactory( config, operateController); _changeStateFactory = new ChangeStateFactory( config); } catch (Exception ex) { logger.LogError(ex.ToString()); } } public void Start() { try { _changeTaskStateProcessor = new TimerProcessor("Change_TaskState", 1000); _changeTaskStateProcessor.OnTimer += _changeStateFactory.Get("Sample").ChangeEquipmentTaskStateEvent; _changeTaskStateProcessor.Start(); _writeTaskProcessor = new TimerProcessor("WriteTask", 1000); _writeTaskProcessor.OnTimer += _writeTaskFactory.Get("Sample").WriteTaskToEquipmentEvent; _writeTaskProcessor.Start(); _changeWashTaskStateProcessor = new TimerProcessor("ChangeWashTaskState", 1000); _changeWashTaskStateProcessor.OnTimer += _changeStateFactory.Get("Wash").ChangeEquipmentTaskStateEvent; _changeWashTaskStateProcessor.Start(); _writeWashTaskProcessor = new TimerProcessor("WriteWashTask", 1000); _writeWashTaskProcessor.OnTimer += _writeTaskFactory.Get("Wash").WriteTaskToEquipmentEvent; _writeWashTaskProcessor.Start(); _changeBdTaskStateProcessor = new TimerProcessor("ChangeBDTaskState", 1000); _changeBdTaskStateProcessor.OnTimer += _changeStateFactory.Get("Calibration").ChangeEquipmentTaskStateEvent; _changeBdTaskStateProcessor.Start(); _writeBdTaskProcessor = new TimerProcessor("WriteBDTask", 1000); _writeBdTaskProcessor.OnTimer += _writeTaskFactory.Get("Calibration").WriteTaskToEquipmentEvent; _writeBdTaskProcessor.Start(); _writeSpTaskProcessor = new TimerProcessor("WriteSPTask", 1000); _writeSpTaskProcessor.OnTimer += _writeTaskFactory.Get("SinglePoint").WriteTaskToEquipmentEvent; _writeSpTaskProcessor.Start(); _readTemperatureProcessor = new TimerProcessor("ReadTemperature", 2000); _readTemperatureProcessor.OnTimer += ReadTemperatureProcessor_OnTimer; _readTemperatureProcessor.Start(); } catch (Exception ex) { logger.LogError(ex.Message); } } private OptClient _client; private OptClient Client { get { if (_client is null) { _client = new OptClient( _config); } return _client; } } public void ReadTemperatureProcessor_OnTimer() { try { var portArgs = new PortArgs { TypeName = "Heat" }; var currentTemperature = Client.Factory("Heat").Read(portArgs); Messager.Send("ChangeTemperature", currentTemperature); } catch (Exception) { throw; } } } }