TimerController.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System;
  2. using SHJX.Service.Model.Control;
  3. using SHJX.Service.Common.ReadXML;
  4. using SHJX.Service.Common.UserTimer;
  5. using SHJX.Service.Common.UserDelegate;
  6. using SHJX.Service.Control.TimerControl.ChangeTaskState;
  7. using SHJX.Service.Control.TimerControl.WriteTaskToEquipment;
  8. using SHJX.Service.ServerClient;
  9. using SHJX.Service.Common.Logging;
  10. using Microsoft.Extensions.Logging;
  11. namespace SHJX.Service.Control
  12. {
  13. /// <summary>
  14. /// 任务控制
  15. /// </summary>
  16. public sealed class TimerController
  17. {
  18. private static readonly ILogger logger = LogFactory.BuildLogger(typeof(TimerController));
  19. /// <summary>
  20. /// 日志
  21. /// </summary>
  22. private readonly ReadConfigUtil _config;
  23. private readonly WriteTaskFactory _writeTaskFactory;
  24. private readonly ChangeStateFactory _changeStateFactory;
  25. #region 定时器
  26. private static TimerProcessor _changeTaskStateProcessor;
  27. private static TimerProcessor _writeTaskProcessor;
  28. private static TimerProcessor _changeWashTaskStateProcessor;
  29. private static TimerProcessor _writeWashTaskProcessor;
  30. private static TimerProcessor _changeBdTaskStateProcessor;
  31. private static TimerProcessor _writeBdTaskProcessor;
  32. private static TimerProcessor _writeSpTaskProcessor;
  33. private static TimerProcessor _readTemperatureProcessor;
  34. #endregion
  35. public TimerController( ReadConfigUtil config)
  36. {
  37. try
  38. {
  39. _config = config;
  40. var operateController = new FlowContent( config);
  41. _writeTaskFactory = new WriteTaskFactory( config, operateController);
  42. _changeStateFactory = new ChangeStateFactory( config);
  43. }
  44. catch (Exception ex)
  45. {
  46. logger.LogError(ex.ToString());
  47. }
  48. }
  49. public void Start()
  50. {
  51. try
  52. {
  53. _changeTaskStateProcessor = new TimerProcessor("Change_TaskState", 1000);
  54. _changeTaskStateProcessor.OnTimer += _changeStateFactory.Get("Sample").ChangeEquipmentTaskStateEvent;
  55. _changeTaskStateProcessor.Start();
  56. _writeTaskProcessor = new TimerProcessor("WriteTask", 1000);
  57. _writeTaskProcessor.OnTimer += _writeTaskFactory.Get("Sample").WriteTaskToEquipmentEvent;
  58. _writeTaskProcessor.Start();
  59. _changeWashTaskStateProcessor = new TimerProcessor("ChangeWashTaskState", 1000);
  60. _changeWashTaskStateProcessor.OnTimer += _changeStateFactory.Get("Wash").ChangeEquipmentTaskStateEvent;
  61. _changeWashTaskStateProcessor.Start();
  62. _writeWashTaskProcessor = new TimerProcessor("WriteWashTask", 1000);
  63. _writeWashTaskProcessor.OnTimer += _writeTaskFactory.Get("Wash").WriteTaskToEquipmentEvent;
  64. _writeWashTaskProcessor.Start();
  65. _changeBdTaskStateProcessor = new TimerProcessor("ChangeBDTaskState", 1000);
  66. _changeBdTaskStateProcessor.OnTimer += _changeStateFactory.Get("Calibration").ChangeEquipmentTaskStateEvent;
  67. _changeBdTaskStateProcessor.Start();
  68. _writeBdTaskProcessor = new TimerProcessor("WriteBDTask", 1000);
  69. _writeBdTaskProcessor.OnTimer += _writeTaskFactory.Get("Calibration").WriteTaskToEquipmentEvent;
  70. _writeBdTaskProcessor.Start();
  71. _writeSpTaskProcessor = new TimerProcessor("WriteSPTask", 1000);
  72. _writeSpTaskProcessor.OnTimer += _writeTaskFactory.Get("SinglePoint").WriteTaskToEquipmentEvent;
  73. _writeSpTaskProcessor.Start();
  74. _readTemperatureProcessor = new TimerProcessor("ReadTemperature", 2000);
  75. _readTemperatureProcessor.OnTimer += ReadTemperatureProcessor_OnTimer;
  76. _readTemperatureProcessor.Start();
  77. }
  78. catch (Exception ex)
  79. {
  80. logger.LogError(ex.Message);
  81. }
  82. }
  83. private OptClient _client;
  84. private OptClient Client
  85. {
  86. get
  87. {
  88. if (_client is null)
  89. {
  90. _client = new OptClient( _config);
  91. }
  92. return _client;
  93. }
  94. }
  95. public void ReadTemperatureProcessor_OnTimer()
  96. {
  97. try
  98. {
  99. var portArgs = new PortArgs
  100. {
  101. TypeName = "Heat"
  102. };
  103. var currentTemperature = Client.Factory("Heat").Read(portArgs);
  104. Messager.Send("ChangeTemperature", currentTemperature);
  105. }
  106. catch (Exception)
  107. {
  108. throw;
  109. }
  110. }
  111. }
  112. }