Browse Source

efem界面添加loadport联动rt功能

lixiang 1 year ago
parent
commit
6d9d4bce31

+ 16 - 0
Venus/Venus_MainPages/ViewModels/EfemViewModel.cs

@@ -669,6 +669,22 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add("LP2.Status");
             m_RtDataKeys.Add("LP3.Status");
 
+            m_RtDataKeys.Add("LP1.IsLoaded");
+            m_RtDataKeys.Add("LP2.IsLoaded");
+            m_RtDataKeys.Add("LP3.IsLoaded");
+
+            m_RtDataKeys.Add("LP1.CarrierId");
+            m_RtDataKeys.Add("LP2.CarrierId");
+            m_RtDataKeys.Add("LP3.CarrierId");
+
+            m_RtDataKeys.Add("LP1.IsClamped");
+            m_RtDataKeys.Add("LP2.IsClamped");
+            m_RtDataKeys.Add("LP3.IsClamped");
+
+            m_RtDataKeys.Add("LP1.IsDocked");
+            m_RtDataKeys.Add("LP2.IsDocked");
+            m_RtDataKeys.Add("LP3.IsDocked");
+
         }
         #endregion
 

+ 53 - 208
Venus/Venus_MainPages/Views/EfemView.xaml

@@ -8,10 +8,14 @@
              xmlns:userControls="clr-namespace:Venus_Themes.UserControls;assembly=Venus_Themes"
              xmlns:prism="http://prismlibrary.com/"
              xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
+             xmlns:converters="clr-namespace:Venus_Themes.Converters;assembly=Venus_Themes"
              prism:ViewModelLocator.AutoWireViewModel="True"
              xmlns:unity="clr-namespace:Venus_MainPages.Unity"
              mc:Ignorable="d" 
              d:DesignHeight="850" d:DesignWidth="1920">
+    <UserControl.Resources>
+        <converters:BoolToVisibility2 x:Key="BoolToVisibility2"/>
+    </UserControl.Resources>
     <Canvas>
         <Border BorderThickness="0,0,0,1" BorderBrush="Black" Canvas.Top="20" Canvas.Left="40">
             <StackPanel Orientation="Horizontal" Margin="0,0,0,5">
@@ -41,7 +45,7 @@
                     <userControls:LoadLockRight Width="150" Height="150" Canvas.Top="309" Canvas.Left="519"  DoorIsOpen="{Binding RtDataValues[TM.LLBTSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLBWafer}"/>
                 </Canvas>
             </Viewbox>
-            <userControls:EFEM Width="500" Height="200" Canvas.Left="500" Canvas.Top="430" Aligner1Wafer="{Binding Aligner1Wafer}"/>
+            <userControls:EFEM Width="500" Height="200" Canvas.Left="500" Canvas.Top="430" Aligner1Wafer="{Binding Aligner1Wafer}" LP1Loaded="{Binding RtDataValues[LP1.IsLoaded]}" LP2Loaded="{Binding RtDataValues[LP2.IsLoaded]}" LP3Loaded="{Binding RtDataValues[LP3.IsLoaded]}"/>
             <customControls:WaferRobotControl OriginT="PMA"    Canvas.Left="664" Canvas.Top="395"   Width="180" Height="270"    RobotTAction="{Binding Robot1TAction}" RobotXAction="{Binding Robot1XAction}" RobotWafer="{Binding BladeAWafer}"/>
             <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="664" Canvas.Top="395"   Width="180" Height="270"    RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}"  RobotWafer="{Binding BladeBWafer}"/>
             <userControls:FOUPFrontView UnitData="{Binding LLAModuleInfo}" VerticalAlignment="Top" Canvas.Top="350" Canvas.Left="480" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" ShowTitle="False"/>
@@ -227,6 +231,7 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="1" Padding="5,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP1.IsLoaded]}"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
@@ -239,7 +244,7 @@
                     <TextBlock Text="Carrier ID" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding LP1CarrierId}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding RtDataValues[LP1.CarrierId]}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
@@ -255,6 +260,8 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP1.IsClamped]}"/>
+
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="2" Padding="5,1">
                     <StackPanel   Orientation="Horizontal"  >
@@ -269,6 +276,7 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP1.IsDocked]}"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="2" Padding="5,1">
                     <StackPanel Orientation="Horizontal">
