Bläddra i källkod

Modify SRD UI; Add SRD related Operation;

niuyx 3 veckor sedan
förälder
incheckning
c7c6f6cccc

+ 4 - 6
CyberX8_MainPages/Views/SRDHomePageView.xaml

@@ -18,9 +18,8 @@
         <Grid.RowDefinitions>
             <RowDefinition Height="5"/>
             <RowDefinition Height="170"/>
-            <RowDefinition Height="200"/>
-            <RowDefinition Height="175"/>
-            <RowDefinition Height="250"/>
+            <RowDefinition Height="240"/>
+            <RowDefinition Height="145"/>
             <RowDefinition/>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
@@ -149,9 +148,8 @@
                                          WaferID="{Binding WaferID}" />
         </Grid>
         <Grid Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="2" >
-            <!--<UserControls:WaferPresenceControl HorizontalAlignment="Left" Margin="295,5,0,0" VerticalAlignment="Top"
-                                          PersistentValue="{Binding SRDPersistent}" IsEnabled="{Binding IsEnabled}"
-                                          ModuleName="{Binding Module}" IsWaferPresence="{Binding IsWaferPresence}"/>-->
+            <UserControls:SRDFlipperControl HorizontalAlignment="Left" Margin="65,5,0,0" VerticalAlignment="Top"
+                                          IsEnabled="{Binding IsEnabled}" ModuleName="{Binding Module}" CommonData="{Binding SRDCommonData}" Width="580"/>
         </Grid>
     </Grid>
 

+ 17 - 17
CyberX8_RT/Config/Devices/ModuleIOCfg.xml

@@ -190,16 +190,16 @@
 	<IO Name="SRD1.ChuckATMOn" IOName="c_SRD1_CHUCK_ATM_ON"/>
 	<IO Name="SRD1.ChuckVacuumOK" IOName="r_SRD1_CHUCK_VAC_OK"/>	
 	<IO Name="SRD1.WaferPresent" IOName="r_SRD1_WAFER_PRESENT"/>	
-	<IO Name="SRD1.LiftUp" IOName="c_SRD2_LIFT_UP"/>
-	<IO Name="SRD1.LiftUpStatus" IOName="r_SRD2_LIFT_UP"/>			
-	<IO Name="SRD1.Fipper1Out150Status" IOName="r_SRD1_150_FLIPPER1_OUT"/>
-	<IO Name="SRD1.Fipper2Out150Status" IOName="r_SRD1_150_FLIPPER2_OUT"/>
-	<IO Name="SRD1.Fipper3Out150Status" IOName="r_SRD1_150_FLIPPER3_OUT"/>
-	<IO Name="SRD1.Fipper1Out200Status" IOName="r_SRD1_200_FLIPPER1_OUT"/>
-	<IO Name="SRD1.Fipper2Out200Status" IOName="r_SRD1_200_FLIPPER2_OUT"/>
-	<IO Name="SRD1.Fipper3Out200Status" IOName="r_SRD1_200_FLIPPER3_OUT"/>
-	<IO Name="SRD1.FippersIn150" IOName="c_SRD1_150_FLIPPERS_IN"/>
-	<IO Name="SRD1.FippersIn200" IOName="c_SRD1_200_FLIPPERS_IN"/>
+	<IO Name="SRD1.LiftUp" IOName="c_SRD1_LIFT_UP"/>
+	<IO Name="SRD1.LiftUpStatus" IOName="r_SRD1_LIFT_UP"/>			
+	<IO Name="SRD1.Flipper1Out150Status" IOName="r_SRD1_150_FLIPPER1_OUT"/>
+	<IO Name="SRD1.Flipper2Out150Status" IOName="r_SRD1_150_FLIPPER2_OUT"/>
+	<IO Name="SRD1.Flipper3Out150Status" IOName="r_SRD1_150_FLIPPER3_OUT"/>
+	<IO Name="SRD1.Flipper1Out200Status" IOName="r_SRD1_200_FLIPPER1_OUT"/>
+	<IO Name="SRD1.Flipper2Out200Status" IOName="r_SRD1_200_FLIPPER2_OUT"/>
+	<IO Name="SRD1.Flipper3Out200Status" IOName="r_SRD1_200_FLIPPER3_OUT"/>
+	<IO Name="SRD1.FlippersIn150" IOName="c_SRD1_150_FLIPPERS_IN"/>
+	<IO Name="SRD1.FlippersIn200" IOName="c_SRD1_200_FLIPPERS_IN"/>
 	<IO Name="SRD1.WaterOn" IOName="c_SRD1_WATER_ON"/>
 	<IO Name="SRD1.WaterFlow" IOName="r_SRD1_WATER_FLOW"/>
 	<IO Name="SRD1.N2On" IOName="c_SRD1_N2_FLOW_ON"/>	
@@ -222,14 +222,14 @@
 	<IO Name="SRD2.WaferPresent" IOName="r_SRD2_WAFER_PRESENT"/>
 	<IO Name="SRD2.LiftUp" IOName="c_SRD2_LIFT_UP"/>
 	<IO Name="SRD2.LiftUpStatus" IOName="r_SRD2_LIFT_UP"/>
