using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Event; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aitex.Core.RT.Device; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBase; namespace Aitex.Sorter.RT.SorterCommonFrame.Modules { public class RobotOffsetConfig : Singleton { private string[] scPickOffsets = new string[] { "CarrierInfo.Get.Offset0", "CarrierInfo.Get.Offset1", "CarrierInfo.Get.Offset2", "CarrierInfo.Get.Offset3", "CarrierInfo.Get.Offset4", "CarrierInfo.Get.Offset5", "CarrierInfo.Get.Offset6", "CarrierInfo.Get.Offset7", "CarrierInfo.Get.Offset8", "CarrierInfo.Get.Offset9", "CarrierInfo.Get.Offset10", "CarrierInfo.Get.Offset11", "CarrierInfo.Get.Offset12", "CarrierInfo.Get.Offset13", "CarrierInfo.Get.Offset14", "CarrierInfo.Get.Offset15", "CarrierInfo.Get.Offset16", "CarrierInfo.Get.Offset17", "CarrierInfo.Get.Offset18", "CarrierInfo.Get.Offset19", "CarrierInfo.Get.Offset20", "CarrierInfo.Get.Offset21", "CarrierInfo.Get.Offset22", "CarrierInfo.Get.Offset23", "CarrierInfo.Get.Offset24", "CarrierInfo.Get.Offset25", "CarrierInfo.Get.Offset26", "CarrierInfo.Get.Offset27", "CarrierInfo.Get.Offset28", "CarrierInfo.Get.Offset29", "CarrierInfo.Get.Offset30", "CarrierInfo.Get.Offset31", "CarrierInfo.Get.Offset32", "CarrierInfo.Get.Offset33", "CarrierInfo.Get.Offset34", "CarrierInfo.Get.Offset35", "CarrierInfo.Get.Offset36", "CarrierInfo.Get.Offset37", "CarrierInfo.Get.Offset38", "CarrierInfo.Get.Offset39", "CarrierInfo.Get.Offset40", "CarrierInfo.Get.Offset41", "CarrierInfo.Get.Offset42", "CarrierInfo.Get.Offset43", "CarrierInfo.Get.Offset44", "CarrierInfo.Get.Offset45", "CarrierInfo.Get.Offset46", "CarrierInfo.Get.Offset47", "CarrierInfo.Get.Offset48", "CarrierInfo.Get.Offset49", "CarrierInfo.Get.Offset50", "CarrierInfo.Get.Offset51", "CarrierInfo.Get.Offset52", "CarrierInfo.Get.Offset53", "CarrierInfo.Get.Offset54", "CarrierInfo.Get.Offset55", "CarrierInfo.Get.Offset56", "CarrierInfo.Get.Offset57", "CarrierInfo.Get.Offset58", "CarrierInfo.Get.Offset59", "CarrierInfo.Get.Offset60", "CarrierInfo.Get.Offset61", "CarrierInfo.Get.Offset62", "CarrierInfo.Get.Offset63", "CarrierInfo.Get.Offset64", "CarrierInfo.Get.Offset65", "CarrierInfo.Get.Offset66", "CarrierInfo.Get.Offset67", "CarrierInfo.Get.Offset68", "CarrierInfo.Get.Offset69", "CarrierInfo.Get.Offset70", "CarrierInfo.Get.Offset71", "CarrierInfo.Get.Offset72", "CarrierInfo.Get.Offset73", "CarrierInfo.Get.Offset74", "CarrierInfo.Get.Offset75", "CarrierInfo.Get.Offset76", "CarrierInfo.Get.Offset77", "CarrierInfo.Get.Offset78", "CarrierInfo.Get.Offset79", "CarrierInfo.Get.Offset80", "CarrierInfo.Get.Offset81", "CarrierInfo.Get.Offset82", "CarrierInfo.Get.Offset83", "CarrierInfo.Get.Offset84", "CarrierInfo.Get.Offset85", "CarrierInfo.Get.Offset86", "CarrierInfo.Get.Offset87", "CarrierInfo.Get.Offset88", "CarrierInfo.Get.Offset89", "CarrierInfo.Get.Offset90", "CarrierInfo.Get.Offset91", "CarrierInfo.Get.Offset92", "CarrierInfo.Get.Offset93", "CarrierInfo.Get.Offset94", "CarrierInfo.Get.Offset95", "CarrierInfo.Get.Offset96", "CarrierInfo.Get.Offset97", "CarrierInfo.Get.Offset98", "CarrierInfo.Get.Offset99", "CarrierInfo.Get.Offset100", }; private string[] scPlaceOffsets = new string[] { "CarrierInfo.Put.Offset0", "CarrierInfo.Put.Offset1", "CarrierInfo.Put.Offset2", "CarrierInfo.Put.Offset3", "CarrierInfo.Put.Offset4", "CarrierInfo.Put.Offset5", "CarrierInfo.Put.Offset6", "CarrierInfo.Put.Offset7", "CarrierInfo.Put.Offset8", "CarrierInfo.Put.Offset9", "CarrierInfo.Put.Offset10", "CarrierInfo.Put.Offset11", "CarrierInfo.Put.Offset12", "CarrierInfo.Put.Offset13", "CarrierInfo.Put.Offset14", "CarrierInfo.Put.Offset15", "CarrierInfo.Put.Offset16", "CarrierInfo.Put.Offset17", "CarrierInfo.Put.Offset18", "CarrierInfo.Put.Offset19", "CarrierInfo.Put.Offset20", "CarrierInfo.Put.Offset21", "CarrierInfo.Put.Offset22", "CarrierInfo.Put.Offset23", "CarrierInfo.Put.Offset24", "CarrierInfo.Put.Offset25", "CarrierInfo.Put.Offset26", "CarrierInfo.Put.Offset27", "CarrierInfo.Put.Offset28", "CarrierInfo.Put.Offset29", "CarrierInfo.Put.Offset30", "CarrierInfo.Put.Offset31", "CarrierInfo.Put.Offset32", "CarrierInfo.Put.Offset33", "CarrierInfo.Put.Offset34", "CarrierInfo.Put.Offset35", "CarrierInfo.Put.Offset36", "CarrierInfo.Put.Offset37", "CarrierInfo.Put.Offset38", "CarrierInfo.Put.Offset39", "CarrierInfo.Put.Offset40", "CarrierInfo.Put.Offset41", "CarrierInfo.Put.Offset42", "CarrierInfo.Put.Offset43", "CarrierInfo.Put.Offset44", "CarrierInfo.Put.Offset45", "CarrierInfo.Put.Offset46", "CarrierInfo.Put.Offset47", "CarrierInfo.Put.Offset48", "CarrierInfo.Put.Offset49", "CarrierInfo.Put.Offset50", "CarrierInfo.Put.Offset51", "CarrierInfo.Put.Offset52", "CarrierInfo.Put.Offset53", "CarrierInfo.Put.Offset54", "CarrierInfo.Put.Offset55", "CarrierInfo.Put.Offset56", "CarrierInfo.Put.Offset57", "CarrierInfo.Put.Offset58", "CarrierInfo.Put.Offset59", "CarrierInfo.Put.Offset60", "CarrierInfo.Put.Offset61", "CarrierInfo.Put.Offset62", "CarrierInfo.Put.Offset63", "CarrierInfo.Put.Offset64", "CarrierInfo.Put.Offset65", "CarrierInfo.Put.Offset66", "CarrierInfo.Put.Offset67", "CarrierInfo.Put.Offset68", "CarrierInfo.Put.Offset69", "CarrierInfo.Put.Offset70", "CarrierInfo.Put.Offset71", "CarrierInfo.Put.Offset72", "CarrierInfo.Put.Offset73", "CarrierInfo.Put.Offset74", "CarrierInfo.Put.Offset75", "CarrierInfo.Put.Offset76", "CarrierInfo.Put.Offset77", "CarrierInfo.Put.Offset78", "CarrierInfo.Put.Offset79", "CarrierInfo.Put.Offset80", "CarrierInfo.Put.Offset81", "CarrierInfo.Put.Offset82", "CarrierInfo.Put.Offset83", "CarrierInfo.Put.Offset84", "CarrierInfo.Put.Offset85", "CarrierInfo.Put.Offset86", "CarrierInfo.Put.Offset87", "CarrierInfo.Put.Offset88", "CarrierInfo.Put.Offset89", "CarrierInfo.Put.Offset90", "CarrierInfo.Put.Offset91", "CarrierInfo.Put.Offset92", "CarrierInfo.Put.Offset93", "CarrierInfo.Put.Offset94", "CarrierInfo.Put.Offset95", "CarrierInfo.Put.Offset96", "CarrierInfo.Put.Offset97", "CarrierInfo.Put.Offset98", "CarrierInfo.Put.Offset99", "CarrierInfo.Put.Offset100", }; private Dictionary> _offsets = new Dictionary>(); public bool GetPickOffset(ModuleName chamber, ref int x, ref int y, ref int z, out string reason) { x = 0; y = 0; z = 0; reason = ""; if (chamber == ModuleName.Aligner || chamber == ModuleName.TurnOverStation) return true; if (!ModuleHelper.IsLoadPort(chamber)) return true; var lp = DEVICE.GetDevice(chamber.ToString()); if (lp == null) return true; int offsetindex = lp.InfoPadCarrierIndex; if (offsetindex < 0 || offsetindex >= scPlaceOffsets.Length) offsetindex = 0; string scNameType = scPickOffsets[offsetindex]; if(SC.ContainsItem($"CarrierInfo.Carrier{offsetindex}.GetOffset")) { scNameType = $"CarrierInfo.Carrier{offsetindex}.GetOffset"; } if (!SC.ContainsItem(scNameType)) { reason = $"Not found {chamber} foup type system config item"; return false; } string type = SC.GetStringValue(scNameType); if (string.IsNullOrEmpty(type.Trim())) { reason = $"{chamber} foup type system config can not be empty"; return false; } string[] offs = type.Split(','); if (offs.Length < 3) return false; int value; if (!int.TryParse(offs[0], out value)) return false; x = value; if (!int.TryParse(offs[1], out value)) return false; y = value; if (!int.TryParse(offs[2], out value)) return false; z = value; return true; } public bool GetPlaceOffset(ModuleName chamber, ref int x, ref int y, ref int z, out string reason) { x = 0; y = 0; z = 0; reason = ""; if (chamber == ModuleName.Aligner || chamber == ModuleName.TurnOverStation) return true; var lp = DEVICE.GetDevice(chamber.ToString()); if (lp == null) return true; int offsetindex = lp.InfoPadCarrierIndex; if (offsetindex < 0 || offsetindex>= scPlaceOffsets.Length) offsetindex = 0; string scNameType = scPlaceOffsets[offsetindex]; if(SC.ContainsItem($"CarrierInfo.Carrier{offsetindex}.PutOffset")) { scNameType = $"CarrierInfo.Carrier{offsetindex}.PutOffset"; } if (!SC.ContainsItem(scNameType)) { reason = $"Not found {chamber} foup type system config item"; return false; } string type = SC.GetStringValue(scNameType); if (string.IsNullOrEmpty(type.Trim())) { reason = $"{chamber} foup type system config can not be empty"; return false; } string[] offs = type.Split(','); if (offs.Length < 3) return false; int value; if (!int.TryParse(offs[0], out value)) return false; x = value; if (!int.TryParse(offs[1], out value)) return false; y = value; if (!int.TryParse(offs[2], out value)) return false; z = value; return true; } } }