@@ -327,7 +335,7 @@
 
             </Grid>
 
-            <Grid  Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}" Margin="1,0,0,0">
+            <Grid Margin="1,0,0,0" Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="24"/>
                     <RowDefinition Height="30"/>
@@ -345,47 +353,23 @@
                     <ColumnDefinition  Width="60"/>
                     <ColumnDefinition  Width="*"/>
                 </Grid.ColumnDefinitions>
-                <Label Content="LP1"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" Grid.ColumnSpan="3" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
+                <Label Content="LP2"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" Grid.ColumnSpan="3" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
 
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Padding="5,1,0,1">
                     <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{Binding LP1StatusBackground}" Grid.Row="1" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding LP1Status}" TextAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding RtDataValues[LP2.Status]}" TextAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
                 </Border>
 
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="1" Grid.Column ="2" Padding="5,1">
 
                     <StackPanel   Orientation="Horizontal"  >
-                        <Button Content="Home" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Home">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button Content="Home" Width="80" Height="25" Margin="10,0" Command="{Binding LPHomeCommand}" CommandParameter="LP2"/>
 
-                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Abort">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0" Command="{Binding LPAbortCommand}" CommandParameter="LP2"/>
 
-                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="8,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Reset">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="8,0"  Command="{Binding LPResetCommand}" CommandParameter="LP2"/>
                     </StackPanel>
                 </Border>
 
@@ -396,27 +380,12 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="1" Padding="5,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP2.IsLoaded]}"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
-                        <Button IsEnabled="{Binding IsLP1LoadEnable}" Content="Load" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Load">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 ">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Unload">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1LoadEnable}" Content="Load" Width="80" Height="25" Margin="10,0"      Command="{Binding LPLoadCommand}"   CommandParameter="LP2"/>
+                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 " Command="{Binding LPUnLoadCommand}" CommandParameter="LP2"/>
                     </StackPanel>
                 </Border>
 
@@ -424,19 +393,11 @@
                     <TextBlock Text="Carrier ID" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding LP1CarrierId}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding RtDataValues[LP2.CarrierId]}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
-                        <Button IsEnabled="{Binding IsLP1ReadCarrierIdEnable}" Content="Read Carrier ID" Width="125" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="ReadCarrierID">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1ReadCarrierIdEnable}" Content="Read Carrier ID" Width="125" Height="25" Margin="10,0" Command="{Binding LPReadIDCommand}" CommandParameter="LP2"/>
                     </StackPanel>
                 </Border>
 
@@ -448,28 +409,13 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP2.IsClamped]}"/>
+
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="2" Padding="5,1">
                     <StackPanel   Orientation="Horizontal"  >
-                        <Button IsEnabled="{Binding IsLP1ClampEnable}" Margin="10,0"  Content="Clamp" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Clamp">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="90" Height="25" >
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Unclamp">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-
+                        <Button IsEnabled="{Binding IsLP1ClampEnable}" Margin="10,0"  Content="Clamp" Width="90" Height="25" Command="{Binding LPClampCommand}" CommandParameter="LP2"/>
+                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="90" Height="25" Command="{Binding LPUnClampCommand}" CommandParameter="LP2"/>
                     </StackPanel>
                 </Border>
 
@@ -479,26 +425,16 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP2.IsDocked]}"/>
+
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="2" Padding="5,1">
                     <StackPanel Orientation="Horizontal">
-                        <Button IsEnabled="{Binding IsLP1DockEnable}" Margin="10,0"  Content="Dock" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Dock">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
+                        <Button IsEnabled="{Binding IsLP1DockEnable}" Margin="10,0"  Content="Dock" Width="90" Height="25" Command="{Binding LPDockCommand}" CommandParameter="LP2">
+         
                         </Button>
-                        <Button IsEnabled="{Binding IsLP1UndockEnable}" Margin="10,0" Content="Undock" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Undock">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
+                        <Button IsEnabled="{Binding IsLP1UndockEnable}" Margin="10,0" Content="Undock" Width="90" Height="25" Command="{Binding LPUnDockCommand}" CommandParameter="LP2">
+  
                         </Button>
                     </StackPanel>
                 </Border>
@@ -536,7 +472,8 @@
 
 
             </Grid>
-            <Grid  Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}" Margin="1,0,0,0">
+
+            <Grid Margin="1,0,0,0" Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="24"/>
                     <RowDefinition Height="30"/>
