Ver código fonte

1.添加部分OpertionOverView ui功能

lixiang 1 ano atrás
pai
commit
85fc03f838

+ 7 - 0
Venus/Venus_MainPages/Venus_MainPages.csproj

@@ -275,6 +275,9 @@
     <Compile Include="Views\VATPerformanceView.xaml.cs">
       <DependentUpon>VATPerformanceView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\WaferAssociationUnit.xaml.cs">
+      <DependentUpon>WaferAssociationUnit.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\WaferHistoryDBView.xaml.cs">
       <DependentUpon>WaferHistoryDBView.xaml</DependentUpon>
     </Compile>
@@ -414,6 +417,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\WaferAssociationUnit.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="Views\WaferHistoryDBView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 65 - 0
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -1,6 +1,7 @@
 using MECF.Framework.Common.CommonData;
 using MECF.Framework.Common.DataCenter;
 using OpenSEMI.ClientBase;
+using Prism.Commands;
 using Prism.Mvvm;
 using System;
 using System.Collections.Generic;
@@ -49,6 +50,14 @@ namespace Venus_MainPages.ViewModels
         private WaferInfo m_EFEMBladeAWafer;
         private WaferInfo m_EFEMBladeBWafer;
         private WaferInfo m_Aligner1Wafer;
+        private int m_LP1WaferCount;
+        private int m_LP2WaferCount;
+        private int m_LP3WaferCount;
+        private WaferAssociationInfo _lp1WaferAssociation;
+        private WaferAssociationInfo _lp2WaferAssociation;
+        private WaferAssociationInfo _lp3WaferAssociation;
+
+
 
 
         #endregion
@@ -204,6 +213,43 @@ namespace Venus_MainPages.ViewModels
             get { return m_Aligner1Wafer; }
             set { SetProperty(ref m_Aligner1Wafer, value); }
         }
+        public int LP1WaferCount
+        {
+            get { return m_LP1WaferCount; }
+            set { SetProperty(ref m_LP1WaferCount, value); }
+        }
+        public int LP2WaferCount
+        {
+            get { return m_LP2WaferCount; }
+            set { SetProperty(ref m_LP2WaferCount, value); }
+        }
+        public int LP3WaferCount
+        {
+            get { return m_LP3WaferCount; }
+            set { SetProperty(ref m_LP3WaferCount, value); }
+        }
+        public WaferAssociationInfo LP1WaferAssociation
+        {
+            get { return _lp1WaferAssociation; }
+            set { SetProperty(ref _lp1WaferAssociation, value); }
+        }
+        public WaferAssociationInfo LP2WaferAssociation
+        {
+            get { return _lp2WaferAssociation; }
+            set { SetProperty(ref _lp2WaferAssociation, value); }
+        }
+        public WaferAssociationInfo LP3WaferAssociation
+        {
+            get { return _lp3WaferAssociation; }
+            set { SetProperty(ref _lp3WaferAssociation, value); }
+        }
+        #endregion
+
+        #region 命令
+        private DelegateCommand _LoadCommand;
+        public DelegateCommand LoadCommand =>
+            _LoadCommand ?? (_LoadCommand = new DelegateCommand(OnLoad));
+        
         #endregion
 
         #region 构造函数
@@ -223,12 +269,27 @@ namespace Venus_MainPages.ViewModels
             LLAIsInstalled = allModules.Contains("LLA");
             LLBIsInstalled = allModules.Contains("LLB");
             EFEMIsInstalled = allModules.Contains("EFEM");