-	<IO Name="SRD2.Fipper1Out150Status" IOName="r_SRD2_150_FLIPPER1_OUT"/>
+	<IO Name="SRD2.Flipper1Out150Status" IOName="r_SRD2_150_FLIPPER1_OUT"/>
 	<IO Name="SRD2.Fipper2Out150Status" IOName="r_SRD2_150_FLIPPER2_OUT"/>
-	<IO Name="SRD2.Fipper3Out150Status" IOName="r_SRD2_150_FLIPPER3_OUT"/>
-	<IO Name="SRD2.Fipper1Out200Status" IOName="r_SRD2_200_FLIPPER1_OUT"/>
-	<IO Name="SRD2.Fipper2Out200Status" IOName="r_SRD2_200_FLIPPER2_OUT"/>
-	<IO Name="SRD2.Fipper3Out200Status" IOName="r_SRD2_200_FLIPPER3_OUT"/>
-	<IO Name="SRD2.FippersIn150" IOName="c_SRD2_150_FLIPPERS_IN"/>
-	<IO Name="SRD2.FippersIn200" IOName="c_SRD2_200_FLIPPERS_IN"/>
+	<IO Name="SRD2.Flipper3Out150Status" IOName="r_SRD2_150_FLIPPER3_OUT"/>
+	<IO Name="SRD2.Flipper1Out200Status" IOName="r_SRD2_200_FLIPPER1_OUT"/>
+	<IO Name="SRD2.Flipper2Out200Status" IOName="r_SRD2_200_FLIPPER2_OUT"/>
+	<IO Name="SRD2.Flipper3Out200Status" IOName="r_SRD2_200_FLIPPER3_OUT"/>
+	<IO Name="SRD2.FlippersIn150" IOName="c_SRD2_150_FLIPPERS_IN"/>
+	<IO Name="SRD2.FlippersIn200" IOName="c_SRD2_200_FLIPPERS_IN"/>
 	<IO Name="SRD2.WaterOn" IOName="c_SRD2_WATER_ON"/>
 	<IO Name="SRD2.WaterFlow" IOName="r_SRD2_WATER_FLOW"/>
 	<IO Name="SRD2.N2On" IOName="c_SRD2_N2_FLOW_ON"/>	

+ 175 - 24
CyberX8_RT/Devices/SRD/SrdCommonDevice.cs

@@ -64,9 +64,10 @@ namespace CyberX8_RT.Devices.SRD
         private const string FLIPPER1_OUT_200_STATUS = "Flipper1Out200Status";
         private const string FLIPPER2_OUT_200_STATUS = "Flipper2Out200Status";
         private const string FLIPPER3_OUT_200_STATUS = "Flipper3Out200Status";
-        private const string FLIPPERS_IN_150_STATUS = "FlippersIn150";
-        private const string FLIPPERS_IN_200_STATUS = "FlippersIn200";
+        private const string FLIPPERS_IN_150 = "FlippersIn150";
+        private const string FLIPPERS_IN_200 = "FlippersIn200";
         private const string WATER_FLOW = "WaterFlow";
+        private const string WATER_ON = "WaterOn";
         private const string N2_ON= "N2On";
         #endregion
 
@@ -208,10 +209,11 @@ namespace CyberX8_RT.Devices.SRD
             IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPER1_OUT_200_STATUS, UpdateVariableValue);
             IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPER2_OUT_200_STATUS, UpdateVariableValue);
             IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPER3_OUT_200_STATUS, UpdateVariableValue);
-            IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPERS_IN_150_STATUS, UpdateVariableValue);
-            IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPERS_IN_200_STATUS, UpdateVariableValue);
+            IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPERS_IN_150, UpdateVariableValue);
+            IOModuleManager.Instance.SubscribeModuleVariable(Module, FLIPPERS_IN_200, UpdateVariableValue);
             IOModuleManager.Instance.SubscribeModuleVariable(Module, WATER_FLOW, UpdateVariableValue);
             IOModuleManager.Instance.SubscribeModuleVariable(Module, N2_ON, UpdateVariableValue);
+            IOModuleManager.Instance.SubscribeModuleVariable(Module, WATER_ON, UpdateVariableValue);
 
         }
         /// <summary>