@@ -554,47 +491,23 @@
                     <ColumnDefinition  Width="60"/>
                     <ColumnDefinition  Width="*"/>
                 </Grid.ColumnDefinitions>
-                <Label Content="LP1"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" Grid.ColumnSpan="3" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
+                <Label Content="LP3"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" Grid.ColumnSpan="3" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
 
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Padding="5,1,0,1">
                     <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{Binding LP1StatusBackground}" Grid.Row="1" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding LP1Status}" TextAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding RtDataValues[LP3.Status]}" TextAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
                 </Border>
 
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="1" Grid.Column ="2" Padding="5,1">
 
                     <StackPanel   Orientation="Horizontal"  >
-                        <Button Content="Home" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Home">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button Content="Home" Width="80" Height="25" Margin="10,0" Command="{Binding LPHomeCommand}" CommandParameter="LP3"/>
 
-                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Abort">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0" Command="{Binding LPAbortCommand}" CommandParameter="LP3"/>
 
-                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="8,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Reset">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="8,0"  Command="{Binding LPResetCommand}" CommandParameter="LP3"/>
                     </StackPanel>
                 </Border>
 
@@ -605,27 +518,12 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="1" Padding="5,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP1.IsLoaded]}"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
-                        <Button IsEnabled="{Binding IsLP1LoadEnable}" Content="Load" Width="80" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Load">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 ">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Unload">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1LoadEnable}" Content="Load" Width="80" Height="25" Margin="10,0"      Command="{Binding LPLoadCommand}"   CommandParameter="LP3"/>
+                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 " Command="{Binding LPUnLoadCommand}" CommandParameter="LP3"/>
                     </StackPanel>
                 </Border>
 
@@ -633,19 +531,11 @@
                     <TextBlock Text="Carrier ID" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding LP1CarrierId}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding RtDataValues[LP3.CarrierId]}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="2" Padding="5,1">
                     <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
-                        <Button IsEnabled="{Binding IsLP1ReadCarrierIdEnable}" Content="Read Carrier ID" Width="125" Height="25" Margin="10,0">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="ReadCarrierID">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1ReadCarrierIdEnable}" Content="Read Carrier ID" Width="125" Height="25" Margin="10,0" Command="{Binding LPReadIDCommand}" CommandParameter="LP3"/>
                     </StackPanel>
                 </Border>
 
@@ -657,28 +547,13 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP3.IsClamped]}"/>
+
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="2" Padding="5,1">
                     <StackPanel   Orientation="Horizontal"  >
-                        <Button IsEnabled="{Binding IsLP1ClampEnable}" Margin="10,0"  Content="Clamp" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Clamp">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="90" Height="25" >
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Unclamp">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-
+                        <Button IsEnabled="{Binding IsLP1ClampEnable}" Margin="10,0"  Content="Clamp" Width="90" Height="25" Command="{Binding LPClampCommand}" CommandParameter="LP3"/>
+                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="90" Height="25" Command="{Binding LPUnClampCommand}" CommandParameter="LP3"/>
                     </StackPanel>
                 </Border>
 
@@ -688,27 +563,13 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="1" Padding="5,1,0,1">
                     <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                    <TextBlock Text="{Binding RtDataValues[LP3.IsDocked]}"/>
+
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="2" Padding="5,1">
                     <StackPanel Orientation="Horizontal">
-                        <Button IsEnabled="{Binding IsLP1DockEnable}" Margin="10,0"  Content="Dock" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Dock">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1UndockEnable}" Margin="10,0" Content="Undock" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="Undock">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1DockEnable}" Margin="10,0"  Content="Dock" Width="90" Height="25" Command="{Binding LPDockCommand}" CommandParameter="LP3"/>
+                        <Button IsEnabled="{Binding IsLP1UndockEnable}" Margin="10,0" Content="Undock" Width="90" Height="25" Command="{Binding LPUnDockCommand}" CommandParameter="LP3"/>
                     </StackPanel>
                 </Border>
 
@@ -722,24 +583,8 @@
                 </Border>
                 <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="6" Grid.Column="2" Padding="5,1">
                     <StackPanel Orientation="Horizontal">