+
+          
+        }
+        #endregion
+
+        #region 命令方法
+        private void OnLoad()
+        {
+            LP1WaferAssociation = new WaferAssociationInfo();
+            LP1WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP1"];
+            LP2WaferAssociation = new WaferAssociationInfo();
+            LP2WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP2"];
+            LP3WaferAssociation = new WaferAssociationInfo();
+            LP3WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP3"];
         }
         #endregion
 
         #region 私有方法
         private void Timer_Tick(object sender, EventArgs e)
         {
+           
             LP1ModuleInfo = ModuleManager.ModuleInfos["LP1"];
             LP2ModuleInfo = ModuleManager.ModuleInfos["LP2"];
             LP3ModuleInfo = ModuleManager.ModuleInfos["LP3"];
@@ -274,6 +335,10 @@ namespace Venus_MainPages.ViewModels
             RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction");
 
             RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
+            LP1WaferCount = LP1ModuleInfo.WaferManager.Wafers.Where(x=>x.WaferStatus!=0).Count();
+            LP2WaferCount = LP2ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
+            LP3WaferCount = LP3ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
+
         }
         private async void RobotMoveInfoChanged(RobotMoveInfo oldValue, RobotMoveInfo newValue)
         {

+ 43 - 6
Venus/Venus_MainPages/Views/OperationOverView.xaml

@@ -10,12 +10,19 @@
              xmlns:Attach="clr-namespace:Venus_UI.Themes.Attach;assembly=Venus_Themes"
              xmlns:converters="clr-namespace:Venus_Themes.Converters;assembly=Venus_Themes"
              xmlns:userControls="clr-namespace:Venus_Themes.UserControls;assembly=Venus_Themes"
-             
+             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
              xmlns:prism="http://prismlibrary.com/"
              prism:ViewModelLocator.AutoWireViewModel="True"
              xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
+            
              xmlns:unity="clr-namespace:Venus_MainPages.Unity"
              d:DesignHeight="450" d:DesignWidth="800">
+    <i:Interaction.Triggers>
+        <i:EventTrigger EventName="Loaded">
+            <i:InvokeCommandAction Command="{Binding LoadCommand}"/>
+        </i:EventTrigger>
+    </i:Interaction.Triggers>
+
     <UserControl.Resources>
         <converters:BoolToVisibility x:Key="boolToVisibility"/>
         <converters:BoolToVisibility2 x:Key="boolToVisibility2"/>
@@ -53,7 +60,7 @@
             <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="310" Canvas.Top="160"   Width="160" Height="240"     RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}"  RobotWafer="{Binding TMBladeBWafer}"/>
         </Canvas>
 
-        <Canvas Canvas.Left="-150">
+        <Canvas Canvas.Left="-100" Canvas.Top="-40">
             <RadioButton Content="Carrier" Name="CarrierRadioButton"  Canvas.Left="900"   Canvas.Top="106" Width="120" Height="33" Style="{StaticResource Button_RadioButton}" IsChecked="True"/>
             <RadioButton Content="Job"     Name="JobRadioButton"      Canvas.Left="1020"  Canvas.Top="106" Width="120" Height="33" Style="{StaticResource Button_RadioButton}" IsChecked="False"/>
             <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility2}}">
@@ -61,14 +68,44 @@
                     <StackPanel>
                         <TextBox Background="{DynamicResource Table_BG_Title}"  Text="LP1" Width="250" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
                         <ctrls:FOUPFrontView UnitData="{Binding LP1ModuleInfo}" ShowTitle="False"/>
+                        <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
+                              <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="LP1WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                        </TextBlock>
+                        </TextBlock>
+                        <customControls:PathButton Content="Scan Wafer" HorizontalAlignment="Center" Margin="0,5,0,0" Width="120" Height="30"/>
                     </StackPanel>
                     <StackPanel>
                         <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP2" Width="250" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
-                        <ctrls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}" ShowTitle="False"/>
+                        <ctrls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}" ShowTitle="False" />
+                        <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
+                            <TextBlock.Text>
+                                <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                    <Binding Path="LP2WaferCount"></Binding>
+                                </MultiBinding>
+                            </TextBlock.Text>
+                        </TextBlock>
+                        <customControls:PathButton Content="Scan Wafer" HorizontalAlignment="Center" Margin="0,5,0,0" Width="120" Height="30"/>
+
                     </StackPanel>
                     <StackPanel>
                         <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP3" Width="250" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
                         <ctrls:FOUPFrontView UnitData="{Binding LP3ModuleInfo}" ShowTitle="False"/>
