Browse Source

合并代码
优化efem界面

# Conflicts:
# Venus/Venus_RT/Devices/EFEM/JetEfem.cs

lixiang 1 year ago
parent
commit
2cc409c5f8

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

@@ -63,6 +63,13 @@ namespace Venus_MainPages.ViewModels
 
         private WaferInfo m_Aligner1Wafer;
 
+        private string m_LP1Status;
+        private string m_LP2Status;
+        private string m_LP3Status;
+
+        private List<string> m_RtDataKeys=new List<string>();
+        private Dictionary<string, object> m_RtDataValues;
+
         #endregion
 
         #region 属性
@@ -211,6 +218,26 @@ namespace Venus_MainPages.ViewModels
             get { return m_LLBWafer; }
             set { SetProperty(ref m_LLBWafer, value); }
         }
+        public string LP1Status
+        {
+            get { return m_LP1Status; }
+            set { SetProperty(ref m_LP1Status, value); }
+        }
+        public string LP2Status
+        {
+            get { return m_LP2Status; }
+            set { SetProperty(ref m_LP2Status, value); }
+        }
+        public string LP3Status
+        {
+            get { return m_LP3Status; }
+            set { SetProperty(ref m_LP3Status, value); }
+        }
+        public Dictionary<string, object> RtDataValues
+        {
+            get { return m_RtDataValues; }
+            set { SetProperty(ref m_RtDataValues, value); }
+        }
         #endregion
 
         #region 命令
@@ -262,7 +289,54 @@ namespace Venus_MainPages.ViewModels
         private DelegateCommand _RobotHomeCommand;
         public DelegateCommand RobotHomeCommand =>
             _RobotHomeCommand ?? (_RobotHomeCommand = new DelegateCommand(OnRobotHome));
-        
+
+        private DelegateCommand<object> _LPHomeCommand;
+        public DelegateCommand<object> LPHomeCommand =>
+            _LPHomeCommand ?? (_LPHomeCommand = new DelegateCommand<object>(OnLPHome));
+
+        private DelegateCommand<object> _LPAbortCommand;
+        public DelegateCommand<object> LPAbortCommand =>
+            _LPAbortCommand ?? (_LPAbortCommand = new DelegateCommand<object>(OnLPAbort));
+
+        private DelegateCommand<object> _LPResetCommand;
+        public DelegateCommand<object> LPResetCommand =>
+            _LPResetCommand ?? (_LPResetCommand = new DelegateCommand<object>(OnLPReset));
+
+        private DelegateCommand<object> _LPLoadCommand;
+        public DelegateCommand<object> LPLoadCommand =>
+            _LPLoadCommand ?? (_LPLoadCommand = new DelegateCommand<object>(OnLPLoad));
+
+        private DelegateCommand<object> _LPUnLoadCommand;
+        public DelegateCommand<object> LPUnLoadCommand =>
+            _LPUnLoadCommand ?? (_LPUnLoadCommand = new DelegateCommand<object>(OnLPUnLoad));
+
+        private DelegateCommand<object> _LPReadIDCommand;
+        public DelegateCommand<object> LPReadIDCommand =>
+            _LPReadIDCommand ?? (_LPReadIDCommand = new DelegateCommand<object>(OnLPReadID));
+
+        private DelegateCommand<object> _LPClampCommand;
+        public DelegateCommand<object> LPClampCommand =>
+            _LPClampCommand ?? (_LPClampCommand = new DelegateCommand<object>(OnLPClamp));
+
+        private DelegateCommand<object> _LPUnClampCommand;
+        public DelegateCommand<object> LPUnClampCommand =>
+            _LPUnClampCommand ?? (_LPUnClampCommand = new DelegateCommand<object>(OnLPUnClamp));
+
+        private DelegateCommand<object> _LPDockCommand;
+        public DelegateCommand<object> LPDockCommand =>
+            _LPDockCommand ?? (_LPDockCommand = new DelegateCommand<object>(OnLPDock));
+
+        private DelegateCommand<object> _LPUnDockCommand;
+        public DelegateCommand<object> LPUnDockCommand =>
+            _LPUnDockCommand ?? (_LPUnDockCommand = new DelegateCommand<object>(OnLPUnDock));
+
+        private DelegateCommand<object> _LPOpenDoorCommand;
+        public DelegateCommand<object> LPOpenDoorCommand =>
+            _LPOpenDoorCommand ?? (_LPOpenDoorCommand = new DelegateCommand<object>(OnLPOpenDoor));
+
+        private DelegateCommand<object> _LPCloseDoorCommand;
+        public DelegateCommand<object> LPCloseDoorCommand =>
+            _LPCloseDoorCommand ?? (_LPCloseDoorCommand = new DelegateCommand<object>(OnLPCloseDoor));
         #endregion
 
         #region 构造函数
@@ -283,6 +357,8 @@ namespace Venus_MainPages.ViewModels
             EFEMModules.Add(EFEMModule.Aligner1);
             OnModuleChange("Pick");
             OnModuleChange("Place");
+
+            Init();
             //OnModuleChange("Extend");
 
             //OnModuleChange("Retract");
@@ -504,6 +580,62 @@ namespace Venus_MainPages.ViewModels
         {
             InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Home}");
         }
+        private void OnLPHome(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Home");
+        }
+        private void OnLPAbort(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Abort");
+
+        }
+        private void OnLPReset(object obj)
+        {
+            //InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.ReSet");
+
+        }
+        private void OnLPLoad(object obj)
+        { 
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Load");
+
+        }
+        private void OnLPUnLoad(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.UnLoad");
+
+        }
+        private void OnLPReadID(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.ReadCarrierId");
+
+        }
+        private void OnLPClamp(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Clamp");
+
+        }
+        private void OnLPUnClamp(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Unclamp");
+
+        }
+        private void OnLPDock(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Dock");
+
+        }
+        private void OnLPUnDock(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Undock");
+        }
+        private void OnLPOpenDoor(object obj)
+        {
+
+        }
+        private void OnLPCloseDoor(object obj)
+        {
+
+        }
         #endregion
 
         #region 私有方法