-                        <Button IsEnabled="{Binding IsLP1OpenEnable}" Margin="10,0"  Content="Open" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="OpenDoor">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
-                        <Button IsEnabled="{Binding IsLP1CloseEnable}" Margin="10,0" Content="Close" Width="90" Height="25">
-                            <!--<i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Click">
-                                <cal:ActionMessage MethodName="CloseDoor">
-                                    <cal:Parameter Value="{Binding FOUPA.ModuleID}"></cal:Parameter>
-                                </cal:ActionMessage>
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>-->
-                        </Button>
+                        <Button IsEnabled="{Binding IsLP1OpenEnable}" Margin="10,0"  Content="Open" Width="90" Height="25"/>
+                        <Button IsEnabled="{Binding IsLP1CloseEnable}" Margin="10,0" Content="Close" Width="90" Height="25"/>
                     </StackPanel>
                 </Border>
 

+ 7 - 3
Venus/Venus_Themes/UserControls/EFEM.xaml

@@ -4,9 +4,13 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Venus_Themes.UserControls"
+             xmlns:converters="clr-namespace:Venus_Themes.Converters"
              xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800" Name="efem">
+    <UserControl.Resources>
+        <converters:BoolToVisibility2 x:Key="BoolToVisibility2"/>
+    </UserControl.Resources>
     <Viewbox Stretch="Fill">
    
         <Border BorderThickness="0" BorderBrush="Gray">
@@ -76,9 +80,9 @@
                 <TextBlock Text="Cooling1" FontSize="40" Canvas.Left="66"    Canvas.Top="310"/>
                 <TextBlock Text="Aligner1" FontSize="40" Canvas.Left="990"  Canvas.Top="310"/>-->
 
-                <!--<local:Foup Width="230" Height="450" Canvas.Left="44"  Canvas.Top="625" Visibility="Collapsed"/>
-                <local:Foup Width="230" Height="450" Canvas.Left="486" Canvas.Top="625" Visibility="Collapsed"/>
-                <local:Foup Width="230" Height="450" Canvas.Left="916" Canvas.Top="625" Visibility="Collapsed"/>-->
+                <local:Foup Width="230" Height="450" Canvas.Left="44"  Canvas.Top="625"   Visibility="{Binding ElementName=efem,Path=LP1Loaded,Converter={StaticResource BoolToVisibility2}}"/>
+                <local:Foup Width="230" Height="450" Canvas.Left="646" Canvas.Top="625"   Visibility="{Binding ElementName=efem,Path=LP2Loaded,Converter={StaticResource BoolToVisibility2}}"/>
+                    <local:Foup Width="230" Height="450" Canvas.Left="1236" Canvas.Top="625"  Visibility="{Binding ElementName=efem,Path=LP3Loaded,Converter={StaticResource BoolToVisibility2}}"/>
 
                 <TextBlock Text="LP1" Canvas.Left="120"  Canvas.Top="920" FontSize="55"/>
                 <TextBlock Text="LP2" Canvas.Left="700"  Canvas.Top="920" FontSize="55"/>

+ 27 - 0
Venus/Venus_Themes/UserControls/EFEM.xaml.cs

@@ -25,5 +25,32 @@ namespace Venus_Themes.UserControls
             get => (WaferInfo)GetValue(Aligner1WaferProperty);
             set => SetValue(Aligner1WaferProperty, value);
         }
+
+        public static readonly DependencyProperty LP1LoadedProperty = DependencyProperty.Register(
+        "LP1Loaded", typeof(bool), typeof(EFEM),
+        new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP1Loaded
+        {
+            get { return (bool)this.GetValue(LP1LoadedProperty); }
+            set { this.SetValue(LP1LoadedProperty, value); }
+        }
+        public static readonly DependencyProperty LP2LoadedProperty = DependencyProperty.Register(
+       "LP2Loaded", typeof(bool), typeof(EFEM),
+       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP2Loaded
+        {
+            get { return (bool)this.GetValue(LP2LoadedProperty); }
+            set { this.SetValue(LP2LoadedProperty, value); }
+
+        }
+
+        public static readonly DependencyProperty LP3LoadedProperty = DependencyProperty.Register(
+       "LP3Loaded", typeof(bool), typeof(EFEM),
+       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP3Loaded
+        {
+            get { return (bool)this.GetValue(LP3LoadedProperty); }
+            set { this.SetValue(LP3LoadedProperty, value); }
+        }
     }
 }