+                        <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
+                              <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="LP3WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                        </TextBlock>
+                        </TextBlock>
+                        <customControls:PathButton Content="Scan Wafer" HorizontalAlignment="Center" Margin="0,5,0,0" Width="120" Height="30"/>
+
                     </StackPanel>
                 </StackPanel>
             </TabPanel>
@@ -88,9 +125,9 @@
                     <TextBox Text="LP2" Background="{DynamicResource Table_BG_Title}" Grid.Column="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
                     <TextBox Text="LP2" Background="{DynamicResource Table_BG_Title}" Grid.Column="2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
 
-                    <ctrls:WaferAssociationUnit  Grid.Row="1"/>
-                    <ctrls:WaferAssociationUnit  Grid.Row="1" Grid.Column="1"/>
-                    <ctrls:WaferAssociationUnit  Grid.Row="1" Grid.Column="2"/>
+                    <local:WaferAssociationUnit  Grid.Row="1"                  WAInfo="{Binding LP1WaferAssociation}" x:Name="test1"  MouseLeftButtonDown="test1_MouseLeftButtonDown"/>
+                    <local:WaferAssociationUnit  Grid.Row="1" Grid.Column="1"  WAInfo="{Binding LP2WaferAssociation}"/>
+                    <local:WaferAssociationUnit  Grid.Row="1" Grid.Column="2"  WAInfo="{Binding LP3WaferAssociation}"/>
 
                 </Grid>
 

+ 9 - 4
Venus/Venus_MainPages/Views/OperationOverView.xaml.cs

@@ -25,11 +25,16 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public WaferAssociationInfo WAInfo
+        //public WaferAssociationInfo WAInfo
+        //{
+        //    get { return (WaferAssociationInfo)GetValue(WAInfoProperty); }
+        //    set { SetValue(WAInfoProperty, value); }
+        //}
+        //public static readonly DependencyProperty WAInfoProperty = DependencyProperty.Register("WAInfo", typeof(WaferAssociationInfo), typeof(OperationOverView), new UIPropertyMetadata(null));
+
+        private void test1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
         {
-            get { return (WaferAssociationInfo)GetValue(WAInfoProperty); }
-            set { SetValue(WAInfoProperty, value); }
+            var test = test1;
         }
-        public static readonly DependencyProperty WAInfoProperty = DependencyProperty.Register("WAInfo", typeof(WaferAssociationInfo), typeof(OperationOverView), new UIPropertyMetadata(null));
     }
 }

+ 34 - 41
Venus/Venus_Themes/UserControls/WaferAssociationUnit.xaml

@@ -1,11 +1,13 @@
-<UserControl x:Class="Venus_Themes.UserControls.WaferAssociationUnit"
+<UserControl x:Class="Venus_MainPages.Views.WaferAssociationUnit"
              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:Venus_Themes.UserControls"
+             xmlns:local="Venus_MainPages.Views"
+             xmlns:unity="clr-namespace:Venus_MainPages.Unity"
+            
              mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
+             d:DesignHeight="450" d:DesignWidth="800" x:Name="WaferUnit">
     <Grid>
         <Grid.ColumnDefinitions>
             <ColumnDefinition/>
@@ -16,34 +18,25 @@
                 <RowDefinition Height="Auto"></RowDefinition>
                 <RowDefinition></RowDefinition>
             </Grid.RowDefinitions>
-            <Grid>
+            <Grid unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.LineThickness="1">
                 <Grid.RowDefinitions>
-                    <RowDefinition Height="24"></RowDefinition>
                     <RowDefinition Height="30"></RowDefinition>
                     <RowDefinition Height="30"></RowDefinition>
-                    <RowDefinition Height="20"></RowDefinition>
+                    <RowDefinition Height="30"></RowDefinition>
+                    <RowDefinition Height="30"></RowDefinition>
                     <RowDefinition Height="Auto"></RowDefinition>
                     <RowDefinition Height="Auto"></RowDefinition>
                 </Grid.RowDefinitions>
 