@@ -527,9 +659,17 @@ namespace Venus_MainPages.ViewModels
             BladeAWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
             BladeBWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
             Aligner1Wafer= ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
+            RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
+
 
         }
+        private void Init()
+        {
+            m_RtDataKeys.Add("LP1.Status");
+            m_RtDataKeys.Add("LP2.Status");
+            m_RtDataKeys.Add("LP3.Status");
 
+        }
         #endregion
 
     }

+ 193 - 2
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -1,5 +1,7 @@
 using MECF.Framework.Common.CommonData;
 using MECF.Framework.Common.DataCenter;
+using MECF.Framework.Common.Equipment;
+using MECF.Framework.Common.OperationCenter;
 using OpenSEMI.ClientBase;
 using Prism.Commands;
 using Prism.Mvvm;
@@ -56,7 +58,7 @@ namespace Venus_MainPages.ViewModels
         private WaferAssociationInfo _lp1WaferAssociation;
         private WaferAssociationInfo _lp2WaferAssociation;
         private WaferAssociationInfo _lp3WaferAssociation;
-
+        
 
 
 
@@ -249,7 +251,68 @@ namespace Venus_MainPages.ViewModels
         private DelegateCommand _LoadCommand;
         public DelegateCommand LoadCommand =>
             _LoadCommand ?? (_LoadCommand = new DelegateCommand(OnLoad));
-        
+
+        private DelegateCommand<object> _LoadWaferCommand;
+        public DelegateCommand<object> LoadWaferCommand =>
+            _LoadWaferCommand ?? (_LoadWaferCommand = new DelegateCommand<object>(OnLoadWafer));
+
+        private DelegateCommand<object> _UnLoadWaferCommand;
+        public DelegateCommand<object> UnLoadWaferCommand =>
+            _UnLoadWaferCommand ?? (_UnLoadWaferCommand = new DelegateCommand<object>(OnUnLoadWafer));
+
+        private DelegateCommand<object> _SelectAllCommand;
+        public DelegateCommand<object> SelectAllCommand =>
+            _SelectAllCommand ?? (_SelectAllCommand = new DelegateCommand<object>(OnSelectAll));
+
+        private DelegateCommand<object> _UnSelectAllCommand;
+        public DelegateCommand<object> UnSelectAllCommand =>
+            _UnSelectAllCommand ?? (_UnSelectAllCommand = new DelegateCommand<object>(OnUnSelectAll));
+
+        private DelegateCommand<object> _StartCommand;
+        public DelegateCommand<object> StartCommand =>
+            _StartCommand ?? (_StartCommand = new DelegateCommand<object>(OnStart));
+
+        private DelegateCommand<object> _StopCommand;
+        public DelegateCommand<object> StopCommand =>
+            _StopCommand ?? (_StopCommand = new DelegateCommand<object>(OnStop));
+
+        private DelegateCommand<object> _AbortCommand;
+        public DelegateCommand<object> AbortCommand =>
+            _AbortCommand ?? (_AbortCommand = new DelegateCommand<object>(OnAbort));
+
+
+        private DelegateCommand _HomeAllCommand;
+        public DelegateCommand HomeAllCommand =>
+            _HomeAllCommand ?? (_HomeAllCommand = new DelegateCommand(OnHomeAll));
+
+        private DelegateCommand _PauseAllJobCommand;
+        public DelegateCommand PauseAllJobCommand =>
+            _PauseAllJobCommand ?? (_PauseAllJobCommand = new DelegateCommand(OnPauseAllJob));
+
+        private DelegateCommand _AbortAllCommand;
+        public DelegateCommand AbortAllCommand =>
+            _AbortAllCommand ?? (_AbortAllCommand = new DelegateCommand(OnAbortAll));
+
+        private DelegateCommand _ReturnAllWaferCommand;
+        public DelegateCommand ReturnAllWaferCommand =>
+            _ReturnAllWaferCommand ?? (_ReturnAllWaferCommand = new DelegateCommand(OnReturnAllWafer));
+
+        private DelegateCommand _SetSequenceCommand;
+        public DelegateCommand SetSequenceCommand =>
+            _SetSequenceCommand ?? (_SetSequenceCommand = new DelegateCommand(OnSetSequence));
+
+        private DelegateCommand<object> _CreateJobCommand;
+        public DelegateCommand<object> CreateJobCommand =>
+            _CreateJobCommand ?? (_CreateJobCommand = new DelegateCommand<object>(OnCreateJob));
+
+        private DelegateCommand _EnableAutoCommand;
+        public DelegateCommand EnableAutoCommand =>
+            _EnableAutoCommand ?? (_EnableAutoCommand = new DelegateCommand(OnEnableAuto));
+
+        private DelegateCommand _EnableManualCommand;
+        public DelegateCommand EnableManualCommand =>
+            _EnableManualCommand ?? (_EnableManualCommand = new DelegateCommand(OnEnableManual));
+
         #endregion
 
         #region 构造函数
@@ -284,6 +347,94 @@ namespace Venus_MainPages.ViewModels
             LP3WaferAssociation = new WaferAssociationInfo();
             LP3WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP3"];
         }
