PufDeviceTimer.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.Util;
  3. using CyberX8_RT.Devices.AXIS;
  4. using MECF.Framework.Common.Equipment;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace CyberX8_RT.Devices.PUF
  11. {
  12. public class PufDeviceTimer : BaseDevice, IDevice
  13. {
  14. #region 内部变量
  15. private PeriodicJob _periodicJob;
  16. private JetAxisBase _puf1FlipAxis;
  17. private JetAxisBase _puf1RotationAxis;
  18. private JetAxisBase _puf1VerticalAxis;
  19. private JetAxisBase _puf2FlipAxis;
  20. private JetAxisBase _puf2RotationAxis;
  21. private JetAxisBase _puf2VerticalAxis;
  22. #endregion
  23. /// <summary>
  24. /// 构造函数
  25. /// </summary>
  26. public PufDeviceTimer():base("DualPuf", "DualPuf", "DualPuf", "DualPuf")
  27. {
  28. _periodicJob = new PeriodicJob(20, OnTimer, "DualPuf.OnTimer", false);
  29. }
  30. /// <summary>
  31. /// 初始化
  32. /// </summary>
  33. /// <returns></returns>
  34. public bool Initialize()
  35. {
  36. _puf1FlipAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Flip");
  37. _puf1RotationAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Rotation");
  38. _puf1VerticalAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Vertical");
  39. _puf2FlipAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF2}.Flip");
  40. _puf2RotationAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF2}.Rotation");
  41. _puf2VerticalAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF2}.Vertical");
  42. _periodicJob.Start();
  43. return true;
  44. }
  45. public void Monitor()
  46. {
  47. }
  48. public void Reset()
  49. {
  50. }
  51. /// <summary>
  52. /// 停止
  53. /// </summary>
  54. public void Terminate()
  55. {
  56. _periodicJob.Stop();
  57. }
  58. /// <summary>
  59. /// 定时器执行
  60. /// </summary>
  61. /// <returns></returns>
  62. private bool OnTimer()
  63. {
  64. if (_puf1FlipAxis != null)
  65. {
  66. _puf1FlipAxis.OnTimer();
  67. }
  68. if (_puf1RotationAxis != null)
  69. {
  70. _puf1RotationAxis.OnTimer();
  71. }
  72. if (_puf1VerticalAxis != null)
  73. {
  74. _puf1VerticalAxis.OnTimer();
  75. }
  76. if (_puf2FlipAxis != null)
  77. {
  78. _puf2FlipAxis.OnTimer();
  79. }
  80. if (_puf2RotationAxis != null)
  81. {
  82. _puf2RotationAxis.OnTimer();
  83. }
  84. if (_puf2VerticalAxis != null)
  85. {
  86. _puf2VerticalAxis.OnTimer();
  87. }
  88. return true;
  89. }
  90. }
  91. }