using Aitex.Core.RT.Device;
using Aitex.Core.RT.IOCore;
using Aitex.Core.Util;
using Common.DataCenter;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.SubstrateTrackings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace athosRT.Devices.IODevices
{
public enum IOAlignerStatus
{
Idle,
Busy
}
///
/// io机械Aligner的实现 用于对数据的实现
/// 主要目的是 实现对aligner的wafermanager申明
/// 实现对aligner 准入io的记录
///
public class IoAligner : BaseDevice, IDevice
{
private readonly DIAccessor _Robot2AlignerEnable;
private readonly DIAccessor _RobotNotExtend;
private IOAlignerStatus status => _RobotNotExtend.Value ? IOAlignerStatus.Idle: IOAlignerStatus.Busy;
public IoAligner(string module, XmlElement node, string ioModule = "")
{
base.Module = module;
base.Name = node.GetAttribute("id");
base.Display = node.GetAttribute("display");
base.DeviceID = node.GetAttribute("schematicId");
_Robot2AlignerEnable = ParseDiNode("diRobot2AlignerEnable", node, ioModule);
_RobotNotExtend = ParseDiNode("diRobotNotExtend", node, ioModule);
Singleton.Instance.SubscribeLocation(ModuleName.Aligner,1);
}
public bool Initialize()
{
DATA.Subscribe($"{Module}.{Name}.Robot2AlignerEnable", ()=>_Robot2AlignerEnable.Value);
DATA.Subscribe($"{Module}.{Name}.RobotNotExtend", ()=> _RobotNotExtend.Value);
DATA.Subscribe($"{Name}.Status",()=> status.ToString());
return true;
}
public void Monitor()
{
}
public void Reset()
{
}
public void Terminate()
{
}
}
}