+
+        private void OnLoadWafer(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Load", ModuleManager.ModuleInfos[obj.ToString()].ModuleID);
+        }
+        private void OnUnLoadWafer(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.UnLoad", ModuleManager.ModuleInfos[obj.ToString()].ModuleID);
+        }
+        private void OnSelectAll(object obj)
+        {
+            var info=obj as WaferAssociationInfo;
+            info.SlotFrom = 1;
+            info.SlotTo = 25;
+            AssociateSequence(info, true);
+        }
+        private void OnUnSelectAll(object obj)
+        {
+            var info = obj as WaferAssociationInfo;
+            info.SlotFrom = 1;
+            info.SlotTo = 25;
+            AssociateSequence(info, false);
+        }
+        private void OnStart(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation("System.StartJob", obj.ToString());
+        }
+        private void OnStop(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation("System.PauseJob", obj.ToString());
+        }
+        private void OnAbort(object obj)
+        {
+            InvokeClient.Instance.Service.DoOperation("System.ResumeJob", obj.ToString());
+        }
+        private void OnHomeAll()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.HomeAll");
+        }
+        private void OnPauseAllJob()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.PauseJob", LP1WaferAssociation.JobID);
+            InvokeClient.Instance.Service.DoOperation("System.PauseJob", LP2WaferAssociation.JobID);
+            InvokeClient.Instance.Service.DoOperation("System.PauseJob", LP3WaferAssociation.JobID);
+
+        }
+        private void OnAbortAll()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.Abort");
+        }
+        private void OnReturnAllWafer()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.Abort");
+        }
+        private void OnSetSequence()
+        {
+            //var info = obj as WaferAssociationInfo;
+        }
+        private void OnCreateJob(object obj)
+        {
+            var info = obj as WaferAssociationInfo;
+            List<string> slotSequence = new List<string>();
+            info.ModuleData.WaferManager.Wafers.ForEach(key => { slotSequence.Insert(0, key.SequenceName); });
+
+            string jobId = info.LotId.Trim();
+            if (string.IsNullOrEmpty(jobId))
+                jobId = "CJ_Local_" + info.ModuleData.ModuleID;
+            info.LotId = jobId;
+            info.LotIdSaved = true;
+
+            Dictionary<string, object> param = new Dictionary<string, object>()
+            {
+                {"JobId", jobId},
+                {"Module", info.ModuleData.ModuleID},
+                {"SlotSequence", slotSequence.ToArray()},
+                {"AutoStart", true},
+            };
+            InvokeClient.Instance.Service.DoOperation("System.CreateJob", param);
+
+        }
+        private void OnEnableAuto()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.SetAutoMode");
+        }
+        private void OnEnableManual()
+        {
+            InvokeClient.Instance.Service.DoOperation("System.SetManualMode");
+        }
         #endregion
 
         #region 私有方法
@@ -450,8 +601,48 @@ namespace Venus_MainPages.ViewModels
 
             m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
             m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
+            m_RtDataKeys.Add("System.IsAutoMode");
+
 
+            
+
+        }
+
+        private void AssociateSequence(WaferAssociationInfo info, bool flag, int slot = -1)
+        {
+            List<WaferInfo> wafers = info.ModuleData.WaferManager.Wafers;
+            if (slot >= 0) //by wafer
+            {
+                int index = wafers.Count - slot - 1;
+                if (index < wafers.Count)
+                {
+                    if (flag && HasWaferOnSlot(wafers, index))
+                        wafers[index].SequenceName = info.SequenceName;
+                    else
+                        wafers[index].SequenceName = string.Empty;
+                }
+            }
+            else //by from-to
+            {
+                for (int i = info.SlotFrom - 1; i < info.SlotTo; i++)
+                {
+                    int index = wafers.Count - i - 1;
+                    if (index < wafers.Count)
+                    {
+                        if (flag && HasWaferOnSlot(wafers, index))
+                            wafers[index].SequenceName = info.SequenceName;
+                        else
+                            wafers[index].SequenceName = string.Empty;
+                    }
+                }
+            }
+        }
+        private bool HasWaferOnSlot(List<WaferInfo> wafers, int index)
+        {
+            if (wafers[index].WaferStatus == 0)
+                return false;
 
+            return true;
         }
         #endregion
     }

+ 23 - 9
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -17,6 +17,7 @@ using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Input;
 using System.Windows.Media;
+using System.Windows.Threading;
 using System.Xml;
 using Venus_Core;
 using Venus_Core.Attributes;
@@ -177,19 +178,32 @@ namespace Venus_MainPages.ViewModels
                 UpdateRecipeFileList();
                 
                 treeViewRcpList.SelectedItemChanged += TreeViewRcpList_SelectedItemChanged;
-                currentEPDType = (EPDType)System.Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.EPD.EPDType"));
 
-                if (currentEPDType == EPDType.Socket)
-                {
-                    var epdList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.EPDCfgList");
-                    if (epdList != null)
-                    {
-                        EPDCfgList = (List<string>)QueryDataClient.Instance.Service.GetData($"{ModuleName}.EPDCfgList");
-                    }
-                }
+                DispatcherTimer timer = new DispatcherTimer();
+                timer.Interval = TimeSpan.FromSeconds(1);
+                timer.Tick += Timer_Tick; ;
+                timer.Start();
+
                
+
+            }
+        }
+
+        private void Timer_Tick(object sender, EventArgs e)
+        {
+            currentEPDType = (EPDType)System.Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.EPD.EPDType"));
+
+            if (currentEPDType == EPDType.Socket)
+            {
+                EPDCfgList = (List<string>)QueryDataClient.Instance.Service.GetData($"{ModuleName}.EPDCfgList");
+
+                //var epdList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.EPDCfgList");
+                //if (epdList != null)
+                //{
+                //}
             }
         }