-                <StackPanel Grid.Row="0" Orientation="Horizontal">
-                    <Border BorderBrush="White" BorderThickness="1,1,1,0" Background="{DynamicResource Table_BG_Title}" Width="90" Padding="5,1">
-                        <TextBlock Text="Lot ID" TextWrapping="Wrap"  Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
-                    </Border>
-                    <Border BorderBrush="White" BorderThickness="0,1,1,0" Background="{DynamicResource Table_BG_Content}" Width="210" Padding="5,1">
-                        <StackPanel Orientation="Horizontal">
-                            <!--<ctrl:TextBoxEx Text="{Binding WAInfo.LotId, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" TextSaved="{Binding WAInfo.LotIdSaved, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Mode=TwoWay}"  Width="138" ></ctrl:TextBoxEx>-->
+                <TextBlock Grid.Row="0" Text="{Binding ElementName=WaferUnit,Path=WAInfo.ModuleData.WaferManager.Wafers.Count}" TextWrapping="Wrap"  Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
 
-                        </StackPanel>
-                    </Border>
-                </StackPanel>
                 <StackPanel Grid.Row="1" Orientation="Horizontal">
-                    <Border BorderBrush="White" BorderThickness="1" Background="{DynamicResource Table_BG_Title}" Width="90" Padding="5,1">
+                    
                         <TextBlock Text="Sequence" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
-                    </Border>
-                    <Border BorderBrush="White" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Content}" Width="210" Padding="5,1">
+
+                  
                         <StackPanel Orientation="Horizontal">
-                            <TextBox Text="{Binding WAInfo.SequenceName, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" IsReadOnly="True" Width="140" ></TextBox>
+                            <TextBox Text="{Binding WAInfo.SequenceName, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" IsReadOnly="True" Width="120" ></TextBox>
                             <Button Content="选择" Width="50" Margin="5,0,0,0" >
                                 <!--<i:Interaction.Triggers>
                                             <i:EventTrigger EventName="Click">
@@ -54,11 +47,11 @@
                                         </i:Interaction.Triggers>-->
                             </Button>
                         </StackPanel>
-                    </Border>
+
                 </StackPanel>
 
                 <StackPanel Grid.Row="2" Orientation="Horizontal"  HorizontalAlignment="Left" VerticalAlignment="Center">
-                    <Button Content="全选"  Height="25"  Width="150">
+                    <Button Content="Select All"  Height="25"  Width="120">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="SetAll">
@@ -67,7 +60,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="全不选"  Height="25"  Width="150">
+                    <Button Content="DeSelect All"  Height="25"  Width="120">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="DeselectAll">
@@ -78,21 +71,21 @@
                     </Button>
                 </StackPanel>
                 <StackPanel Grid.Row="3" Orientation="Horizontal" >
-                    <Border BorderBrush="White" BorderThickness="1" Background="{DynamicResource Table_BG_Title}" Width="50" Padding="5,1">
+                    
                         <TextBlock Text="Name" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
-                    </Border>
-                    <Border BorderBrush="White" BorderThickness="0,1,1,0" Background="{DynamicResource Table_BG_Content}" Width="90" Padding="5,1">
+
+                  
                         <TextBlock x:Name="txtJobID" Foreground="{DynamicResource FG_Black}"  Text="{Binding WAInfo.JobID, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" VerticalAlignment="Center" FontSize="12" FontFamily="Arial"  Width="Auto" Height="20"></TextBlock>
-                    </Border>
-                    <Border BorderBrush="White" BorderThickness="0,1,1,0" Background="{DynamicResource Table_BG_Title}" Width="50" Padding="5,1">
+                   
+                 
                         <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
-                    </Border>
-                    <Border BorderBrush="White" BorderThickness="0,1,1,0" Background="{DynamicResource Table_BG_Content}" Width="110" Padding="5,1">
+              
+                  
                         <TextBlock   VerticalAlignment="Center" Foreground="{DynamicResource FG_Black}" Text="{Binding WAInfo.JobStatus, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"  FontSize="12" FontFamily="Arial"  Width="Auto" Height="20"></TextBlock>
