Browse Source

添加KeplerSignaltower功能

lixiang 11 months ago
parent
commit
75dbbd4da8

+ 7 - 6
Venus/Framework/Common/Device/Bases/SignalTowerBase.cs

@@ -2,13 +2,9 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
-using System.Net.Configuration;
 using System.Reflection;
 using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
-using System.Windows.Input;
 using System.Xml.Serialization;
 using Aitex.Common.Util;
 using Aitex.Core.Common.DeviceData;
@@ -17,7 +13,6 @@ using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Event;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
-using Aitex.Core.UI.MVVM;
 using Aitex.Core.Util;
 
 namespace MECF.Framework.Common.Device.Bases
@@ -229,7 +224,13 @@ namespace MECF.Framework.Common.Device.Bases
 
         public bool CustomSignalTower()
         {
-            return CustomSignalTower(PathManager.GetCfgDir() + "SignalTower.xml");
+            string pathFile = PathManager.GetCfgDir() + "_SignalTower.xml";
+            if (!File.Exists(pathFile))
+            {
+                pathFile = PathManager.GetCfgDir() + "SignalTower.xml";
+            }
+            return CustomSignalTower(pathFile);
+            // return CustomSignalTower(PathManager.GetCfgDir() + "SignalTower.xml");
         }
 
         public bool CustomSignalTower(string configPathFile)

+ 7 - 7
Venus/Framework/UICore/DeviceControl/AITSignalTower.xaml

@@ -24,7 +24,7 @@
             </Image.Effect>
             <Image.Style>
                 <Style>
-                    <Setter Property="Image.Opacity"  Value="0.5"/>
+                    <Setter Property="Image.Opacity"  Value="0.2"/>
                     <Style.Triggers>
                         <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsRedLightOn}"  Value="True">
                             <Setter Property="Image.Opacity"  Value="1"/>
@@ -43,7 +43,7 @@
             </Image.Effect>
             <Image.Style>
                 <Style>
-                    <Setter Property="Image.Opacity"  Value="0.5"/>
+                    <Setter Property="Image.Opacity"  Value="0.3"/>
                     <Style.Triggers>
                         <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsYellowLightOn}"  Value="True">
                             <Setter Property="Image.Opacity"  Value="1"/>
@@ -62,7 +62,7 @@
             </Image.Effect>
             <Image.Style>
                 <Style>
-                    <Setter Property="Image.Opacity"  Value="0.5"/>
+                    <Setter Property="Image.Opacity"  Value="0.3"/>
                     <Style.Triggers>
                         <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsGreenLightOn}"  Value="True">
                             <Setter Property="Image.Opacity"  Value="1"/>
@@ -81,9 +81,9 @@
             </Image.Effect>
             <Image.Style>
                 <Style>
-                    <Setter Property="Image.Opacity"  Value="0.5"/>
+                    <Setter Property="Image.Opacity"  Value="0.3"/>
                     <Style.Triggers>
-                        <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsRedLightOn}"  Value="True">
+                        <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsBlueLightOn}"  Value="True">
                             <Setter Property="Image.Opacity"  Value="1"/>
                         </DataTrigger>
                     </Style.Triggers>
@@ -100,9 +100,9 @@
             </Image.Effect>
             <Image.Style>
                 <Style>
-                    <Setter Property="Image.Opacity"  Value="0.5"/>
+                    <Setter Property="Image.Opacity"  Value="0.3"/>
                     <Style.Triggers>
-                        <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsBluzzerLightOn}"  Value="True">
+                        <DataTrigger Binding="{Binding ElementName=signalTower,Path=IsBuzzerOn}"  Value="True">
                             <Setter Property="Image.Opacity"  Value="1"/>
                         </DataTrigger>
                     </Style.Triggers>

+ 1 - 1
Venus/Venus_MainPages/ViewModels/EfemViewModel.cs

@@ -425,7 +425,7 @@ namespace Venus_MainPages.ViewModels
             LLAIsInstalled = allModules.Contains("LLA");
             LLBIsInstalled = allModules.Contains("LLB");
             timer = new DispatcherTimer();