+
         TreeViewFileItem selectedItem;
         private void TreeViewRcpList_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
         {

+ 580 - 89
Venus/Venus_MainPages/Views/EfemView.xaml

@@ -11,7 +11,7 @@
              prism:ViewModelLocator.AutoWireViewModel="True"
              xmlns:unity="clr-namespace:Venus_MainPages.Unity"
              mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="1920">
+             d:DesignHeight="850" d:DesignWidth="1920">
     <Canvas>
         <Border BorderThickness="0,0,0,1" BorderBrush="Black" Canvas.Top="20" Canvas.Left="40">
             <StackPanel Orientation="Horizontal" Margin="0,0,0,5">
@@ -25,15 +25,15 @@
                 <RadioButton Content="Offline"   FontSize="15"   Width="120" Height="28" Margin="5 5 0 5" Style="{StaticResource Button_RadioButton}" IsChecked="{Binding TMIsOFFline,Mode=TwoWay}" GroupName="IsOnline"/>
             </StackPanel>
         </Border>
-        <userControls:FOUPFrontView UnitData="{Binding LP1ModuleInfo}"  Canvas.Top="200" Canvas.Left="10"/>
-        <userControls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}"  Canvas.Top="200" Canvas.Left="150"/>
-        <userControls:FOUPFrontView UnitData="{Binding LP3ModuleInfo}"  Canvas.Top="200" Canvas.Left="300"/>
-        <userControls:FOUPFrontView UnitData="{Binding LLAModuleInfo}" VerticalAlignment="Top" Canvas.Top="120" Canvas.Left="10" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
-        <userControls:FOUPFrontView UnitData="{Binding LLBModuleInfo}" VerticalAlignment="Top" Canvas.Top="120" Canvas.Left="150" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+        <userControls:FOUPFrontView UnitData="{Binding LP1ModuleInfo}"  Canvas.Top="70" Canvas.Left="10"/>
+        <userControls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}"  Canvas.Top="70" Canvas.Left="150"/>
+        <userControls:FOUPFrontView UnitData="{Binding LP3ModuleInfo}"  Canvas.Top="70" Canvas.Left="300"/>
+        
+       
         
         
 
-        <Canvas>
+        <Canvas Canvas.Top="-150">
             <Viewbox Width="890" Height="890" Canvas.Top="5" Canvas.Left="297" Stretch="Fill">
                 <Canvas Width="1000" Height="1000">
                     <!--<userControls:MainTM Width="300" Height="250" Canvas.Left="380" Canvas.Top="90"/>-->
@@ -44,11 +44,12 @@
             <userControls:EFEM Width="500" Height="200" Canvas.Left="500" Canvas.Top="430" Aligner1Wafer="{Binding Aligner1Wafer}"/>
             <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"/>
+            <userControls:FOUPFrontView UnitData="{Binding LLBModuleInfo}" VerticalAlignment="Top" Canvas.Top="350" Canvas.Left="900" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" ShowTitle="False"/>
         </Canvas>
                  
 
-        <Grid      Canvas.Top="40" Canvas.Right="20" Width="500">
+        <Grid      Canvas.Top="400" Canvas.Left="1020" Width="500">
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"/>
                 <RowDefinition Height="36"/>
@@ -151,87 +152,8 @@
         </Grid>
 
 
-        <StackPanel Canvas.Top="520" Canvas.Left="1400"  Width="520" Visibility="Collapsed">
-                <Grid>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="30"/>
-                        <RowDefinition Height="Auto"/>
-                        <RowDefinition />
-                    </Grid.RowDefinitions>
-                    <Border  BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_FirstTitle}" Padding="5,1">
-                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                            <Path Data="M0,0 L5,0 5,5 z" Fill="White" HorizontalAlignment="Left" Grid.Row="1" RenderTransformOrigin="0.5,0.5" Stretch="Fill" Width="5" Height="5">
-                                <Path.RenderTransform>
-                                    <TransformGroup>
-                                        <ScaleTransform/>
-                                        <SkewTransform/>
-                                        <RotateTransform Angle="45"/>
-                                        <TranslateTransform/>
-                                    </TransformGroup>
-                                </Path.RenderTransform>
-                            </Path>
-                            <TextBlock  Margin="5,0,0,0" Text="LoadPort Operation" FontFamily="Arial" FontSize="14" Foreground="{DynamicResource FG_White}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
-                        </StackPanel>
-                    </Border>
-                    <Border  Grid.Row="1" BorderBrush="{DynamicResource Table_BD}" Background="{DynamicResource Table_BG_Content}" BorderThickness="1,0,1,0" Padding="5,1">
-                        <WrapPanel Margin="10,10,10,0" Orientation="Horizontal" HorizontalAlignment="Center">
-                            <RadioButton Content="LP1"  Width="80" Margin="2 0 0 10" IsChecked="True">
-                                <i:Interaction.Triggers>
-                                    <i:EventTrigger EventName="Checked">
-                                        <i:InvokeCommandAction Command="{Binding ModuleCheckedCommand}" CommandParameter="TM"/>
-                                    </i:EventTrigger>
-                                </i:Interaction.Triggers>
-                            </RadioButton>
-                            <RadioButton Content="LP2" Width="80" Margin="2 0 0 10" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}">
-                                <i:Interaction.Triggers>
-                                    <i:EventTrigger EventName="Checked">
-                                        <i:InvokeCommandAction Command="{Binding ModuleCheckedCommand}" CommandParameter="LLA"/>
-                                    </i:EventTrigger>
-                                </i:Interaction.Triggers>
-                            </RadioButton>
-                            <RadioButton Content="LP3" Width="80" Margin="2 0 0 10" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}">
-                                <i:Interaction.Triggers>
-                                    <i:EventTrigger EventName="Checked">
-                                        <i:InvokeCommandAction Command="{Binding ModuleCheckedCommand}" CommandParameter="LLB"/>
-                                    </i:EventTrigger>
-                                </i:Interaction.Triggers>
-                            </RadioButton>
-
-                        </WrapPanel>
-                    </Border>
-                    <!--<Border  Grid.Row="2" BorderBrush="{DynamicResource Table_BD}" Background="{DynamicResource Table_BG_Content}" BorderThickness="1,0,1,1" >-->
-                    <Grid Grid.Row="2" unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="Black"   Background="{DynamicResource Table_BG_Content}">
-                        <Grid.RowDefinitions>
-                            <RowDefinition/>
-                            <RowDefinition/>
-                            <RowDefinition/>
-
-                        </Grid.RowDefinitions>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-
-                        </Grid.ColumnDefinitions>
-                        <TextBlock Text="Base Pressure"   Padding="6,7,0,5" Background="#D0D8E8"/>
-                        <TextBox  Grid.Column="1" BorderThickness="0" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Text="{Binding RobotAction2,UpdateSourceTrigger=PropertyChanged}"/>
-                        <TextBlock Text="Pump Time"        Grid.Column="2"  Padding="15,7,0,5" Background="#D0D8E8"/>
-                        <TextBox  Grid.Column="3" BorderThickness="0" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Text="{Binding RobotArm,UpdateSourceTrigger=PropertyChanged}"/>
-                        <TextBlock Text="Hold Time"        Grid.Column="4"  Padding="15,7,0,5" Background="#D0D8E8"/>
-                        <TextBox  Grid.Column="5" BorderThickness="0"  VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Text="{Binding RobotTarget,UpdateSourceTrigger=PropertyChanged}"/>
-                        <customControls:PathButton Content="Start"  Width="80" Height="28" VerticalAlignment="Center"  Grid.Column="6" />
-
-                       
-                    </Grid>
-                    <!--</Border>-->
-                </Grid>
-            </StackPanel>
 