@@ -221,16 +223,22 @@ namespace CyberX8_RT.Devices.SRD
         {
             OP.Subscribe($"{Module}.{Name}.DoorClose", DoorCloseAction);
             OP.Subscribe($"{Module}.{Name}.DoorOpen", DoorOpenAction);
-            OP.Subscribe($"{Module}.{Name}.WaterAboveOn", WaterAboveOnAction);
-            OP.Subscribe($"{Module}.{Name}.WaterAboveOff", WaterAboveOffAction);
-            OP.Subscribe($"{Module}.{Name}.WaterBelowOn", WaterBelowOnAction);
-            OP.Subscribe($"{Module}.{Name}.WaterBelowOff", WaterBelowOffAction);
+            OP.Subscribe($"{Module}.{Name}.WaterOn", WaterOnAction);
+            OP.Subscribe($"{Module}.{Name}.WaterOff", WaterOffAction);
             OP.Subscribe($"{Module}.{Name}.ChuckVacuumOn", ChuckVacuumOnAction);
             OP.Subscribe($"{Module}.{Name}.ChuckVacuumOff", ChuckVacuumOffAction);
-            OP.Subscribe($"{Module}.{Name}.ExhaustOn", ExhaustOnAction);
-            OP.Subscribe($"{Module}.{Name}.ExhaustOff", ExhaustOffAction); 
-            OP.Subscribe($"{Module}.KeyDown", KeyDownAction);
-            
+            OP.Subscribe($"{Module}.{Name}.N2On", N2OnAction);
+            OP.Subscribe($"{Module}.{Name}.N2Off", N2OffAction);
+            OP.Subscribe($"{Module}.{Name}.LiftUpOn", LiftUpOnAction);
+            OP.Subscribe($"{Module}.{Name}.LiftUpOff", LiftUpOffAction);
+            OP.Subscribe($"{Module}.{Name}.ChuckATMOn", ChuckATMOnAction);
+            OP.Subscribe($"{Module}.{Name}.ChuckATMOff", ChuckATMOffAction);
+            OP.Subscribe($"{Module}.{Name}.FlipperIn150", FlipperIn150Action);
+            OP.Subscribe($"{Module}.{Name}.FlipperOut150", FlipperOut150Action);
+            OP.Subscribe($"{Module}.{Name}.FlipperIn200", FlipperIn200Action);
+            OP.Subscribe($"{Module}.{Name}.FlipperOut200", FlipperOut200Action);
+
+            OP.Subscribe($"{Module}.KeyDown", KeyDownAction);            
             OP.Subscribe($"{Module}.DisabledAction", DisabledOperation);
             OP.Subscribe($"{Module}.ManualAction", ManualOperation);
             OP.Subscribe($"{Module}.AutoAction", AutoOperation);
@@ -427,34 +435,34 @@ namespace CyberX8_RT.Devices.SRD
         }
         #endregion
 
-        #region Exhaust On
+        #region N2 On
         /// <summary>
-        /// Exhaust On
+        /// N2 On
         /// </summary>
         /// <param name="cmd"></param>
         /// <param name="args"></param>
         /// <returns></returns>
-        public bool ExhaustOnAction(string cmd, object[] args)
+        public bool N2OnAction(string cmd, object[] args)
         {
-            return ExhaustOn();
+            return N2On();
         }
         /// <summary>
-        /// Exhaust Off
+        /// N2 Off
         /// </summary>
         /// <param name="cmd"></param>
         /// <param name="args"></param>
         /// <returns></returns>
-        public bool ExhaustOffAction(string cmd, object[] args)
+        public bool N2OffAction(string cmd, object[] args)
         {
-            return ExhaustOff();
+            return N2Off();
         }
         /// <summary>
         /// Exhaust On(不确认信号)
         /// </summary>
         /// <returns></returns>
-        public bool ExhaustOn()
+        public bool N2On()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{EXHAUST_ON}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{N2_ON}");
             return IOModuleManager.Instance.WriteIoValue(ioName, true);
         }
 
@@ -462,13 +470,99 @@ namespace CyberX8_RT.Devices.SRD
         /// Exhaust On(不确认信号)
         /// </summary>
         /// <returns></returns>
-        public bool ExhaustOff()
+        public bool N2Off()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{EXHAUST_ON}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{N2_ON}");
             return IOModuleManager.Instance.WriteIoValue(ioName, false);
         }
         #endregion
 
+        #region Flipper
+        /// <summary>
+        /// FlipperIn150
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool FlipperIn150Action(string cmd, object[] args)
+        {
+            return FlipperIn150(true);
+        }
+        /// <summary>
+        /// FlipperOut150
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool FlipperOut150Action(string cmd, object[] args)
+        {
+            return FlipperIn150(false);
+        }
+        public bool FlipperIn150(bool value)
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{FLIPPERS_IN_150}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, value);
+        }
+        /// <summary>
+        /// FlipperIn200
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool FlipperIn200Action(string cmd, object[] args)
+        {
+            return FlipperIn200(true);
+        }
+        /// <summary>
+        /// FlipperOut200
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool FlipperOut200Action(string cmd, object[] args)
+        {
+            return FlipperIn200(false);
+        }
+        public bool FlipperIn200(bool value)
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{FLIPPERS_IN_200}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, value);
+        }
+        #endregion
+        #region Water
+        /// <summary>
+        /// Water On操作
+        /// </summary>
+        public bool WaterOnAction(string cmd, object[] args)
+        {
+            return WaterOn();
+        }
+        /// <summary>
+        /// water Off操作
+        /// </summary>
+        public bool WaterOffAction(string cmd, object[] args)
+        {
+            return WaterOff();
+        }
+        /// <summary>
+        /// Water On(不确认信号)
+        /// </summary>
+        /// <returns></returns>
+        public bool WaterOn()
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{WATER_ON}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, true);
+        }
+        /// <summary>
+        /// Water Off(不确认信号)
+        /// </summary>
+        /// <returns></returns>
+        public bool WaterOff()
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{WATER_ON}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, false);
+        }
+        #endregion
 
         #region Chuck Vacuum 
         /// <summary>
@@ -504,6 +598,63 @@ namespace CyberX8_RT.Devices.SRD
             }
         }
         #endregion
