using Aitex.Core.RT.Device; using Aitex.Core.Util; using CyberX8_RT.Devices.AXIS; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Devices.Loader { public class LoaderDeviceTimer : BaseDevice, IDevice { #region 内部变量 private PeriodicJob _periodicJob; private JetAxisBase _shuttleAAxis; private JetAxisBase _shuttleBAxis; private JetAxisBase _crsAAxis; private JetAxisBase _crsBAxis; private JetAxisBase _tiltAAxis; private JetAxisBase _tiltBAxis; private JetAxisBase _rotationAxis; private LoaderCommonDevice _commonDevice; private LoaderSideDevice _sideADevice; private LoaderSideDevice _sideBDevice; #endregion /// /// 构造函数 /// public LoaderDeviceTimer(string module) : base(module,module,module,module) { _periodicJob = new PeriodicJob(20, OnTimer, $"{module}.OnTimer", false); } /// /// 初始化 /// /// public bool Initialize() { _shuttleAAxis = DEVICE.GetDevice($"{Module}.ShuttleA"); _shuttleBAxis = DEVICE.GetDevice($"{Module}.ShuttleB"); _tiltAAxis = DEVICE.GetDevice($"{Module}.TiltA"); _tiltBAxis = DEVICE.GetDevice($"{Module}.TiltB"); _crsAAxis = DEVICE.GetDevice($"{Module}.LSA"); _crsBAxis = DEVICE.GetDevice($"{Module}.LSB"); _rotationAxis = DEVICE.GetDevice($"{Module}.Rotation"); _commonDevice = DEVICE.GetDevice($"{Module}.Common"); _sideADevice = DEVICE.GetDevice($"{Module}.SideA"); _sideBDevice = DEVICE.GetDevice($"{Module}.SideB"); _periodicJob.Start(); return true; } public void Monitor() { } public void Reset() { } public void Terminate() { _periodicJob.Stop(); } /// /// 定时器执行 /// /// private bool OnTimer() { _shuttleAAxis.OnTimer(); _shuttleBAxis.OnTimer(); _crsAAxis.OnTimer(); _crsBAxis.OnTimer(); _tiltAAxis.OnTimer(); _tiltBAxis.OnTimer(); _rotationAxis.OnTimer(); _commonDevice.OnTimer(); _sideADevice.OnTimer(); _sideBDevice.OnTimer(); return true; } } }