-        <StackPanel     Canvas.Left="580"  Canvas.Top="180" Width="340">
+        <StackPanel     Canvas.Left="1040"  Canvas.Top="180" Width="340">
 
             <Border  BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_FirstTitle}" Padding="5,1" Height="30">
                 <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
@@ -259,6 +181,575 @@
 
         </StackPanel>
 
+        <StackPanel Orientation="Horizontal" Canvas.Bottom="-50" Canvas.Left="100">
+            <Grid  Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="24"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+
+                </Grid.RowDefinitions>
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="100"/>
+                    <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"/>
+
+                <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 RtDataValues[LP1.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" Command="{Binding LPHomeCommand}" CommandParameter="LP1"/>
+
+                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0" Command="{Binding LPAbortCommand}" CommandParameter="LP1"/>
+
+                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="8,0"  Command="{Binding LPResetCommand}" CommandParameter="LP1"/>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="2" Padding="5,1,0,1">
+                    <TextBlock Text="Is Present" 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="2" Grid.Column="1" Padding="5,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                </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"      Command="{Binding LPLoadCommand}"   CommandParameter="LP1"/>
+                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 " Command="{Binding LPUnLoadCommand}" CommandParameter="LP1"/>
+                    </StackPanel>
+                </Border>
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Padding="5,1,0,1">
+                    <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"/>
+                </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" Command="{Binding LPReadIDCommand}" CommandParameter="LP1"/>
+                    </StackPanel>
+                </Border>
+
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="4" Padding="5,1,0,1">
+                    <TextBlock Text="Is Clamped" 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="4" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                </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" Command="{Binding LPClampCommand}" CommandParameter="LP1"/>
+                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="90" Height="25" Command="{Binding LPUnClampCommand}" CommandParameter="LP1"/>
+                    </StackPanel>
+                </Border>
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="5" Padding="5,1,0,1">
+                    <TextBlock Text="Is Docked" 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="5" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                </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" Command="{Binding LPDockCommand}" CommandParameter="LP1">
+                            <!--<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" Command="{Binding LPUnDockCommand}" CommandParameter="LP1">
+                            <!--<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>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="6" Padding="5,1,0,1">
+                    <TextBlock Text="Is Door Open" 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="6" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1DoorOpen}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+            </Grid>
+
+            <Grid  Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}" Margin="1,0,0,0">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="24"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+
+                </Grid.RowDefinitions>
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="100"/>
+                    <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"/>
+
+                <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"/>
+                </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 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 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>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="2" Padding="5,1,0,1">
+                    <TextBlock Text="Is Present" 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="2" Grid.Column="1" Padding="5,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Padding="5,1,0,1">
+                    <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"/>
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="4" Padding="5,1,0,1">
+                    <TextBlock Text="Is Clamped" 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="4" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                </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>
+
+                    </StackPanel>
+                </Border>
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="5" Padding="5,1,0,1">
+                    <TextBlock Text="Is Docked" 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="5" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="6" Padding="5,1,0,1">
+                    <TextBlock Text="Is Door Open" 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="6" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1DoorOpen}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+            </Grid>
+            <Grid  Width="450" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsEfemConnected}" Margin="1,0,0,0">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="24"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+                    <RowDefinition Height="30"/>
+
+                </Grid.RowDefinitions>
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="100"/>
+                    <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"/>
+
+                <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"/>
+                </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 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 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>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="2" Padding="5,1,0,1">
+                    <TextBlock Text="Is Present" 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="2" Grid.Column="1" Padding="5,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Padding="5,1,0,1">
+                    <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"/>
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="4" Padding="5,1,0,1">
+                    <TextBlock Text="Is Clamped" 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="4" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
+                </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>
+
+                    </StackPanel>
+                </Border>
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="5" Padding="5,1,0,1">
+                    <TextBlock Text="Is Docked" 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="5" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+
+                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="6" Padding="5,1,0,1">
+                    <TextBlock Text="Is Door Open" 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="6" Grid.Column="1" Padding="5,1,0,1">
+                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1DoorOpen}"></deviceControl:AITSensor>-->
+                </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>
+                    </StackPanel>
+                </Border>
+
+
+            </Grid>
+
+        </StackPanel>
+
+      
+
 
     </Canvas>
 

+ 48 - 47
Venus/Venus_MainPages/Views/OperationOverView.xaml

@@ -60,27 +60,35 @@
             <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="-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"/>