-                    </Border>
+                   
                 </StackPanel>
                 <StackPanel Grid.Row="4" Orientation="Horizontal" Margin="0,0" HorizontalAlignment="Left" VerticalAlignment="Center">
-                    <Button Content="创建作业" Width="150" Height="25" >
+                    <Button Content="Create Job" Width="120" Height="25" >
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="CreateJob">
@@ -101,7 +94,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="终止作业"  Width="150" Height="25">
+                    <Button Content="Abort Job"  Width="120" Height="25">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="AbortJob">
@@ -111,8 +104,8 @@
                                 </i:Interaction.Triggers>-->
                     </Button>
                 </StackPanel>
-                <StackPanel Grid.Row="5" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                    <Button Content="开始" Width="90" Height="25">
+                <StackPanel Grid.Row="5" Orientation="Horizontal"  VerticalAlignment="Center" >
+                    <Button Content="Start" Width="60" Height="25" >
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Start">
@@ -121,7 +114,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="暂停" Width="90" Height="25" Margin="15,0,0,0">
+                    <Button Content="Stop" Width="60" Height="25" Margin="30,0,0,0">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Pause">
@@ -130,7 +123,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="继续" Width="90" Height="25" Margin="15,0,0,0">
+                    <Button Content="Abort" Width="60" Height="25" Margin="30,0,0,0">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Resume">
@@ -143,8 +136,8 @@
                 </StackPanel>
             </Grid>
 
-            <ListBox Grid.Row="1" Focusable="False" IsEnabled="{Binding WAInfo.EnableEditSlot, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
-                 ItemsSource="{Binding WAInfo.ModuleData.WaferManager.Wafers, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" Margin="0,0">
+            <ListBox Grid.Row="1" 
+                 ItemsSource="{Binding ElementName=WaferUnit,Path=WAInfo.ModuleData.WaferManager.Wafers}" Margin="0,0">
                 <ListBox.Resources>
                     <Style TargetType="ListBoxItem" BasedOn="{StaticResource ResourceKey={x:Type ListBoxItem}}">
                         <Setter Property="Rectangle.StrokeThickness" Value="0"/>
@@ -159,13 +152,13 @@
                                 <ColumnDefinition Width="Auto"></ColumnDefinition>
                                 <ColumnDefinition Width="Auto"></ColumnDefinition>
                             </Grid.ColumnDefinitions>
-                            <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1"  Width="40" Padding="5,1">
+                            <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1"  Width="30" Padding="5,1">
                                 <TextBlock Name="txtSlotIndex" Text="{Binding SlotIndex}" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
                             </Border>
                             <!--<Border Grid.Column="1" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Title}" Width="50" Padding="5,1">
                             <TextBlock Text="{Binding WaferID}" ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
                         </Border>-->
-                            <Border Grid.Column="1" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Width="145" Padding="5,1">
+                            <Border Grid.Column="1" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Width="102" Padding="5,1">
                                 <Border.Style>
                                     <Style>
                                         <Style.Triggers>

+ 8 - 1
Venus/Venus_Themes/UserControls/WaferAssociationUnit.xaml.cs

@@ -12,8 +12,9 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using Venus_MainPages.Unity;
 
-namespace Venus_Themes.UserControls
+namespace Venus_MainPages.Views
 {
     /// <summary>
     /// WaferAssociationUnit.xaml 的交互逻辑
@@ -24,5 +25,11 @@ namespace Venus_Themes.UserControls
         {
             InitializeComponent();
         }
+        public WaferAssociationInfo WAInfo
+        {
+            get { return (WaferAssociationInfo)GetValue(WAInfoProperty); }
+            set { SetValue(WAInfoProperty, value); }
+        }
+        public static readonly DependencyProperty WAInfoProperty = DependencyProperty.Register("WAInfo", typeof(WaferAssociationInfo), typeof(WaferAssociationUnit));
     }
 }

+ 1 - 0
Venus/Venus_RT/Devices/EFEM/EfemMessage.cs

