123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using Aitex.Core.Common;
- using Aitex.Core.Util;
- using MECF.Framework.Common.Equipment;
- using MECF.Framework.Common.SubstrateTrackings;
- using MECF.Framework.Common.ToolLayout;
- using PunkHPX8_RT.Schedulers.Aligner;
- using PunkHPX8_RT.Schedulers.EfemRobot;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using PunkHPX8_RT.Schedulers.Srd;
- using PunkHPX8_RT.Dispatch;
- using PunkHPX8_RT.Modules;
- using Aitex.Core.RT.SCCore;
- namespace PunkHPX8_RT.Schedulers
- {
- public class SchedulerManager : Singleton<SchedulerManager>
- {
- #region 内部变量
- /// <summary>
- /// 模块类型集合字典
- /// </summary>
- private Dictionary<ModuleType, List<SchedulerModule>> _scheduleModuleTypeDic = new Dictionary<ModuleType, List<SchedulerModule>>();
- /// <summary>
- /// 模块字典
- /// </summary>
- private Dictionary<ModuleName, SchedulerModule> _scheduleModuleDic = new Dictionary<ModuleName, SchedulerModule>();
- /// <summary>
- /// 是否启用QDR时间轴
- /// </summary>
- private bool _isQdrCheckConflict = false;
- #endregion
- #region 属性
- /// <summary>
- /// 是否启用QDR时间轴
- /// </summary>
- public bool IsQdrCheckConflict { get { return _isQdrCheckConflict; } }
- #endregion
- #region 初始化
- /// <summary>
- /// 初始化
- /// </summary>
- public void Initialize()
- {
- _isQdrCheckConflict = SC.GetValue<bool>("Scheduler.IsQdrCheckConflict");
- AddScheduleModule(ModuleType.EfemRobot, new SchedulerRobot(ModuleName.EfemRobot));
- AddScheduleModule(ModuleType.Aligner, new SchedulerAligner(ModuleName.Aligner1));
- InitializeSchedulerModules(SrdItemManager.Instance.InstalledModules,ModuleType.SRD,typeof(SchedulerSrd));
- }
- /// <summary>
- /// 重置
- /// </summary>
- public void ResetSchedulerModule()
- {
- List<ModuleName> moduleNames = _scheduleModuleDic.Keys.ToList();
- foreach(ModuleName item in moduleNames)
- {
- _scheduleModuleDic[item].ResetTask();
- }
- }
- /// <summary>
- /// 初始化调度Module集合
- /// </summary>
- private void InitializeSchedulerModules(List<string> installedModules,ModuleType moduleType,Type type)
- {
- foreach(string item in installedModules)
- {
- InitializeSchedulerModule(item, moduleType, type);
- }
- }
- /// <summary>
- /// 初始化调度Module
- /// </summary>
- /// <param name="item"></param>
- /// <param name="moduleType"></param>
- /// <param name="type"></param>
- private void InitializeSchedulerModule(string item, ModuleType moduleType, Type type)
- {
- ModuleName moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), item);
- SchedulerModule schedulerModule = (SchedulerModule)System.Activator.CreateInstance(type, moduleName);
- AddScheduleModule(moduleType, schedulerModule);
- }
- /// <summary>
- /// 增加调度模块
- /// </summary>
- /// <param name="moduleType"></param>
- /// <param name="module"></param>
- private void AddScheduleModule(ModuleType moduleType, SchedulerModule module)
- {
- List<SchedulerModule> schedulers = new List<SchedulerModule>();
- if (_scheduleModuleTypeDic.ContainsKey(moduleType))
- {
- schedulers = _scheduleModuleTypeDic[moduleType];
- }
- else
- {
- _scheduleModuleTypeDic[moduleType] = schedulers;
- }
- schedulers.Add(module);
- _scheduleModuleDic[module.Module] = module;
- }
- #endregion
- /// <summary>
- /// 获取调度对象
- /// </summary>
- /// <param name="moduleName"></param>
- /// <returns></returns>
- public SchedulerModule GetScheduler(ModuleName moduleName)
- {
- return _scheduleModuleDic.ContainsKey(moduleName)?_scheduleModuleDic[moduleName]:null;
- }
- /// <summary>
- /// 根据模块类型获取调度模块集合
- /// </summary>
- /// <param name="moduleType"></param>
- /// <returns></returns>
- public List<SchedulerModule> GetModuleTypeScheduleModules(ModuleType moduleType)
- {
- return _scheduleModuleTypeDic.ContainsKey(moduleType) ? _scheduleModuleTypeDic[moduleType]: null;
- }
- }
- }
|