+        <Canvas Canvas.Left="300" Canvas.Top="-40">
+            <RadioButton Content="Carrier" Name="CarrierRadioButton"  Canvas.Left="900"   Canvas.Top="106" Width="60" Height="33" Style="{StaticResource Button_RadioButton}"  IsChecked="True"   />
+            <RadioButton Content="LP1"     Name="JobRadioButton1"      Canvas.Left="961"  Canvas.Top="106" Width="60" Height="33" Style="{StaticResource Button_RadioButton}"   IsChecked="False"  />
+            <RadioButton Content="LP2"     Name="JobRadioButton2"      Canvas.Left="1022"  Canvas.Top="106" Width="60" Height="33" Style="{StaticResource Button_RadioButton}" IsChecked="False"  />
+            <RadioButton Content="LP3"     Name="JobRadioButton3"      Canvas.Left="1083"  Canvas.Top="106" Width="60" Height="33" Style="{StaticResource Button_RadioButton}" IsChecked="False"  />
+            
             <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility2}}">
                 <StackPanel Orientation="Horizontal" >
                     <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"/>
+                        <TextBox Background="{DynamicResource Table_BG_Title}"  Text="LP1" Width="Auto" 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.Text>
+                                <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                    <Binding Path="LP1WaferCount"></Binding>
+                                </MultiBinding>
+                            </TextBlock.Text>
                         </TextBlock>
-                        <customControls:PathButton Content="Scan Wafer" HorizontalAlignment="Center" Margin="0,5,0,0" Width="120" Height="30"/>
+
+                        <StackPanel Orientation="Horizontal">
+                            <customControls:PathButton Content="Load"   HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding LoadWaferCommand}"   CommandParameter="LP1"/>
+                            <customControls:PathButton Content="UnLoad" HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding UnLoadWaferCommand}" CommandParameter="LP1"/>
+                        </StackPanel>
+                        
+
                     </StackPanel>
                     <StackPanel>
-                        <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP2" Width="250" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
+                        <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP2" Width="Auto" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
                         <ctrls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}" ShowTitle="False" />
                         <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="15">
                             <TextBlock.Text>
@@ -89,48 +97,41 @@
                                 </MultiBinding>
                             </TextBlock.Text>
                         </TextBlock>
-                        <customControls:PathButton Content="Scan Wafer" HorizontalAlignment="Center" Margin="0,5,0,0" Width="120" Height="30"/>
+                        <StackPanel Orientation="Horizontal">
+                            <customControls:PathButton Content="Load"   HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding LoadWaferCommand}" CommandParameter="LP2"/>
+                            <customControls:PathButton Content="UnLoad" HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding UnLoadWaferCommand}" CommandParameter="LP2"/>
+                        </StackPanel>
+                           
 
                     </StackPanel>
                     <StackPanel>
-                        <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP3" Width="250" Height="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True"/>
+                        <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP3" Width="Auto" 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 Orientation="Horizontal">
+                            <customControls:PathButton Content="Load"   HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding LoadWaferCommand}" CommandParameter="LP3"/>
+                            <customControls:PathButton Content="UnLoad" HorizontalAlignment="Center" Margin="0,5,0,0" Width="80" Height="30" Command="{Binding UnLoadWaferCommand}" CommandParameter="LP3"/>
+                        </StackPanel>
+
+                           
 
                     </StackPanel>
                 </StackPanel>
             </TabPanel>
-            <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility}}" >
-                <Grid>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="30"/>
-                        <RowDefinition/>
-                    </Grid.RowDefinitions>
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition/>
-                        <ColumnDefinition/>
-                        <ColumnDefinition/>
-
-                    </Grid.ColumnDefinitions>
-                    <TextBox Text="LP1" Background="{DynamicResource Table_BG_Title}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly="True" />
-                    <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"/>
-
-                    <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>
-
+            <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=JobRadioButton1,Path=IsChecked,Converter={StaticResource boolToVisibility2}}" >
+                <local:WaferAssociationUnit                  WAInfo="{Binding LP1WaferAssociation}" />
+            </TabPanel>
+            <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=JobRadioButton2,Path=IsChecked,Converter={StaticResource boolToVisibility2}}" >
+                <local:WaferAssociationUnit   WAInfo="{Binding LP2WaferAssociation}"/>
+            </TabPanel>
+            <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=JobRadioButton3,Path=IsChecked,Converter={StaticResource boolToVisibility2}}" >
+                <local:WaferAssociationUnit                    WAInfo="{Binding LP1WaferAssociation}"/>
             </TabPanel>
 
 
@@ -218,7 +219,7 @@
                         </Grid.ColumnDefinitions>
                         <deviceControl:AITSensor Margin="-30,0,5,0" GreenColor="True" LightOnValue="{Binding IsRtInitialized}"></deviceControl:AITSensor>
 
-                        <Button Grid.Column="1" Content="初始化"  Width="120" Height="25">
+                        <Button Grid.Column="1" Content="初始化"  Width="120" Height="25" Command="{Binding HomeAllCommand}">
 
                         </Button>
                     </Grid>
@@ -227,7 +228,7 @@
                             <ColumnDefinition Width="0"/>
                             <ColumnDefinition />
                         </Grid.ColumnDefinitions>
-                        <Button  Grid.Column="1" Content="终止" Width="120" Height="25">
+                        <Button  Grid.Column="1" Content="终止" Width="120" Height="25" Command="{Binding AbortAllCommand}">
 
                         </Button>
                     </Grid>
@@ -236,7 +237,7 @@
                             <ColumnDefinition Width="0"/>
                             <ColumnDefinition />
                         </Grid.ColumnDefinitions>
-                        <Button  Grid.Column="1" Content="全部暂停" Width="120" Height="25" IsEnabled="{Binding IsPauseAllEnable}">
+                        <Button  Grid.Column="1" Content="全部暂停" Width="120" Height="25" IsEnabled="{Binding IsPauseAllEnable}" Command="{Binding PauseAllJobCommand}">
 
                         </Button>
                     </Grid>
@@ -245,7 +246,7 @@
                             <ColumnDefinition Width="0"/>
                             <ColumnDefinition />
                         </Grid.ColumnDefinitions>
