PufDeviceTimer.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. #endregion
  19. /// <summary>
  20. /// 构造函数
  21. /// </summary>
  22. public PufDeviceTimer():base("DualPuf", "DualPuf", "DualPuf", "DualPuf")
  23. {
  24. _periodicJob = new PeriodicJob(20, OnTimer, "DualPuf.OnTimer", false);
  25. }
  26. /// <summary>
  27. /// 初始化
  28. /// </summary>
  29. /// <returns></returns>
  30. public bool Initialize()
  31. {
  32. _puf1FlipAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Flip");
  33. _puf1RotationAxis = DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Rotation");
  34. _periodicJob.Start();
  35. return true;
  36. }
  37. public void Monitor()
  38. {
  39. }
  40. public void Reset()
  41. {
  42. }
  43. /// <summary>
  44. /// 停止
  45. /// </summary>
  46. public void Terminate()
  47. {
  48. _periodicJob.Stop();
  49. }
  50. /// <summary>
  51. /// 定时器执行
  52. /// </summary>
  53. /// <returns></returns>
  54. private bool OnTimer()
  55. {
  56. if (_puf1FlipAxis != null)
  57. {
  58. _puf1FlipAxis.OnTimer();
  59. }
  60. if (_puf1RotationAxis != null)
  61. {
  62. _puf1RotationAxis.OnTimer();
  63. }
  64. return true;
  65. }
  66. }
  67. }