+
+        #region LiftUp
+        /// <summary>
+        /// Lift Up On
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool LiftUpOnAction(string cmd, object[] args)
+        {
+            return LiftUp(true);
+        }
+        /// <summary>
+        /// Lift Up Off
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool LiftUpOffAction(string cmd, object[] args)
+        {
+            return LiftUp(false);
+        }
+        private bool LiftUp(bool value)
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{LIFT_UP}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, value);
+        }
+        #endregion
+
+        #region ChuckATM
+        /// <summary>
+        /// Chuck ATM On
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool ChuckATMOnAction(string cmd, object[] args)
+        {
+            return ChuckATM(true);
+        }
+        /// <summary>
+        /// Chuck ATM Off
+        /// </summary>
+        /// <param name="cmd"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public bool ChuckATMOffAction(string cmd, object[] args)
+        {
+            return ChuckATM(false);
+        }
+        private bool ChuckATM(bool value)
+        {
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{CHUCK_ATM_ON}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, value);
+        }
+        #endregion
+
         #region Water Above 
         /// <summary>
         /// Water Above On操作
@@ -607,7 +758,7 @@ namespace CyberX8_RT.Devices.SRD
             //关闭风扇
             if (CommonData.ExhaustOn)
             {
-                bool result = ExhaustOffAction("", null);
+                bool result = N2OffAction("", null);
                 if (!result)
                 {
                     LOG.WriteLog(eEvent.ERR_SRD, Module, "EnterError: Exhaust Off is failed");

+ 4 - 4
CyberX8_RT/Modules/SRD/RunWaferRecipeStateMachine.cs

@@ -253,7 +253,7 @@ namespace CyberX8_RT.Modules.SRD
             //关闭风扇
             if (_srdCommon.CommonData.ExhaustOn)
             {
-                bool result = _srdCommon.ExhaustOffAction("", null);
+                bool result = _srdCommon.N2OffAction("", null);
                 if (!result)
                 {
                     LOG.WriteLog(eEvent.ERR_SRD, _module, "EnterError: Exhaust Off is failed");
@@ -402,7 +402,7 @@ namespace CyberX8_RT.Modules.SRD
         /// <returns></returns>
         private bool PreparingExhaustOff(object param)
         {
-            bool result = _srdCommon.ExhaustOffAction("", null);
+            bool result = _srdCommon.N2OffAction("", null);
             if (!result)
             {
                 LOG.WriteLog(eEvent.ERR_SRD, _module, "Preparing Exhaust Off is failed");
@@ -1072,7 +1072,7 @@ namespace CyberX8_RT.Modules.SRD
             int ticks = Environment.TickCount - _exhaustFanTime;
             if (ticks >= _srdRecipe.ExhaustFanDelay * 1000)
             {
-                bool result = _srdCommon.ExhaustOn();
+                bool result = _srdCommon.N2On();
                 if(!result)
                 {
                     LOG.WriteLog(eEvent.ERR_SRD, _module, "Exhaust On failed");
@@ -1263,7 +1263,7 @@ namespace CyberX8_RT.Modules.SRD
             //关闭排风扇
             if (_srdCommon.CommonData.ExhaustOn && _srdCommon.Status != RState.Running)
             {
-                bool result1 = _srdCommon.ExhaustOffAction("", null);
+                bool result1 = _srdCommon.N2OffAction("", null);
                 if (!result1)
                 {
                     LOG.WriteLog(eEvent.ERR_SRD, _module, "Preparing Exhaust Off is failed");

+ 3 - 3
CyberX8_RT/Modules/SRD/SRDRunWaferRecipeRoutine.cs

@@ -289,7 +289,7 @@ namespace CyberX8_RT.Modules.SRD
         /// <returns></returns>
         private bool PreparingExhaustOff()
         {
-            bool result = _srdCommon.ExhaustOffAction("", null);
+            bool result = _srdCommon.N2OffAction("", null);
             if (!result)
             {
                 NotifyError(eEvent.ERR_SRD, "Preparing Exhaust Off is failed", 0);
@@ -974,7 +974,7 @@ namespace CyberX8_RT.Modules.SRD
         /// <returns></returns>
         private bool ExhaustFanOn()
         {
-            bool result = _srdCommon.ExhaustOn();
+            bool result = _srdCommon.N2On();
             if (!result)
             {
                 NotifyError(eEvent.ERR_SRD, "Exhaust On failed",0);
@@ -1100,7 +1100,7 @@ namespace CyberX8_RT.Modules.SRD
                 //关闭排风扇
                 if (_srdCommon.CommonData.ExhaustOn)
                 {
-                    _srdCommon.ExhaustOffAction("", null);
+                    _srdCommon.N2OffAction("", null);
                 }
             }
             return result;

+ 7 - 0
CyberX8_Themes/CyberX8_Themes.csproj

@@ -363,6 +363,9 @@
     <Compile Include="UserControls\SRD2.xaml.cs">
       <DependentUpon>SRD2.xaml</DependentUpon>
     </Compile>
+    <Compile Include="UserControls\SRDFlipperControl.xaml.cs">
+      <DependentUpon>SRDFlipperControl.xaml</DependentUpon>
+    </Compile>
     <Compile Include="UserControls\SRDFrontView.xaml.cs">
       <DependentUpon>SRDFrontView.xaml</DependentUpon>
     </Compile>
@@ -908,6 +911,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="UserControls\SRDFlipperControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="UserControls\SRDFrontView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 61 - 0
CyberX8_Themes/UserControls/SRDFlipperControl.xaml

@@ -0,0 +1,61 @@
+<UserControl x:Class="CyberX8_Themes.UserControls.SRDFlipperControl"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:CyberX8_Themes.UserControls"
+             xmlns:converters="clr-namespace:CyberX8_Themes.Converters"
+             mc:Ignorable="d" x:Name="self"
+             d:DesignHeight="120" d:DesignWidth="580">
+    <UserControl.Resources>
+        <converters:BoolToColor x:Key="boolToColor"/>
+    </UserControl.Resources>
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="130"/>
+            <ColumnDefinition Width="120"/>
+            <ColumnDefinition Width="120"/>
+            <ColumnDefinition/>
+            <ColumnDefinition/>
+            <ColumnDefinition/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+        
+                
+        <Label Grid.Column="4" Content="1" FontSize="14" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Top"/>
+        <Label Grid.Column="5" Content="2" FontSize="14" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Top"/>
+        <Label Grid.Column="6" Content="3" FontSize="14" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Top"/>
+
+
+        <Label Grid.Row="1" Grid.Column="0" Content="Flipper 150" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+        <Button Grid.Row="1" Grid.Column="1" Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Height="25" Width="100" HorizontalAlignment="Center" Content="In" Click="FlipperIn150_Click"/>
+        <Button Grid.Row="1" Grid.Column="2" Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Height="25" Width="100" HorizontalAlignment="Center" Content="Out" Click="FlipperOut150_Click"/>
+
+        <Label Grid.Row="2" Grid.Column="0" Content="Flipper 200" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+        <Button Grid.Row="2" Grid.Column="1" Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Height="25" Width="100" HorizontalAlignment="Center" Content="In" Click="FlipperIn200_Click"></Button>
+        <Button Grid.Row="2" Grid.Column="2" Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Height="25" Width="100" HorizontalAlignment="Center" Content="Out" Click="FlipperOut200_Click"/>
+        
+
+        <Label Grid.Row="1" Grid.Column="3" Content="Out" FontSize="14" FontWeight="Bold" HorizontalAlignment="Right" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+        <Ellipse Grid.Row="1" Grid.Column="4" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+    Fill="{Binding CommonData.Flipper1Out150Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+        <Ellipse  Grid.Row="1" Grid.Column="5" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+        Fill="{Binding CommonData.Flipper2Out150Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+        <Ellipse  Grid.Row="1" Grid.Column="6" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+        Fill="{Binding CommonData.Flipper3Out150Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+
+        <Label Grid.Row="3" Grid.Column="3" Content="Out" FontSize="14" FontWeight="Bold" HorizontalAlignment="Right" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+        <Ellipse Grid.Row="3" Grid.Column="4" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+        Fill="{Binding CommonData.Flipper1Out200Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+        <Ellipse Grid.Row="3" Grid.Column="5" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+        Fill="{Binding CommonData.Flipper2Out200Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+        <Ellipse Grid.Row="3" Grid.Column="6" Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Silver"
+        Fill="{Binding CommonData.Flipper3Out200Status, Converter={StaticResource boolToColor}, ElementName=self}"/>
+        
+    </Grid>
+</UserControl>

+ 82 - 0
CyberX8_Themes/UserControls/SRDFlipperControl.xaml.cs

@@ -0,0 +1,82 @@
+using MECF.Framework.Common.CommonData.SRD;
+using MECF.Framework.Common.OperationCenter;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace CyberX8_Themes.UserControls
+{
+    /// <summary>
+    /// SRDFlipperControl.xaml 的交互逻辑
+    /// </summary>
+    public partial class SRDFlipperControl : UserControl
+    {
+        public SRDFlipperControl()
+        {
+            InitializeComponent();
+        }
+        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
+           "ModuleName", typeof(string), typeof(SRDFlipperControl),
+           new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
+        /// <summary>
+        /// 模块名称
+        /// </summary>
+        public string ModuleName
+        {
+            get
+            {
+                return (string)this.GetValue(ModuleNameProperty);
+            }
+            set
+            {
+                this.SetValue(ModuleNameProperty, value);
+            }
+        }
+        public static readonly DependencyProperty CommonDataProperty = DependencyProperty.Register(
+          "CommonData", typeof(SrdCommonData), typeof(SRDFlipperControl), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
+        /// <summary>
+        /// CommonData
+        /// </summary>
+        public SrdCommonData CommonData
+        {
+            get
+            {
+                return (SrdCommonData)this.GetValue(CommonDataProperty);
+            }
+            set
+            {
+                this.SetValue(CommonDataProperty, value);
+            }
+        }
+        #region Operation
+        private void FlipperIn150_Click(object sender, RoutedEventArgs e)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.FlipperIn150");
+        }
+        private void FlipperOut150_Click(object sender, RoutedEventArgs e)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.FlipperOut150");
+        }
+        private void FlipperIn200_Click(object sender, RoutedEventArgs e)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.FlipperIn200");
+        }
+        private void FlipperOut200_Click(object sender, RoutedEventArgs e)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.FlipperOut200");
+        }
+        #endregion
+
+    }
+}

+ 52 - 24
CyberX8_Themes/UserControls/SRDLeftInformation.xaml

@@ -6,7 +6,7 @@
              xmlns:converters="clr-namespace:CyberX8_Themes.Converters"
              xmlns:local="clr-namespace:CyberX8_Themes.UserControls"
              mc:Ignorable="d" x:Name="self"
-             d:DesignHeight="200" d:DesignWidth="500">
+             d:DesignHeight="240" d:DesignWidth="500">
     <UserControl.Resources>
         <converters:BoolToColor x:Key="boolToColor"/>
         <converters:BoolToYellowColor x:Key="boolToYellowColor"/>
@@ -18,39 +18,57 @@
             <RowDefinition Height="40"/>
             <RowDefinition Height="40"/>
             <RowDefinition Height="40"/>
-            <RowDefinition/>
+            <RowDefinition Height="40"/>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="200"/>
+            <ColumnDefinition Width="130"/>
+            <ColumnDefinition Width="0"/>
+            <ColumnDefinition Width="70"/>
             <ColumnDefinition Width="300"/>
             <ColumnDefinition/>
         </Grid.ColumnDefinitions>
-        <Grid Grid.Row="0" Grid.Column="0">
+        <Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3">
             <Label Grid.Row="0" Content="State Machine" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
         </Grid>
-        <Grid Grid.Row="1" Grid.Column="0">
-            <Label Grid.Row="0" Content="Fluid In Containment" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+
+        <Grid Grid.Row="1" Grid.ColumnSpan="4">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="150"/>
+                <ColumnDefinition/>
+                <ColumnDefinition Width="200"/>
+                <ColumnDefinition/>
+            </Grid.ColumnDefinitions>
+            <Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3">
+                <Label Grid.Row="0" Content="Wafer Present" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+            </Grid>
+            <Grid Grid.Row="0" Grid.Column="1">
+                <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Left" VerticalAlignment="Center" Stroke="Silver"
+     Fill="{Binding CommonData.WaferPresent, Converter={StaticResource boolToColor}, ElementName=self}" />
+            </Grid>
+            <Grid Grid.Row="1" Grid.Column="2">
+                <Label Grid.Row="0" Content="Fluid In Containment" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+            </Grid>
+            <Ellipse Grid.Column="3" Width="16" Height="16" HorizontalAlignment="Left" VerticalAlignment="Center" Stroke="Silver"
+         Fill="{Binding CommonData.FluidContainment, Converter={StaticResource boolToYellowColor}, ElementName=self}" />
         </Grid>
-        <Grid Grid.Row="2" Grid.Column="0">
+
+
+        <Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
             <Label Grid.Row="0" Content="Water Pressure" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
         </Grid>
-        <Grid Grid.Row="3" Grid.Column="0">
-            <Label Grid.Row="0" Content="Wafer Presence" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+        <Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3">
+            <Label Grid.Row="0" Content="Water Flow" FontSize="16"  VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
         </Grid>
-        <Grid Grid.Row="4" Grid.Column="0">
+        <Grid Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="3">
             <Label Grid.Row="0" Content="Chuck Vacuum" FontSize="16" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
         </Grid>
-        <Border Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Margin="5,5,15,5" Background="Black">
+        <Border Grid.Row="0" Grid.Column="3" Margin="5,5,15,5" Background="Black">
             <TextBlock  Text="{Binding ElementName=self, Path=StateMachine}" Foreground="Lime" FontSize="16" FontWeight="Bold" VerticalAlignment="Center"/>
         </Border>
-        <Grid Grid.Row="1" Grid.Column="1">
-            <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Left" VerticalAlignment="Center" Stroke="Silver"
-                     Fill="{Binding CommonData.FluidContainment, Converter={StaticResource boolToYellowColor}, ElementName=self}" />
-        </Grid>
-        <Grid Grid.Column ="1" Grid.Row="2">
+        <Grid Grid.Column ="3" Grid.Row="2">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="130"></ColumnDefinition>
-                <ColumnDefinition Width="50"></ColumnDefinition>
+                <ColumnDefinition Width="72"></ColumnDefinition>
             </Grid.ColumnDefinitions>
             <Border Grid.Column="0"  Margin="5,5,2,5" Background="Black">
                 <TextBlock  Text="{Binding CommonData.WaterPressure, ElementName=self, StringFormat=\{0:F2\}}"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
@@ -59,22 +77,22 @@
                 <TextBlock   Text="psi"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center"/>
             </Border>
         </Grid>
-        <Grid Grid.Column ="1" Grid.Row="3">
+        <Grid Grid.Column ="3" Grid.Row="3">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="130"></ColumnDefinition>
-                <ColumnDefinition Width="50"></ColumnDefinition>
+                <ColumnDefinition Width="72"></ColumnDefinition>
             </Grid.ColumnDefinitions>
             <Border Grid.Column="0"  Margin="5,5,2,5" Background="Black">
-                <TextBlock  Text="{Binding WaferPresence, ElementName=self}"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                <TextBlock  Text="{Binding CommonData.WaterFlow, ElementName=self, StringFormat=\{0:F2\}}"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
             </Border>
             <Border Grid.Column="1"  Margin="2,5,5,5" Background="Black">
-                <TextBlock   Text="{Binding CommonData.WaferPresence, ElementName=self, StringFormat=\{0:F2\}}"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <TextBlock   Text="mL/min"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center"/>
             </Border>
         </Grid>
-        <Grid Grid.Column ="1" Grid.Row="4">
+        <Grid Grid.Column ="3" Grid.Row="4">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="130"></ColumnDefinition>
-                <ColumnDefinition Width="50"></ColumnDefinition>
+                <ColumnDefinition Width="72"></ColumnDefinition>
             </Grid.ColumnDefinitions>
             <Border Grid.Column="0"  Margin="5,5,2,5" Background="Black">
                 <TextBlock  Text="{Binding CommonData.VacuumValue, ElementName=self, StringFormat=\{0:F2\}}"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
@@ -84,6 +102,16 @@
             </Border>
         </Grid>
 
-
+        <Grid Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="3">
+            <Label Grid.Row="0" Content="Chuck Vacuum OK" FontSize="16" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+        </Grid>
+        <Grid Grid.Row="5" Grid.Column="3">
+            <Grid.RowDefinitions>
+                <RowDefinition/>
+                <RowDefinition/>
+            </Grid.RowDefinitions>
+            <Ellipse Width="16" Height="16" HorizontalAlignment="Left" VerticalAlignment="Top" Stroke="Silver"
+     Fill="{Binding CommonData.ChuckVacuumOK, Converter={StaticResource boolToColor}, ElementName=self}" Margin="-20,10,0,0" Grid.RowSpan="2" RenderTransformOrigin="0.312,1.25" />
+        </Grid>
     </Grid>
 </UserControl>

+ 4 - 13
CyberX8_Themes/UserControls/SRDMoveControl.xaml

@@ -16,22 +16,18 @@
             <RowDefinition Height="40"/>
             <RowDefinition Height="40"/>
             <RowDefinition Height="40"/>
-            <RowDefinition/>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="150"/>
-            <ColumnDefinition Width="50"/>
+            <ColumnDefinition Width="25"/>
             <ColumnDefinition Width="125"/>
             <ColumnDefinition Width="125"/>
-            <ColumnDefinition Width="50"/>
+            <ColumnDefinition Width="40"/>
             <ColumnDefinition/>
         </Grid.ColumnDefinitions>
         <Grid Grid.Row="0" Grid.Column="0">
             <Label  Content="Door" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
-        <!--<Grid Grid.Row="1" Grid.Column="0">
-            <Label  Content="Arm Position" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
-        </Grid>-->
         <Grid Grid.Row="1" Grid.Column="0">
             <Label  Content="Rotation" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
@@ -54,12 +50,7 @@
         <Grid Grid.Row="0" Grid.Column="3">
             <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Open" Click="Open_Click"></Button>
         </Grid>
-        <!--<Grid Grid.Row="1" Grid.Column="2">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Out" Click="Out_Click"></Button>
-        </Grid>-->
-        <!--<Grid Grid.Row="1" Grid.Column="3">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,10,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="In" Click="In_Click"></Button>
-        </Grid>-->
+        
         <Grid Grid.Row="1" Grid.Column="2">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="79*"/>
@@ -78,7 +69,6 @@
             <TextBox Grid.Column="0" Text="{Binding ElementName=self,Path=InputRotationTime,Mode=TwoWay}"  Width="50" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Right" FontSize="16"  Height="22" />
             <TextBox IsEnabled="False" Grid.Column="1" Text="sec" Width="45" FontWeight="Bold" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="15"  Height="22"/>
         </Grid>
-
         <Grid Grid.Row="2" Grid.Column="3">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="65"></ColumnDefinition>
@@ -87,5 +77,6 @@
             <TextBox Grid.Column="0" Text="{Binding ElementName=self,Path=InputRotationSpeed,Mode=TwoWay}"  Width="50" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Right" FontSize="16"  Height="22" />
             <TextBox IsEnabled="False"  Grid.Column="1" Text="rmp" Width="45" FontWeight="Bold" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="15"  Height="22" />
         </Grid>
+
     </Grid>
 </UserControl>

+ 16 - 16
CyberX8_Themes/UserControls/SRDSideControl.xaml

@@ -30,31 +30,31 @@
             <ColumnDefinition/>
         </Grid.ColumnDefinitions>
         <Grid Grid.Row="0" Grid.Column="0">
-            <Label  Content="Water Above" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+            <Label  Content="Water On" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
         <Grid Grid.Row="0" Grid.Column="1">
             <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="Silver"
-                     Fill="{Binding CommonData.WaterAbove, Converter={StaticResource boolToColor}, ElementName=self}"/>
+                     Fill="{Binding CommonData.WaterOn, Converter={StaticResource boolToColor}, ElementName=self}"/>
         </Grid>
         <Grid Grid.Row="0" Grid.Column="2">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="WaterAboveOn_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="WaterOn_Click"></Button>
         </Grid>
         <Grid Grid.Row="0" Grid.Column="3">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="WaterAboveOff_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="WaterOff_Click"></Button>
         </Grid>
 
         <Grid Grid.Row="1" Grid.Column="0">
-            <Label  Content="Water Below" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+            <Label  Content="Lift Up" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
         <Grid Grid.Row="1" Grid.Column="1">
             <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="Silver"
-                     Fill="{Binding CommonData.WaterBelow, Converter={StaticResource boolToColor}, ElementName=self}" />
+                     Fill="{Binding CommonData.LiftUpStatus, Converter={StaticResource boolToColor}, ElementName=self}" />
         </Grid>
         <Grid Grid.Row="1" Grid.Column="2">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="WaterBelowOn_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="LiftUpOn_Click"></Button>
         </Grid>
         <Grid Grid.Row="1" Grid.Column="3">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="WaterBelowOff_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="LiftUpOff_Click"></Button>
         </Grid>
 
         <Grid Grid.Row="2" Grid.Column="0">
@@ -89,31 +89,31 @@
         </Grid>
 
         <Grid Grid.Row="4" Grid.Column="0">
-            <Label  Content="Exhaust On" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+            <Label  Content="N2 On" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
         <Grid Grid.Row="4" Grid.Column="1">
             <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="Silver"
-                     Fill="{Binding CommonData.ExhaustOn, Converter={StaticResource boolToColor}, ElementName=self}"/>
+                     Fill="{Binding CommonData.N2On, Converter={StaticResource boolToColor}, ElementName=self}"/>
         </Grid>
         <Grid Grid.Row="4" Grid.Column="2">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="ExhaustOnOn_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="N2On_Click"></Button>
         </Grid>
         <Grid Grid.Row="4" Grid.Column="3">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="ExhaustOnOff_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="N2Off_Click"></Button>
         </Grid>
 
         <Grid Grid.Row="5" Grid.Column="0">
-            <Label  Content="Presence Test" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
+            <Label  Content="Chuck ATM" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
         </Grid>
         <Grid Grid.Row="5" Grid.Column="1">
             <Ellipse Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="Silver"
-                     Fill="{Binding IsPresenceTesting, Converter={StaticResource boolToColor}, ElementName=self}"/>
+                     Fill="{Binding CommonData.ChuckATMOn, Converter={StaticResource boolToColor}, ElementName=self}"/>
         </Grid>
         <Grid Grid.Row="5" Grid.Column="2">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Start" Click="PresenceTestStart_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="On" Click="ChuckATMOn_Click"></Button>
         </Grid>
         <Grid Grid.Row="5" Grid.Column="3">
-            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Stop" Click="PresenceTestStop_Click"></Button>
+            <Button Style="{StaticResource SysBtnStyle}" Margin="10,0,0,0" Grid.Column="1" Height="25" Width="100" HorizontalAlignment="Center" Content="Off" Click="ChuckATMOff_Click"></Button>
         </Grid>
     </Grid>
 </UserControl>

+ 16 - 43
CyberX8_Themes/UserControls/SRDSideControl.xaml.cs

@@ -154,14 +154,14 @@ namespace CyberX8_Themes.UserControls
         }
         #endregion
 
-        private void ExhaustOnOff_Click(object sender, RoutedEventArgs e)
+        private void N2On_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.ExhaustOff");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.N2On");
         }
 
-        private void ExhaustOnOn_Click(object sender, RoutedEventArgs e)
+        private void N2Off_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.ExhaustOn");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.N2Off");
         }
 
         private void ChuckVacuumOff_Click(object sender, RoutedEventArgs e)
@@ -184,60 +184,33 @@ namespace CyberX8_Themes.UserControls
             InvokeClient.Instance.Service.DoOperation($"System.Facilities.LoaderDiEnable");
         }
 
-        private void WaterBelowOff_Click(object sender, RoutedEventArgs e)
+        private void WaterOff_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterBelowOff");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterOff");
         }
 
-        private void WaterBelowOn_Click(object sender, RoutedEventArgs e)
+        private void WaterOn_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterBelowOn");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterOn");
         }
 
-        private void WaterAboveOff_Click(object sender, RoutedEventArgs e)
+        private void ChuckATMOn_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterAboveOff");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.ChuckATMOn");                                      
         }
 
-        private void WaterAboveOn_Click(object sender, RoutedEventArgs e)
+        private void ChuckATMOff_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.WaterAboveOn");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.ChuckATMOff");
         }
 
-        private void PresenceTestStart_Click(object sender, RoutedEventArgs e)
+        private void LiftUpOn_Click(object sender, RoutedEventArgs e)
         {
-
-            if ("Manual".Equals(CurrentOperationMode))
-            {
-                if (SelectedRecipeNode == null)
-                {
-                    MessageBox.Show("Please Select Recipe first!", $"Current Recipe is Null", MessageBoxButton.OK, MessageBoxImage.Error);
-                }
-                else
-                {
-                    
-                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PresenceTestStart", SelectedRecipeNode.RecipeFullFileName);                                    
-                    
-                }
-            }
-            else
-            {
-                MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
-            }
-            
-            
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.LiftUpOn");
         }
-
-        private void PresenceTestStop_Click(object sender, RoutedEventArgs e)
+        private void LiftUpOff_Click(object sender, RoutedEventArgs e)
         {
-            if ("Manual".Equals(CurrentOperationMode))
-            {
-                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
-            }
-            else
-            {
-                MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
-            }
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.LiftUpOff");
         }
     }
 }