-                        <Button  Grid.Column="1" Content="晶圆返回" Width="120" Height="25">
+                        <Button  Grid.Column="1" Content="晶圆返回" Width="120" Height="25" Command="{Binding ReturnAllWaferCommand}">
 
                         </Button>
                     </Grid>
@@ -258,11 +259,11 @@
             <Border Grid.Row="5" BorderBrush="{DynamicResource MainFrame_BD}" BorderThickness="1,0,1,1" Padding="5,1">
                 <StackPanel HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5">
 
-                    <Button  IsEnabled="{Binding EnableAuto}" Margin ="5" Content="自动"  Width="80" Height="25">
+                    <Button  IsEnabled="{Binding RtDataValues[System.IsAutoMode]}" Margin ="5" Content="自动"  Width="80" Height="25" Command="{Binding EnableAutoCommand}">
 
                     </Button>
 
-                    <Button  IsEnabled="{Binding EnableManual}" Margin ="5" Content="手动" Width="80" Height="25">
+                    <Button  IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}" Margin ="5" Content="手动" Width="80" Height="25" Command="{Binding EnableManualCommand}">
 
                     </Button>
 

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

@@ -32,9 +32,9 @@ namespace Venus_MainPages.Views
         //}
         //public static readonly DependencyProperty WAInfoProperty = DependencyProperty.Register("WAInfo", typeof(WaferAssociationInfo), typeof(OperationOverView), new UIPropertyMetadata(null));
 
-        private void test1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
-        {
-            var test = test1;
-        }
+        //private void test1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        //{
+        //    var test = test1;
+        //}
     }
 }

+ 21 - 48
Venus/Venus_MainPages/Views/WaferAssociationUnit.xaml

@@ -5,7 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="Venus_MainPages.Views"
              xmlns:unity="clr-namespace:Venus_MainPages.Unity"
-            
+             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800" x:Name="WaferUnit">
     <Grid>
@@ -18,7 +18,7 @@
                 <RowDefinition Height="Auto"></RowDefinition>
                 <RowDefinition></RowDefinition>
             </Grid.RowDefinitions>
-            <Grid unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.LineThickness="1">
+            <Grid unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="Black"  unity:GridOptions.LineThickness="1">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="30"></RowDefinition>
                     <RowDefinition Height="30"></RowDefinition>
@@ -28,64 +28,37 @@
                     <RowDefinition Height="Auto"></RowDefinition>
                 </Grid.RowDefinitions>
 
-                <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>
+                <TextBlock Grid.Row="0" Text="Lot ID" TextWrapping="Wrap"  Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="200"></TextBlock>
 
                 <StackPanel Grid.Row="1" Orientation="Horizontal">
                     
-                        <TextBlock Text="Sequence" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="Sequence:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
+
+                    <ComboBox Width="240" x:Name="cb"  DropDownOpened="cb_DropDownOpened"  SelectionChanged="cb_SelectionChanged"/>
 
-                  
-                        <StackPanel Orientation="Horizontal">
-                            <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">
-                                                <cal:ActionMessage MethodName="SelectSequence">
-                                                    <cal:Parameter Value="{Binding WAInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></cal:Parameter>
-                                                </cal:ActionMessage>
-                                            </i:EventTrigger>
-                                        </i:Interaction.Triggers>-->
-                            </Button>
-                        </StackPanel>
 
                 </StackPanel>
 
-                <StackPanel Grid.Row="2" Orientation="Horizontal"  HorizontalAlignment="Left" VerticalAlignment="Center">
-                    <Button Content="Select All"  Height="25"  Width="120">
-                        <!--<i:Interaction.Triggers>
-                                    <i:EventTrigger EventName="Click">
-                                        <cal:ActionMessage MethodName="SetAll">
-                                            <cal:Parameter Value="{Binding WAInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></cal:Parameter>
-                                        </cal:ActionMessage>
-                                    </i:EventTrigger>
-                                </i:Interaction.Triggers>-->
-                    </Button>
-                    <Button Content="DeSelect All"  Height="25"  Width="120">
-                        <!--<i:Interaction.Triggers>
-                                    <i:EventTrigger EventName="Click">
-                                        <cal:ActionMessage MethodName="DeselectAll">
-                                            <cal:Parameter Value="{Binding WAInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></cal:Parameter>
-                                        </cal:ActionMessage>
-                                    </i:EventTrigger>
-                                </i:Interaction.Triggers>-->
-                    </Button>
+                <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                    <Button Content="Select All"    Height="25"    Command="{Binding SelectAllCommand}"   CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}" Width="125"/>
+                    <Button Content="DeSelect All"  Height="25"    Command="{Binding UnSelectAllCommand}" CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}" Width="125" />
                 </StackPanel>
                 <StackPanel Grid.Row="3" Orientation="Horizontal" >
                     
-                        <TextBlock Text="Name" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
+                        <TextBlock Text="Name" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
 
                   
                         <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>
                    
                  
-                        <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
+                        <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
               
                   
                         <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>
                    
                 </StackPanel>
-                <StackPanel Grid.Row="4" Orientation="Horizontal" Margin="0,0" HorizontalAlignment="Left" VerticalAlignment="Center">
-                    <Button Content="Create Job" Width="120" Height="25" >
+                <StackPanel Grid.Row="4" Orientation="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Center">
+                    <Button Content="Create Job" Width="120" Height="25" Command="{Binding CreateJobCommand}" CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="CreateJob">
@@ -94,7 +67,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="Abort Job"  Width="120" Height="25">
+                    <Button Content="Abort Job"  Width="120" Height="25"  Command="{Binding AbortJobCommand}" CommandParameter="{Binding ElementName=txtJobID,Path=Text}">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="AbortJob">
@@ -104,8 +77,8 @@
                                 </i:Interaction.Triggers>-->
                     </Button>
                 </StackPanel>
