SRDDeviceTimer.cs 2.8 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.SRD
  11. {
  12. public class SRDDeviceTimer : BaseDevice, IDevice
  13. {
  14. #region 常量
  15. private const string SRD = "Srd";
  16. #endregion
  17. #region 内部变量
  18. private PeriodicJob _periodicJob;
  19. private JetAxisBase _srd1ArmAxis;
  20. private JetAxisBase _srd1RotationAxis;
  21. private JetAxisBase _srd2ArmAxis;
  22. private JetAxisBase _srd2RotationAxis;
  23. private SrdCommonDevice _srd1CommonDevice;
  24. private SrdCommonDevice _srd2CommonDevice;
  25. #endregion
  26. /// <summary>
  27. /// 构造函数
  28. /// </summary>
  29. public SRDDeviceTimer():base(SRD,SRD,SRD,SRD)
  30. {
  31. _periodicJob = new PeriodicJob(20, OnTimer, $"{SRD}.OnTimer", false);
  32. }
  33. /// <summary>
  34. /// 初始化
  35. /// </summary>
  36. /// <returns></returns>
  37. public bool Initialize()
  38. {
  39. _srd1ArmAxis=DEVICE.GetDevice<JetAxisBase>($"{ModuleName.SRD1}.Arm");
  40. _srd1RotationAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.SRD1}.Rotation");
  41. _srd2ArmAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.SRD2}.Arm");
  42. _srd2RotationAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.SRD2}.Rotation");
  43. _srd1CommonDevice = DEVICE.GetDevice<SrdCommonDevice>($"{ModuleName.SRD1}.Common");
  44. _srd2CommonDevice = DEVICE.GetDevice<SrdCommonDevice>($"{ModuleName.SRD2}.Common");
  45. _periodicJob.Start();
  46. return true;
  47. }
  48. public void Monitor()
  49. {
  50. }
  51. public void Reset()
  52. {
  53. }
  54. public void Terminate()
  55. {
  56. _periodicJob.Stop();
  57. }
  58. /// <summary>
  59. /// 定时器执行
  60. /// </summary>
  61. /// <returns></returns>
  62. private bool OnTimer()
  63. {
  64. if (_srd1ArmAxis != null)
  65. {
  66. _srd1ArmAxis.OnTimer();
  67. }
  68. if(_srd1RotationAxis!=null)
  69. {
  70. _srd1RotationAxis.OnTimer();
  71. }
  72. if (_srd2ArmAxis != null)
  73. {
  74. _srd2ArmAxis.OnTimer();
  75. }
  76. if (_srd2RotationAxis != null)
  77. {
  78. _srd2RotationAxis.OnTimer();
  79. }
  80. if(_srd1CommonDevice != null)
  81. {
  82. _srd1CommonDevice.OnTimer();
  83. }
  84. if (_srd2CommonDevice!=null)
  85. {
  86. _srd2CommonDevice.OnTimer();
  87. }
  88. return true;
  89. }
  90. }
  91. }