using System; using System.IO; using Aitex.Common.Util; using Aitex.Core.RT.ConfigCenter; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.DataCollection; using Aitex.Core.RT.DBCore; using Aitex.Core.RT.Event; using Aitex.Core.RT.Log; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.RecipeCenter; using Aitex.Core.Util; using Aitex.Core.WCF; using MECF.Framework.Common.Account; using MECF.Framework.Common.IOCore; using MECF.Framework.Common.RecipeCenter; using MECF.Framework.Common.SCCore; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.Core.Applications; using MECF.Framework.RT.Core.Backend; using MECF.Framework.RT.Core.IoProviders; using CyberX8_RT.Modules; using CyberX8_RT.Backends; using MECF.Framework.Common.DataCenter; using Aitex.Core.RT.SCCore; using CyberX8_Core; using SecsGem.Core.Application; using MECF.Framework.Common.WaferHolder; using System.Windows.Documents; using MECF.Framework.Common.TwinCat; using MECF.Framework.Common.Beckhoff.Station; using MECF.Framework.Common.Beckhoff.AxisProvider; using MECF.Framework.Common.Layout; using MECF.Framework.Common.Device.LinMot; using MECF.Framework.Common.Device.ResistivityProbe; using MECF.Framework.Common.Device.TemperatureController; using MECF.Framework.Common.Device.PowerSupplier; using MECF.Framework.Common.Persistent; using MECF.Framework.Common.ToolLayout; using System.Collections; using MECF.Framework.Common.Device.BarcodeReader; using System.Threading; using System.Diagnostics; using MECF.Framework.Common.Alarm; using MECF.Framework.Common.Device.Festo; using MECF.Framework.Common.Device.Galil; namespace CyberX8_RT.Instances { class ToolLoader : IRtLoader { public void Initialize() { LogDefineManager.Initialize(PathManager.GetCfgDir() + "LogDefine.json"); Singleton.Instance.Initialize(); WcfServiceManager.Instance.Initialize(new Type[] { typeof (RecipeService),typeof (QueryDataService),typeof(WaferHolderDataService) }); Singleton.Instance.Initialize(); Singleton.Instance.Initialize( System.Configuration.ConfigurationManager.ConnectionStrings["PostgreSQL"].ConnectionString , RtInstance.DatabaseName , PathManager.GetCfgDir() + "DBModel.sql"); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "EventDefine.xml"); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "System.sccfg"); AccountExManager.Instance.Initialize(true); ToolLayoutConfigManager.Instance.Initialize(); WaferManager.Instance.Initialize(); WaferHolderManager.Instance.Initialize(); MaterialTrackerManager.Instance.Initialize(); ProcessLayoutManager.Instance.Initialize(); BeckhoffAxisProviderManager.Instance.Initialize(); BeckhoffStationLocationManager.Instance.Initialize(); BeckhoffManager.Instance.Initialize(); GalilControllerCfgManager.Instance.Initialize(); LinMotDeviceConfigManager.Instance.Initialize(); ThorntonConfigManager.Instance.Initialize(); TemperatureConfigManager.Instance.Initialize(); BarcodeReaderConfigManager.Instance.Initialize(); PowerSupplierDeviceConfigManager.Instance.Initialize(); IOModuleManager.Instance.Initialize(); //TwincatAdoManager.Instance.Initialize(); PersistentManager.Instance.Initialize(); AlarmListManager.Instance.Initialize(); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(); SecGemApplication.Instance.Initialize(PathManager.GetCfgDir() + "EquipmentVariables.xml", 0); SecGemApplication.Instance.EquipmentCommand = Singleton.Instance; DataCollectionManager.Instance.Initialize(RtInstance.DatabaseName); RtSystemManager.Instance.AddCustomBackend("SC", new BackendSCConfigView()); RtSystemManager.Instance.AddCustomBackend("FSM", new FSMView()); Singleton.Instance.Initialize(); Singleton.Instance.FireEvent += InstanceOnOnEvent; DATA.Subscribe("GetRTPath", () => AppDomain.CurrentDomain.BaseDirectory, SubscriptionAttribute.FLAG.IgnoreSaveDB); } private void InstanceOnOnEvent(EventItem obj) { if (obj.Level != EventLevel.Alarm) { SecGemApplication.Instance.NotifyEvent(obj.EventEnum, obj.DVID, obj.ObjDVID); } else { SecGemApplication.Instance.NotifyAlarm($"{obj.Source}.{obj.EventEnum}", obj.DVID, obj.ObjDVID); } } public void Terminate() { Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); IoProviderManager.Instance.Terminate(); Singleton.Instance.Terminate(); DataCollectionManager.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); } } }