-                <StackPanel Grid.Row="5" Orientation="Horizontal"  VerticalAlignment="Center" >
-                    <Button Content="Start" Width="60" Height="25" >
+                <StackPanel Grid.Row="5" Orientation="Horizontal"  VerticalAlignment="Center" HorizontalAlignment="Center">
+                    <Button Content="Start" Width="100" Height="25" Command="{Binding StartCommand}" CommandParameter="{Binding ElementName=txtJobID,Path=Text}">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Start">
@@ -114,7 +87,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="Stop" Width="60" Height="25" Margin="30,0,0,0">
+                    <Button Content="Stop" Width="100" Height="25" Margin="30,0,0,0" Command="{Binding StopCommand}" CommandParameter="{Binding ElementName=txtJobID,Path=Text}">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Pause">
@@ -123,7 +96,7 @@
                                     </i:EventTrigger>
                                 </i:Interaction.Triggers>-->
                     </Button>
-                    <Button Content="Abort" Width="60" Height="25" Margin="30,0,0,0">
+                    <Button Content="Abort" Width="100" Height="25" Margin="30,0,0,0" Command="{Binding AbortCommand}" CommandParameter="{Binding ElementName=txtJobID,Path=Text}">
                         <!--<i:Interaction.Triggers>
                                     <i:EventTrigger EventName="Click">
                                         <cal:ActionMessage MethodName="Resume">
@@ -137,7 +110,7 @@
             </Grid>
 
             <ListBox Grid.Row="1" 
-                 ItemsSource="{Binding ElementName=WaferUnit,Path=WAInfo.ModuleData.WaferManager.Wafers}" Margin="0,0">
+                 ItemsSource="{Binding ElementName=WaferUnit,Path=WAInfo.ModuleData.WaferManager.Wafers}" Name="list1">
                 <ListBox.Resources>
                     <Style TargetType="ListBoxItem" BasedOn="{StaticResource ResourceKey={x:Type ListBoxItem}}">
                         <Setter Property="Rectangle.StrokeThickness" Value="0"/>
@@ -158,7 +131,7 @@
                             <!--<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="102" Padding="5,1">
+                            <Border Grid.Column="1" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Width="250" Padding="5,1">
                                 <Border.Style>
                                     <Style>
                                         <Style.Triggers>
@@ -174,7 +147,7 @@
                                 <TextBlock Name="txtSeqName" ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Text="{Binding SequenceName}" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
                             </Border>
                             <Border  Grid.Column="2" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1"  Width="110" Padding="5,1">
-                                <Button Width="60" Height="16">
+                                <Button Width="60" Height="16"  Command="{Binding Path=DataContext.SetSequenceCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}">
                                     <!--<i:Interaction.Triggers>
                                                 <i:EventTrigger EventName="Click">
                                                     <cal:ActionMessage MethodName="SetSequence">

+ 19 - 1
Venus/Venus_MainPages/Views/WaferAssociationUnit.xaml.cs

@@ -1,5 +1,8 @@
-using System;
+using MECF.Framework.Common.DataCenter;
+using MECF.Framework.Common.Equipment;
+using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -31,5 +34,20 @@ namespace Venus_MainPages.Views
             set { SetValue(WAInfoProperty, value); }
         }
         public static readonly DependencyProperty WAInfoProperty = DependencyProperty.Register("WAInfo", typeof(WaferAssociationInfo), typeof(WaferAssociationUnit));
+
+        private void cb_DropDownOpened(object sender, EventArgs e)
+        {
+            cb.ItemsSource= GetFilesNames(System.IO.Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", "Sequence")).ToList();
+        }
+        private IEnumerable<string> GetFilesNames(string path)
+        {
+            return Directory.GetFiles(path, "*.seq")
+      .Select(System.IO.Path.GetFileNameWithoutExtension);
+        }
+
+        private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            WAInfo.SequenceName = cb.SelectedValue.ToString();
+        }
     }
 }

+ 3 - 1
Venus/Venus_RT/Devices/EFEM/Loadport.cs

@@ -135,6 +135,8 @@ namespace Venus_RT.Devices.EFEM
             DATA.Subscribe($"{mod}.SmartTag", () => SmartTag);
 
 
+
+
             DATA.Subscribe($"{Module}.WaferThicknessType", () => _waferThicknessType);
 
             OP.Subscribe($"{Module}.SetThick", (cmd, args) => { SetThick(); return true; });
@@ -718,7 +720,7 @@ namespace Venus_RT.Devices.EFEM
                         //EV.PostAlarmLog(Module.ToString(), "发现 wafer 突出");
 
                         //EV.Notify(AlarmWaferProtrude);
-                        Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
+                        //Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                     }
 
                     // DATA2, loadport上面的LED 灯, 暂时不需要用到

+ 3 - 0
Venus/Venus_RT/Devices/EPD/Data/EPDSocketClient.cs

@@ -196,6 +196,9 @@ namespace EPD.Data
                     if (dataReader.ReadString(out string cfg, dataHeader.length))
                         OnEPDReply?.Invoke(EPDCommand.QueryCurrentConfig, cfg);
                     break;
+                case (int)EPDCommand.HeartBeat:               
+                        OnEPDReply?.Invoke(EPDCommand.HeartBeat,null);
+                    break;
                 default:
                     break;
             }

+ 1 - 1
Venus/Venus_RT/Devices/EPD/EPDClient.cs

@@ -25,7 +25,7 @@ namespace Venus_RT.Devices.EPD
         private int _port;
         private int _channel;
         private Stopwatch _heartBeatTimer = new Stopwatch();
-        private bool _isHeartBeatReceived;
+        private bool _isHeartBeatReceived=true;
         private readonly R_TRIG _epdIdle = new R_TRIG();
 
         private bool _captured;

+ 1 - 1
Venus/Venus_Themes/Converters/boolToVisibility2.cs

@@ -13,7 +13,7 @@ namespace Venus_Themes.Converters
         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
         {
 
-            return (bool)value ? Visibility.Visible : Visibility.Hidden;
+            return (bool)value ? Visibility.Visible : Visibility.Collapsed;
         }
 
         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)