using Aitex.Core.Common; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.IOCore; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.ToolLayout; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace PunkHPX8_RT.Devices.EFEM { public class DummyDevice { #region 常量 private const string CASSETE_200_PRESENT = "Cassete200Present"; private const string CASSETE_150_PRESENT = "Cassete150Present"; private const string CASSETE_100_PRESENT = "Cassete100Present"; #endregion #region 内部变量 DummyCassetteItem _dummyItem; /// /// 变量是否初始化字典 /// private Dictionary _variableInitializeDic = new Dictionary(); /// /// /// private ModuleName _module; /// /// 尺寸 /// private WaferSize _waferSize; /// /// 是否存在Cassete /// private bool _hasCassete = true; #endregion #region 属性 /// /// 尺寸 /// public WaferSize WaferSize { get { return _waferSize; } } /// /// 是否存在Cassete /// public bool HasCassette { get { return _hasCassete; } } /// /// 最大Slot数量 /// public int MaxSlotNumber { get; internal set; } #endregion /// /// 构造函数 /// /// public DummyDevice(ModuleName moduleName) { _module = moduleName; InitializeData(); DATA.Subscribe($"{_module}.CassettePlaced", () => true, SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{_module}.WaferSize", () => WaferSize.ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB); } /// /// 初始化数据 /// private void InitializeData() { int dummyWaferSize = SC.GetValue($"EFEM.{_module.ToString()}WaferSize"); _waferSize = (WaferSize)dummyWaferSize; _dummyItem = DummyCasseteItemManager.Instance.GetDummyCassetteItem(_module.ToString()); WaferManager.Instance.SubscribeLocation(_module, _dummyItem.MaxNumberOfSlots); MaxSlotNumber = _dummyItem.MaxNumberOfSlots; } } }