@@ -341,6 +341,7 @@ namespace Venus_RT.Devices.YASKAWA
             ["System"] = ModuleName.EFEM,
             ["P1"]     = ModuleName.LP1,
             ["P2"]     = ModuleName.LP2,
+            ["P3"]     = ModuleName.LP3,
             ["LLA"]    = ModuleName.PMA,
             ["LLB"]    = ModuleName.PMB,
             ["ALIGN"]  = ModuleName.Cooling1,

+ 8 - 2
Venus/Venus_RT/Devices/EFEM/JetEfem.cs

@@ -131,7 +131,8 @@ namespace Venus_RT.Devices.EFEM
             };
 
             _status = RState.Running;
-            return _socket.Write(_currentMsg.ToString());
+            string data = _currentMsg.ToString();
+            return _socket.Write(data);
         }
         public override bool Home(ModuleName mod)
         {
@@ -600,7 +601,12 @@ namespace Venus_RT.Devices.EFEM
                 switch (rec_msg.Head)
                 {
                     case EfemMessage.MsgHead.ACK:
-                        _revMsg = rec_msg;
+                        if (msg.Contains("ERROR"))
+                        {
+                            _status = RState.End;
+                            _revMsg = rec_msg;
+                        }
+                        
                         break;
 
                     case EfemMessage.MsgHead.INF:

+ 1 - 1
Venus/Venus_RT/Modules/EFEM/EfemEntity.cs

@@ -168,7 +168,7 @@ namespace Venus_RT.Modules
 
             _lpms[0].Initialize();
             _lpms[1].Initialize();
-
+            
             OP.Subscribe($"{ModuleName.EFEM}.{EfemOperation.Home}",             (cmd, args) => { PostMsg(MSG.HomeAll); return true; });
             OP.Subscribe($"{ModuleName.EFEM}.{EfemOperation.ClearError}",       (cmd, args) => { PostMsg(MSG.Recover); return true; });
             OP.Subscribe($"{ModuleName.EFEM}.{EfemOperation.TurnOffBuzzer}",    (cmd, args) => { PostMsg(MSG.TurnOffBuzzer); return true; });

+ 2 - 0
Venus/Venus_RT/Modules/EFEM/EfemHomeRoutine.cs

@@ -79,12 +79,14 @@ namespace Venus_RT.Modules.EFEM
 
         private bool IsStepComplete()
         {
+
             if (_efem.Status == RState.End)
             {
                 return true;
             }
             else if (_efem.Status == RState.Failed || _efem.Status == RState.Timeout)
             {
+
                 LOG.Write(eEvent.ERR_EFEM_ROBOT, Module, $"Efem home failed: {_efem.Status}");
                 return true;
             }

+ 1 - 1
Venus/Venus_RT/Modules/RouteManager.cs

@@ -224,7 +224,7 @@ namespace Venus_RT.Modules
 
 
             DATA.Subscribe("SYSTEM.FsmState", () => (((RtState)fsm.State).ToString()));
-            DATA.Subscribe("TMCycle.CycleIndex", () => (_TMCycle.CycleIndex));
+            DATA.Subscribe("TMCycle.CycleIndex", () => (_TMCycle?.CycleIndex));
 
             OP.Subscribe("ReturnWafer", InvokeReturnWafer);
 

+ 0 - 7
Venus/Venus_Themes/Venus_Themes.csproj

@@ -181,9 +181,6 @@
     <Compile Include="UserControls\Turbo.xaml.cs">
       <DependentUpon>Turbo.xaml</DependentUpon>
     </Compile>
-    <Compile Include="UserControls\WaferAssociationUnit.xaml.cs">
-      <DependentUpon>WaferAssociationUnit.xaml</DependentUpon>
-    </Compile>
     <Compile Include="UserControls\WaferCtrl.xaml.cs">
       <DependentUpon>WaferCtrl.xaml</DependentUpon>
     </Compile>
@@ -371,10 +368,6 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="UserControls\WaferAssociationUnit.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
     <Page Include="UserControls\WaferCtrl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>