using Aitex.Core.RT.Device;
using Aitex.Core.Util;
using CyberX8_RT.Devices.AXIS;
using MECF.Framework.Common.Equipment;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CyberX8_RT.Devices.SRD
{
public class SRDDeviceTimer : BaseDevice, IDevice
{
#region 常量
private const string SRD = "Srd";
#endregion
#region 内部变量
private PeriodicJob _periodicJob;
private JetAxisBase _srd1ArmAxis;
private JetAxisBase _srd1RotationAxis;
private JetAxisBase _srd2ArmAxis;
private JetAxisBase _srd2RotationAxis;
private SrdCommonDevice _srd1CommonDevice;
private SrdCommonDevice _srd2CommonDevice;
#endregion
///
/// 构造函数
///
public SRDDeviceTimer():base(SRD,SRD,SRD,SRD)
{
_periodicJob = new PeriodicJob(20, OnTimer, $"{SRD}.OnTimer", false);
}
///
/// 初始化
///
///
public bool Initialize()
{
_srd1ArmAxis=DEVICE.GetDevice($"{ModuleName.SRD1}.Arm");
_srd1RotationAxis = DEVICE.GetDevice($"{ModuleName.SRD1}.Rotation");
_srd2ArmAxis = DEVICE.GetDevice($"{ModuleName.SRD2}.Arm");
_srd2RotationAxis = DEVICE.GetDevice($"{ModuleName.SRD2}.Rotation");
_srd1CommonDevice = DEVICE.GetDevice($"{ModuleName.SRD1}.Common");
_srd2CommonDevice = DEVICE.GetDevice($"{ModuleName.SRD2}.Common");
_periodicJob.Start();
return true;
}
public void Monitor()
{
}
public void Reset()
{
}
public void Terminate()
{
_periodicJob.Stop();
}
///
/// 定时器执行
///
///
private bool OnTimer()
{
if (_srd1ArmAxis != null)
{
_srd1ArmAxis.OnTimer();
}
if(_srd1RotationAxis!=null)
{
_srd1RotationAxis.OnTimer();
}
if (_srd2ArmAxis != null)
{
_srd2ArmAxis.OnTimer();
}
if (_srd2RotationAxis != null)
{
_srd2RotationAxis.OnTimer();
}
if(_srd1CommonDevice != null)
{
_srd1CommonDevice.OnTimer();
}
if (_srd2CommonDevice!=null)
{
_srd2CommonDevice.OnTimer();
}
return true;
}
}
}