using System; using Aitex.Core.RT.Log; using Aitex.Core.RT.Event; using Aitex.Core.RT.DataCenter; using Aitex.Core.Util; using Aitex.Sorter.Common; using Aitex.Core.RT.Device; using MECF.Framework.Common.Communications; using MECF.Framework.Common.SubstrateTrackings; using System.Collections.Generic; using Aitex.Core.RT.SCCore; using System.IO.Ports; using System.Threading; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.AlignersBase; using Aitex.Core.Common; using Aitex.Core.RT.Device.Unit; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots; using Aitex.Core.RT.OperationCenter; using System.Diagnostics; namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.HonghuAligners { public class FuqiAlignerSmec : FuqiAligner { public FuqiAlignerSmec(string module, string name, string scRoot, int alignertype = 0) :base(module,name,scRoot,alignertype) { } public FuqiAlignerSmec(string module, string name, string scRoot, IoSensor[] dis,IoTrigger[] dos) : base(module, name, scRoot,dis,dos) { } public FuqiAlignerSmec(string module, string name, string scRoot, IoSensor[] dis, IoTrigger[] dos,WaferSize[] wsizes=null) : base(module, name, scRoot, dis, dos, wsizes) { } protected override bool fStartInit(object[] param) { lock (_locker) { _lstHandler.Clear(); } _connection.ForceClear(); lock (_locker) { _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetUseNewCommand)); _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.Reset)); _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetWIDReaderOff)); _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetVacuumOnAfterAlign)); if (SC.ContainsItem($"{_scRoot}.{Name}.CenterAndNotch") && SC.GetValue($"{_scRoot}.{Name}.CenterAndNotch")) _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetCenterAndNotch)); else _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetOnlyNotch)); if (_isEnableTwiceAdjustment) _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetAdjustTwice)); else _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetAdjustFirstTime)); _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestRecipe)); _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestPlace)); } _timerActionMonitor.Restart(); return true; } protected override bool fReset(object[] param) { if (base.fReset(param)) { lock (_locker) { _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestRecipe)); } return true; } return false; } } }