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;
}
}
}