123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using Aitex.Core.Util;
- using MECF.Framework.Common.Device.Bases;
- using MECF.Framework.Common.Equipment;
- using CyberX8_RT.Devices.EFEM;
- using CyberX8_RT.Modules;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using MECF.Framework.Common.IOCore;
- namespace CyberX8_RT.Devices.SignalLight
- {
- public class SunWaySignalTower : SignalTowerBase
- {
- #region 常量
- private const string BUZZER = "Buzzer";
- private const string RED_LIGHT = "RedLight";
- private const string YELLOW_LIGHT = "YellowLight";
- private const string GREEN_LIGHT = "GreenLight";
- private const string BLUE_LIGHT = "BlueLight";
- #endregion
- private EfemBase _efem;
- private List<SunWaySignalLight> _lights = new List<SunWaySignalLight>();
- /// <summary>
- /// 变量是否初始化字典
- /// </summary>
- private Dictionary<string, bool> _variableInitializeDic = new Dictionary<string, bool>();
- private Dictionary<string, bool> _lightValueDic = new Dictionary<string, bool>();
- public SunWaySignalTower(string module, string name) : base("", "")
- {
- base.Module = module;
- base.Name = name;
- base.Display = name;
- base.DeviceID = "";
- }
- public override bool Initialize()
- {
- base.Initialize();
- if (_efem == null && Singleton<RouteManager>.Instance.EFEM != null)
- {
- _efem = Singleton<RouteManager>.Instance.EFEM.EfemDevice;
- }
- CustomSignalTower();
- SubscriptionAction();
- return true;
- }
- private void SubscriptionAction()
- {
- IOSubscribeUpdateVariable(BUZZER);
- IOSubscribeUpdateVariable(RED_LIGHT);
- IOSubscribeUpdateVariable(YELLOW_LIGHT);
- IOSubscribeUpdateVariable(GREEN_LIGHT);
- IOSubscribeUpdateVariable(BLUE_LIGHT);
- }
- /// <summary>
- /// 订阅IO变量
- /// </summary>
- /// <param name="variable"></param>
- private void IOSubscribeUpdateVariable(string variable)
- {
- _variableInitializeDic[variable] = false;
- _lightValueDic[variable] = false;
- IOModuleManager.Instance.SubscribeModuleVariable("LightTower", variable, UpdateVariableValue);
- }
- /// 更新变量数值
- /// </summary>
- /// <param name="variable"></param>
- /// <param name="value"></param>
- private void UpdateVariableValue(string variable, object value)
- {
- if (_lightValueDic.ContainsKey(variable))
- {
- _lightValueDic[variable] = (bool)value;
- }
- }
- //重新连接EFEM之后,需要重置灯塔
- public void ResetData()
- {
- foreach (var rorzeSingalLight in _lights)
- {
- rorzeSingalLight.ResetData();
- }
- }
- public override SignalLightBase CreateLight(MECF.Framework.Common.Device.Bases.LightType type)
- {
- var light = new SunWaySignalLight(ModuleName.System.ToString(), $"SignalLight{type}", _efem)
- { Type = type };
- _lights.Add(light);
- return light;
- }
- }
- }
|