using Aitex.Core.Util; using MECF.Framework.Common.Device.Bases; using MECF.Framework.Common.Equipment; using System; using System.Collections.Generic; namespace Venus_RT.Devices { class VenusSignalLight : SignalLightBase { public MECF.Framework.Common.Device.Bases.LightType Type { get; set; } //public Efem EfemController { get; set; } private F_TRIG _trigError = new F_TRIG(); private bool _isInit; private TowerLightStatus _preState = TowerLightStatus.Unknown; public VenusSignalLight(string module, string name) : base(module, name) { _isInit = true; } protected override void SetOn() { SetLight(TowerLightStatus.On); } protected override void SetOff() { SetLight(TowerLightStatus.Off); } protected override void SetBlinking(bool token) { SetLight(TowerLightStatus.Blinking); } private bool SetSignalLight(MECF.Framework.Common.Device.Bases.LightType type, TowerLightStatus setpoint) { //Venus_RT.LightType venusType; //switch (type) //{ // case MECF.Framework.Common.Device.Bases.LightType.Red: // venusType = LightType.RED; // break; // case MECF.Framework.Common.Device.Bases.LightType.Yellow: // venusType = LightType.YELLOW; // break; // case MECF.Framework.Common.Device.Bases.LightType.Green: // venusType = LightType.GREEN; // break; // case MECF.Framework.Common.Device.Bases.LightType.White: // venusType = LightType.WHITE; // break; // case MECF.Framework.Common.Device.Bases.LightType.Blue: // venusType = LightType.BLUE; // break; // case MECF.Framework.Common.Device.Bases.LightType.Buzzer: // case MECF.Framework.Common.Device.Bases.LightType.Buzzer1: // venusType = LightType.BUZZER1; // break; // default: // venusType = LightType.BUZZER1; // break; //} //Venus_RT.LightStatus venusSetpoint; //switch (setpoint) //{ // case TowerLightStatus.Blinking: // venusSetpoint = LightStatus.BLINK; // break; // case TowerLightStatus.On: // venusSetpoint = LightStatus.ON; // break; // case TowerLightStatus.Off: // venusSetpoint = LightStatus.OFF; // break; // default: // venusSetpoint = LightStatus.OFF; // break; //} //EfemController.SetLamp(venusType, venusSetpoint); return true; } private void SetLight(TowerLightStatus setpoint) { try { if (setpoint != _preState || _isInit) { _trigError.CLK = SetSignalLight(Type, setpoint); if (_trigError.Q) { //EV.PostWarningLog(Module, $"Set {Type} signal light {setpoint} error, {reason}"); } if (_trigError.M) { _isInit = false; _preState = setpoint; } } } catch (Exception ex) { //LOG.Write(ex); } } public void ResetData() { _isInit = true; } public override void Reset() { _trigError.RST = true; base.Reset(); } } public class VenusSignalTower : SignalTowerBase { //private Efem _efem; private List _lights = new List(); public VenusSignalTower(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) //{ // _efem = Singleton.Instance.EFEM.EfemDevice; //} CustomSignalTower(); return true; } //重新连接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 VenusSignalLight(ModuleName.System.ToString(), $"SignalLight{type}"); //{ Type = type, EfemController = _efem }; _lights.Add(light); return light; } } }