-            timer.Interval = TimeSpan.FromSeconds(0.1);
+            timer.Interval = TimeSpan.FromSeconds(0.5);
             timer.Tick += Timer_Tick;
             //timer.Start();
             EFEMModules.Add(EFEMModule.LLA);

+ 44 - 15
Venus/Venus_MainPages/ViewModels/SignalTowerConfigViewModel.cs

@@ -43,31 +43,60 @@ namespace Venus_MainPages.ViewModels
             _xmlSignalTower=new XmlDocument();
             string contentSignal = QueryDataClient.Instance.Service.GetTypedConfigContent("SignalTower", "");
             _xmlSignalTower.LoadXml(contentSignal);
+            var items = _xmlSignalTower.SelectNodes($"STEvents/STEvent");
+            foreach (var item in items)
+            {
+                XmlElement element = item as XmlElement;
 
+                SignalTowerItem stItem = new SignalTowerItem();
 
-            string content = QueryDataClient.Instance.Service.GetTypedConfigContent("DataGroup", "");
-            XmlDocument xmlContent = new XmlDocument();
-            xmlContent.LoadXml(content);
+                stItem.Name = element.GetAttribute("name");
+                stItem.IsRed = string.Compare(element.GetAttribute("Red"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
+                stItem.IsRedBlinking = string.Compare(element.GetAttribute("Red"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
 
-            
+                stItem.IsYellow = string.Compare(element.GetAttribute("Yellow"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
+                stItem.IsYellowBlinking = string.Compare(element.GetAttribute("Yellow"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
 
-            var groups = xmlContent.SelectNodes($"DataGroupConfig/DataGroup[@name='SignalTower']/DataItem");
+                stItem.IsGreen = string.Compare(element.GetAttribute("Green"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
+                stItem.IsGreenBlinking = string.Compare(element.GetAttribute("Green"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
 
-            List<string> names = new List<string>();
-            foreach (var item in groups)
-            {
-                XmlElement element = item as XmlElement;
+                stItem.IsBlue = string.Compare(element.GetAttribute("Blue"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
+                stItem.IsBlueBlinking = string.Compare(element.GetAttribute("Blue"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
 
-                string name = element.GetAttribute("name");
+                stItem.IsBuzzer = string.Compare(element.GetAttribute("Buzzer"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
+                stItem.IsBuzzerBlinking = string.Compare(element.GetAttribute("Buzzer"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
 
-                names.Add(name);
+                SignalTowerData.Add(stItem);
 
-                if (SignalTowerData.FirstOrDefault(x => x.Name == name) == null)
-                {
-                    SignalTowerData.Add(new SignalTowerItem() { Name = name, });
-                }
             }
 
+
+
+
+
+            //string content = QueryDataClient.Instance.Service.GetTypedConfigContent("DataGroup", "");
+            //XmlDocument xmlContent = new XmlDocument();
+            //xmlContent.LoadXml(content);
+
+            
+
+            //var groups = xmlContent.SelectNodes($"DataGroupConfig/DataGroup[@name='SignalTower']/DataItem");
+
+            //List<string> names = new List<string>();
+            //foreach (var item in groups)
+            //{
+            //    XmlElement element = item as XmlElement;
+
+            //    string name = element.GetAttribute("name");
+
+            //    names.Add(name);
+
+            //    if (SignalTowerData.FirstOrDefault(x => x.Name == name) == null)
+            //    {
+            //        SignalTowerData.Add(new SignalTowerItem() { Name = name, });
+            //    }
+            //}
+
         }
         #endregion
 

+ 2 - 5
Venus/Venus_MainPages/ViewModels/TopViewModel.cs

@@ -12,15 +12,11 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Media;
 using System.Windows.Threading;
 using Venus_Core;
 using Venus_MainPages.Unity;
-using Venus_Themes.UserControls;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -64,7 +60,8 @@ namespace Venus_MainPages.ViewModels
             eEvent.ERR_MATCH,
             eEvent.ERR_RF,
             eEvent.ERR_PENDULUM_VALVE,
-            eEvent.ERR_DEVICE_INFO
+            eEvent.ERR_DEVICE_INFO,
+            eEvent.ERR_DRY_PUMP
         };
         //private PressureType m_PressureType;
         private ConfigType m_ConfigType;

File diff suppressed because it is too large
+ 1 - 1
Venus/Venus_MainPages/Views/TopView.xaml


+ 4 - 4
Venus/Venus_RT/Config/DataGroup.xml

@@ -16,10 +16,10 @@
 		<DataItem name ="System.IsAutoRunning"            Red="Off"      Yellow="Off"       Green="On"  Blue="Off"  Buzzer="Off"/>
 		<DataItem name ="System.IsConnectedWithHost"      Red="Off"      Yellow="Off"       Green="Off" Blue="On"   Buzzer="Off"/>
 		<DataItem name ="System.IsDisconnectWithHost"     Red="Off"      Yellow="Off"       Green="Off" Blue="Off"  Buzzer="Off"/>
-		<DataItem name ="PMA.IsError"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
-		<DataItem name ="PMB.IsError"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
-		<DataItem name ="PMC.IsError"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
-		<DataItem name ="PMD.IsError"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
+		<DataItem name ="PMA.IsAlarm"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
+		<DataItem name ="PMB.IsAlarm"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
+		<DataItem name ="PMC.IsAlarm"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
+		<DataItem name ="PMD.IsAlarm"                     Red="blinking" Yellow="Off"       Green="Off" Blue="Off"  Buzzer="On"/>
 		
 	</DataGroup>
 	<DataGroup name="UserDefine" display="" fix="false">

+ 12 - 26
Venus/Venus_RT/Config/SignalTower.xml

@@ -1,33 +1,19 @@
 <?xml version="1.0" encoding="utf-8" ?>
 
 <STEvents>
-	
-
-	<STEvent name ="PMA.IsInit"                                  Red="Off"      Yellow="On"   Green="Off" Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMA.IsIdle"                                  Red="Off"      Yellow="On"   Green="Off" Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMA.IsBusy"                                  Red="Off"      Yellow="Off"  Green="On"  Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMA.IsAlarm"                                 Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoHeater.ForelineHeater.IsTcDeviation"   Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoHeater.HeaterChamber.IsTcDeviation"    Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.Rf.RfAlarm"                              Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoMfc.MfcGas1.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoMfc.MfcGas2.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoMfc.MfcGas3.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoMfc.MfcGas4.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMA.IoMfc.MfcGas5.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
+	<STEvent name ="TM.IsAlarm"         Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>
+	<STEvent name ="EFEM.IsAlarm"       Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>
+	<STEvent name ="System.IsAlarm"     Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>
 
-	<STEvent name ="PMB.IsInit"                                  Red="Off"      Yellow="On"   Green="Off" Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMB.IsIdle"                                  Red="Off"      Yellow="On"   Green="Off" Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMB.IsBusy"                                  Red="Off"      Yellow="Off"  Green="On"  Blue="Off"  Buzzer="Off"/>
-	<STEvent name ="PMB.IsAlarm"                                 Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoHeater.ForelineHeater.IsTcDeviation"   Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoHeater.HeaterChamber.IsTcDeviation"    Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.Rf.RfAlarm"                              Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoMfc.MfcGas1.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoMfc.MfcGas2.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoMfc.MfcGas3.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoMfc.MfcGas4.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
-	<STEvent name ="PMB.IoMfc.MfcGas5.MfcAlarm"                  Red="On" Yellow="Off" Green="Off" Blue="Off"  Buzzer="On"/>
+	<STEvent name ="System.IsBusy"                   Red="Off"      Yellow="Off"       Green="On"  Blue="Off"  Buzzer="Off"/>
+	<STEvent name ="System.IsIdle"                   Red="Off"      Yellow="On"        Green="Off" Blue="Off"  Buzzer="Off"/>
+	<STEvent name ="System.IsWaitUnload"             Red="Off"      Yellow="Blinking"  Green="Off" Blue="Off"  Buzzer="Off"/>
+	<STEvent name ="System.IsAutoRunning"            Red="Off"      Yellow="Off"       Green="On"  Blue="Off"  Buzzer="Off"/>
+	
+	<STEvent name ="PMA.IsAlarm"        Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>	
+	<STEvent name ="PMB.IsAlarm"        Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>	
+	<STEvent name ="PMC.IsAlarm"        Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>	
+	<STEvent name ="PMD.IsAlarm"        Red="On"       Yellow="Off"  Green="Off" Blue="Off"  Buzzer="On"/>
 
 </STEvents>
 

+ 1 - 1
Venus/Venus_RT/Devices/DeviceManager.cs

@@ -157,7 +157,7 @@ namespace Venus_RT.Instances
                 InitSETM(ModuleName.SETM);
             }
 
-            AddCustomModuleDevice(new VenusSignalTower("System", "SignalTower"));
+            AddCustomModuleDevice(new KeplerSignalTower("System", "SignalTower"));
 
 
             OP.Subscribe("DeviceOperation", this.Invoke);

+ 0 - 5
Venus/Venus_RT/Devices/EFEM/JetEfem.cs

@@ -1,7 +1,6 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 using System.Threading.Tasks;
 using System.Collections;
 using Venus_Core;
@@ -678,11 +677,7 @@ namespace Venus_RT.Devices.EFEM
         }
         public override void SetRobotMovingInfo(RobotAction action, Hand hand, ModuleName target)
         {
-            //_robotMoveInfo.Action = action;
-            //_robotMoveInfo.ArmTarget = hand == Hand.Blade1 ? RobotArm.ArmA : (hand == Hand.Both ? RobotArm.Both : RobotArm.ArmB);
-            //_robotMoveInfo.BladeTarget = $"{_robotMoveInfo.ArmTarget}.{target}";
             blockingCollection.Add(new RobotAnimationData(action, hand, target));
-
         }
 
         private void OnReceiveMessage(string RevMsg)

+ 1 - 1
Venus/Venus_RT/Devices/EdwardsPump.cs

@@ -260,7 +260,7 @@ namespace Venus_RT.Devices
         private void OnErrorOccurred(string obj)
         {
             StatusDry = EdwardsPumpState.ERROR;
-            LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"[{Module}] edwards pump error: [{obj}]");
+            LOG.Write(eEvent.ERR_DRY_PUMP, Module, $"[{Module}] edwards pump error: [{obj}]");
         }
 
         private void OnPortDataChanged(string obj)

+ 21 - 25
Venus/Venus_RT/Devices/VirgoSignalTower.cs

@@ -9,7 +9,7 @@ using Venus_RT.Modules;
 
 namespace Venus_RT.Devices
 {
-    class VenusSignalLight : SignalLightBase
+    class KeplerSignalLight : SignalLightBase
     {
         public MECF.Framework.Common.Device.Bases.LightType Type { get; set; }
         public EfemBase EfemController { get; set; }
@@ -19,18 +19,17 @@ namespace Venus_RT.Devices
         private bool _isInit;
 
         private TowerLightStatus _preState = TowerLightStatus.Unknown;
-        IoSignalTower _SignalTower;
-        public VenusSignalLight(string module, string name, EfemBase _efem) : base(module, name)
+        //IoSignalTower _SignalTower;
+        public KeplerSignalLight(string module, string name, EfemBase _efem) : base(module, name)
         {
             _isInit = true;
-            _SignalTower= Aitex.Core.RT.Device.DEVICE.GetDevice<IoSignalTower>($"PMA.SignalTower");
+            //_SignalTower= Aitex.Core.RT.Device.DEVICE.GetDevice<IoSignalTower>($"PMA.SignalTower");
             EfemController = _efem;
         }
 
         protected override void SetOn()
         {
             SetLight(TowerLightStatus.On);
-            //_SignalTower.SetLight();
         }
 
         protected override void SetOff()
@@ -40,14 +39,12 @@ namespace Venus_RT.Devices
 
         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;
+            LightType venusType;
             switch (type)
             {
                 case MECF.Framework.Common.Device.Bases.LightType.Red:
@@ -74,31 +71,31 @@ namespace Venus_RT.Devices
                     break;
             }
 
-            Venus_RT.LightStatus venusSetpoint;
-            LightState lightState;
+            LightStatus venusSetpoint;
+            //LightState lightState;
             switch (setpoint)
             {
                 case TowerLightStatus.Blinking:
                     venusSetpoint = LightStatus.BLINK;
-                    lightState = LightState.Blink;
+                    //lightState = LightState.Blink;
                     break;
                 case TowerLightStatus.On:
                     venusSetpoint = LightStatus.ON;
-                    lightState = LightState.On;
+                    //lightState = LightState.On;
                     break;
                 case TowerLightStatus.Off:
                     venusSetpoint = LightStatus.OFF;
-                    lightState = LightState.Off;
+                    //lightState = LightState.Off;
 
                     break;
                 default:
                     venusSetpoint = LightStatus.OFF;
-                    lightState = LightState.Off;
+                    //lightState = LightState.Off;
 
                     break;
             }
-            //EfemController?.SetLamp(venusType, venusSetpoint);
-            _SignalTower?.SetLight(venusType, lightState);
+            EfemController?.SetLamp(venusType, venusSetpoint);
+            //_SignalTower?.SetLight(venusType, lightState);
             return true;
         }
 
@@ -109,11 +106,10 @@ namespace Venus_RT.Devices
                 if (setpoint != _preState || _isInit)
                 {
                     _trigError.CLK = SetSignalLight(Type, setpoint);
-                    if (_trigError.Q)
-                    {
-                        //EV.PostWarningLog(Module, $"Set {Type} signal light {setpoint} error, {reason}");
-                    }
-
+                    //if (_trigError.Q)
+                    //{
+                    //    //EV.PostWarningLog(Module, $"Set {Type} signal light {setpoint} error, {reason}");
+                    //}
                     if (_trigError.M)
                     {
                         _isInit = false;
@@ -140,13 +136,13 @@ namespace Venus_RT.Devices
         }
     }
 
-    public class VenusSignalTower : SignalTowerBase
+    public class KeplerSignalTower : SignalTowerBase
     {
         private EfemBase _efem;
 
-        private List<VenusSignalLight> _lights = new List<VenusSignalLight>();
+        private List<KeplerSignalLight> _lights = new List<KeplerSignalLight>();
 
-        public VenusSignalTower(string module, string name) : base("", "")
+        public KeplerSignalTower(string module, string name) : base("", "")
         {
             base.Module = module;
             base.Name = name;
@@ -178,7 +174,7 @@ namespace Venus_RT.Devices
 
         public override SignalLightBase CreateLight(MECF.Framework.Common.Device.Bases.LightType type)
         {
-            var light = new VenusSignalLight(ModuleName.System.ToString(), $"SignalLight{type}", _efem)
+            var light = new KeplerSignalLight(ModuleName.System.ToString(), $"SignalLight{type}", _efem)
             { Type = type};
             _lights.Add(light);
             return light;

+ 1 - 1
Venus/Venus_RT/Venus_RT.csproj

@@ -244,7 +244,7 @@
     <Compile Include="Devices\TruPlasmaRF.cs" />
     <Compile Include="Devices\VCE\HongHuVce.cs" />
     <Compile Include="Devices\TM\HongHuVR.cs" />
-    <Compile Include="Devices\VirgoSignalTower.cs" />
+    <Compile Include="Devices\KeplerSignalTower.cs" />
     <Compile Include="Instances\App.xaml.cs">
       <DependentUpon>App.xaml</DependentUpon>
       <SubType>Code</SubType>