Browse Source

1.添加chamber界面创建wafer,开关门功能

lixiang 1 year ago
parent
commit
ad6fa7b5dc

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

@@ -466,16 +466,31 @@ namespace Venus_MainPages.ViewModels
             LLBIsInstalled = allModules.Contains("LLB");
             EFEMIsInstalled = allModules.Contains("EFEM");
             TMIsInstalled = allModules.Contains("TM");
+
             UIEvents.PMDoorRaiseChangedEvent += UIEvents_PMDoorRaiseChangedEvent;
 
             UIEvents.LLTDoorRaiseChangedEvent += UIEvents_LLTDoorRaiseChangedEvent;
 
             UIEvents.LLEDoorRaiseChangedEvent += UIEvents_LLEDoorRaiseChangedEvent;
 
+            UIEvents.ChamberCreateDeleteWaferEvent += UIEvents_ChamberCreateDeleteWaferEvent;
+
             SwitchFlag = false;
 
             ATMModeIsOn = Convert.ToBoolean(QueryDataClient.Instance.Service.GetConfig("System.IsATMMode")) == true ? "ATM Mode On" : "ATM Mode Off";
         }
+
+        private void UIEvents_ChamberCreateDeleteWaferEvent(WaferOperation obj)
+        {
+            if (obj.IsCreate == true)
+            {
+                InvokeClient.Instance.Service.DoOperation("CreateWafer", obj.ModuleName, 0);
+            }
+            else
+            {
+                InvokeClient.Instance.Service.DoOperation("DeleteWafer", obj.ModuleName, 0);
+            }
+        }
         #endregion
 
         #region 命令方法

+ 9 - 1
Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs

@@ -197,6 +197,7 @@ namespace Venus_MainPages.ViewModels
         private double m_ChamberPressureFeedBack;
 
         private string m_WaferID;
+        private string m_ModuleName;
         #endregion
 
         #region  属性
@@ -444,7 +445,14 @@ namespace Venus_MainPages.ViewModels
                 SetProperty(ref m_IsTurboPumpInterlock, value);
             }
         }
-        public string ModuleName { get; set; }
+        public string ModuleName 
+        {
+            get { return m_ModuleName; }
+            set
+            {
+                SetProperty(ref m_ModuleName, value);
+            }
+        }
         public double MFC1SetPoint
         {
             get { return m_MFC1SetPoint; }

+ 17 - 3
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -215,7 +215,9 @@ namespace Venus_MainPages.ViewModels
         private double m_ChamberPressureFeedBack;
         private double m_TurboN2FlowSetPoint;
 
-
+        private string m_ModuleName;
+        private string m_WaferID;
+       
         #endregion
 
         #region  属性
@@ -487,7 +489,14 @@ namespace Venus_MainPages.ViewModels
                 SetProperty(ref m_IsTurboPumpInterlock, value);
             }
         }
-        public string ModuleName { get; set; }
+        public string ModuleName
+        {
+            get { return m_ModuleName; }
+            set
+            {
+                SetProperty(ref m_ModuleName, value);
+            }
+        }
         public double MFC1SetPoint
         {
             get { return m_MFC1SetPoint; }
@@ -961,6 +970,11 @@ namespace Venus_MainPages.ViewModels
             get { return m_ChamberPressureFeedBack; }
             set { SetProperty(ref m_ChamberPressureFeedBack, value); }
         }
+        public string WaferID
+        {
+            get { return m_WaferID; }
+            set { SetProperty(ref m_WaferID, value); }
+        }
         #endregion
 
         #region 命令
@@ -1602,7 +1616,7 @@ namespace Venus_MainPages.ViewModels
             TurboPumpPumpingValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen");
             TurboPumpPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen");
 
-
+            WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : "";
 
             PumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.PumpIsRunning");
             TurboIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpIsRunning");

+ 11 - 1
Venus/Venus_MainPages/ViewModels/OverVenusViewModel.cs

@@ -20,6 +20,7 @@ using MECF.Framework.Common.CommonData.DeviceData;
 using System.Windows.Shapes;
 using Path = System.IO.Path;
 using Aitex.Core.RT.Log;
+using MECF.Framework.Common.Equipment;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -203,6 +204,8 @@ namespace Venus_MainPages.ViewModels
         private double m_ChamberPressureFeedBack;
 
         private string m_WaferID;
+        private string m_ModuleName;
+
         #endregion
 
         #region  属性
@@ -450,7 +453,14 @@ namespace Venus_MainPages.ViewModels
                 SetProperty(ref m_IsTurboPumpInterlock, value);
             }
         }
-        public string ModuleName { get; set; }
+        public string ModuleName
+        {
+            get { return m_ModuleName; }
+            set
+            {
+                SetProperty(ref m_ModuleName, value);
+            }
+        }
         public double MFC1SetPoint
         {
             get { return m_MFC1SetPoint; }

+ 20 - 12
Venus/Venus_MainPages/ViewModels/TMViewModel.cs

@@ -36,6 +36,8 @@ namespace Venus_MainPages.ViewModels
         //private ModuleInfo m_PMAWafer;
         private ModuleInfo m_LLAModuleInfo;
         private ModuleInfo m_LLBModuleInfo;
+        private ModuleInfo m_TMModuleInfo;
+
         private bool m_TMIsOFFline;
         private bool m_LLIsOFFline;
         private WaferInfo m_PMAWafer;
@@ -506,6 +508,11 @@ namespace Venus_MainPages.ViewModels
             get { return m_LLBModuleInfo; }
             set { SetProperty(ref m_LLBModuleInfo, value); }
         }
+        public ModuleInfo TMModuleInfo
+        {
+            get { return m_TMModuleInfo; }
+            set { SetProperty(ref m_TMModuleInfo, value); }
+        }
         public bool TMIsOFFline
         {
             get { return m_TMIsOFFline; }
@@ -897,6 +904,7 @@ namespace Venus_MainPages.ViewModels
             {
                 BladeAWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
                 BladeBWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1];
+                TMModuleInfo = ModuleManager.ModuleInfos["TMRobot"];
             }
             
 
@@ -1199,18 +1207,18 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add("TMCycle.CycleIndex");
 
         }
-        private void UIEvents_PMDoorRaiseChangedEvent(DoorPara obj)
-        {
-            InvokeClient.Instance.Service.DoOperation($"{obj?.ModuleName}.SlitDoor.{obj?.IsOpen}");
-        }
-        private void UIEvents_LLTDoorRaiseChangedEvent(DoorPara obj)
-        {
-            InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}TSlitDoor.{obj?.IsOpen}");
-        }
-        private void UIEvents_LLEDoorRaiseChangedEvent(DoorPara obj)
-        {
-            InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}ESlitDoor.{obj?.IsOpen}");
-        }
+        //private void UIEvents_PMDoorRaiseChangedEvent(DoorPara obj)
+        //{
+        //    InvokeClient.Instance.Service.DoOperation($"{obj?.ModuleName}.SlitDoor.{obj?.IsOpen}");
+        //}
+        //private void UIEvents_LLTDoorRaiseChangedEvent(DoorPara obj)
+        //{
+        //    InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}TSlitDoor.{obj?.IsOpen}");
+        //}
+        //private void UIEvents_LLEDoorRaiseChangedEvent(DoorPara obj)
+        //{
+        //    InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}ESlitDoor.{obj?.IsOpen}");
+        //}
 
         #endregion
     }

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

@@ -41,10 +41,10 @@
                     <userControls:LoadLockRight Width="150" Height="150" Canvas.Top="309" Canvas.Left="519"  DoorIsOpen="{Binding RtDataValues[TM.LLBTSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" Door2IsOpen="{Binding RtDataValues[TM.LLBESlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLBWafer}" IsEnabled="False"/>
 
 
-                    <userControls:TMChamber ModuleName="PMA" x:Name="PMA" Canvas.Top="302"  Canvas.Left="233" Width="140" Height="140" RotateTransformValue="-90"  DoorIsOpen="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMAWafer}" PMVisibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMAIsInstalled}"/>
-                    <userControls:TMChamber ModuleName="PMB" x:Name="PMB" Canvas.Top="28"   Canvas.Left="315" Width="140" Height="140" RotateTransformValue="-28"  DoorIsOpen="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMBWafer}" PMVisibility="{Binding PMBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMBIsInstalled}"/>
-                    <userControls:TMChamber ModuleName="PMC" x:Name="PMC" Canvas.Top="-37"  Canvas.Left="586" Width="140" Height="140" RotateTransformValue="29"   DoorIsOpen="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMCWafer}" PMVisibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMCIsInstalled}"/>
-                    <userControls:TMChamber ModuleName="PMD" x:Name="PMD" Canvas.Top="160"  Canvas.Left="788" Width="140" Height="140" RotateTransformValue="90"   DoorIsOpen="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMDWafer}" PMVisibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMDIsInstalled}"/>
+                    <userControls:TMChamber ModuleName="PMA" x:Name="PMA" Canvas.Top="302"  Canvas.Left="233" Width="140" Height="140" RotateTransformValue="-90"  DoorIsOpen="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMAWafer}" PMVisibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                    <userControls:TMChamber ModuleName="PMB" x:Name="PMB" Canvas.Top="28"   Canvas.Left="315" Width="140" Height="140" RotateTransformValue="-28"  DoorIsOpen="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMBWafer}" PMVisibility="{Binding PMBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                    <userControls:TMChamber ModuleName="PMC" x:Name="PMC" Canvas.Top="-37"  Canvas.Left="586" Width="140" Height="140" RotateTransformValue="29"   DoorIsOpen="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMCWafer}" PMVisibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                    <userControls:TMChamber ModuleName="PMD" x:Name="PMD" Canvas.Top="160"  Canvas.Left="788" Width="140" Height="140" RotateTransformValue="90"   DoorIsOpen="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMDWafer}" PMVisibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
 
 
                     
@@ -56,8 +56,8 @@
             <!--<customControls:WaferRobotControl OriginT="PMA"    Canvas.Left="310" Canvas.Top="453"   Width="160" Height="240"    RobotTAction="{Binding Robot3TAction}" RobotXAction="{Binding Robot3XAction}"  RobotWafer="{Binding EFEMBladeAWafer}"/>
             <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="310" Canvas.Top="453"   Width="160" Height="240"    RobotTAction="{Binding Robot4TAction}" RobotXAction="{Binding Robot4XAction}"  RobotWafer="{Binding EFEMBladeBWafer}"/>-->
 
-            <customControls:WaferRobotControl OriginT="PMA"    Canvas.Left="310" Canvas.Top="160"   Width="160" Height="240"     RobotTAction="{Binding Robot1TAction}" RobotXAction="{Binding Robot1XAction}"  RobotWafer="{Binding TMBladeAWafer}"/>
-            <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="310" Canvas.Top="160"   Width="160" Height="240"     RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}"  RobotWafer="{Binding TMBladeBWafer}"/>
+            <customControls:WaferRobotControl OriginT="PMA"    Canvas.Left="310" Canvas.Top="160"   Width="160" Height="240"     RobotTAction="{Binding Robot1TAction}" RobotXAction="{Binding Robot1XAction}"  RobotWafer="{Binding TMBladeAWafer}" IsEnabled="False"/>
+            <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="310" Canvas.Top="160"   Width="160" Height="240"     RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}"  RobotWafer="{Binding TMBladeBWafer}" IsEnabled="False"/>
         </Canvas>
 
         <Grid Width="280" Height="170" Canvas.Left="30" Canvas.Top="250"  unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.ShowBorder="True" Background="#E9EDF4" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}">

+ 2 - 1
Venus/Venus_MainPages/Views/OverKepler2200AView.xaml

@@ -805,7 +805,8 @@
                        IsBRFOn="{Binding BRFData.IsRfOn}"
                        IsSRFOn="{Binding SRFData.IsRfOn}"
                        IsHasWafer="{Binding IsHasWafer}"
-                           WaferID="{Binding WaferID}"
+                       WaferID="{Binding WaferID}"
+                       ModuleName="{Binding ModuleName}"
                         />
 
             <!--<Ellipse Width="20" Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor}}"  Canvas.Left="1065" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>

+ 3 - 0
Venus/Venus_MainPages/Views/OverKepler2300View.xaml

@@ -775,6 +775,9 @@
                        IsBRFOn="{Binding BRFData.IsRfOn}"
                        IsSRFOn="{Binding SRFData.IsRfOn}"
                        IsHasWafer="{Binding IsHasWafer}"
+                       WaferID="{Binding WaferID}"
+                       ModuleName="{Binding ModuleName}"
+                           
                         />
 
             <Ellipse Width="20" Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor}}"  Canvas.Left="1065" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>

+ 3 - 1
Venus/Venus_MainPages/Views/OverVenusView.xaml

@@ -807,7 +807,9 @@
                        IsBRFOn="{Binding BRFData.IsRfOn}"
                        IsSRFOn="{Binding SRFData.IsRfOn}"
                        IsHasWafer="{Binding IsHasWafer}"
-                           WaferID="{Binding WaferID}"
+                       WaferID="{Binding WaferID}"
+                       ModuleName="{Binding ModuleName}"
+                           
                         />
 
             <Ellipse Width="20"  Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor}}"  Canvas.Left="1105" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>

+ 2 - 0
Venus/Venus_MainPages/Views/TMView.xaml

@@ -241,6 +241,8 @@
                     <userControls:TMChamber x:Name="PMB" ModuleName="PMB" Canvas.Top="28"   Canvas.Left="315" Width="140" Height="140" RotateTransformValue="-28"  DoorIsOpen="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMBWafer}" PMVisibility="{Binding PMBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMBIsInstalled}"/>
                     <userControls:TMChamber x:Name="PMC" ModuleName="PMC" Canvas.Top="-37"  Canvas.Left="586" Width="140" Height="140" RotateTransformValue="29"   DoorIsOpen="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMCWafer}" PMVisibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMCIsInstalled}"/>
                     <userControls:TMChamber x:Name="PMD" ModuleName="PMD" Canvas.Top="160"  Canvas.Left="788" Width="140" Height="140" RotateTransformValue="90"   DoorIsOpen="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMDWafer}" PMVisibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding PMDIsInstalled}"/>
+
+                    <userControls:EFEMFrontView UnitData="{Binding TMModuleInfo}" Title="TM Robot"      Canvas.Top="180" Canvas.Left="20"/>
                 </Canvas>
             </Viewbox>
         </Canvas>

+ 5 - 5
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -187,11 +187,11 @@ namespace Venus_RT.Modules.PMs
                 return RState.Failed;
             }
 
-            //if(step.ElapsedTime() > ProcessUnit.HoldTime * 1000)
-            //{
-            //    Chamber.GeneratorSetpower(0);
-            //    Chamber.GeneratorPowerOn(false);
-            //}
+            if (step.ElapsedTime() > ProcessUnit.HoldTime * 1000)
+            {
+                Chamber.GeneratorSetpower(0);
+                Chamber.GeneratorPowerOn(false);
+            }
 
             return RState.Running;
         }

File diff suppressed because it is too large
+ 1324 - 1281
Venus/Venus_Themes/Themes/Generic.xaml


+ 16 - 4
Venus/Venus_Themes/UserControls/Chamber.xaml

@@ -10,13 +10,13 @@
         <Storyboard x:Key="SlitValve_Open">
             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" >
                 <EasingDoubleKeyFrame KeyTime="0" Value="75"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:3" Value="42"/>
+                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="42"/>
             </DoubleAnimationUsingKeyFrames>
         </Storyboard>
         <Storyboard x:Key="SlitValve_Close">
             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" >
                 <EasingDoubleKeyFrame KeyTime="0" Value="42"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:3" Value="75"/>
+                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="75"/>
             </DoubleAnimationUsingKeyFrames>
         </Storyboard>
         <Style TargetType="{x:Type Rectangle}" x:Key="SlitValve_Animation" >
@@ -33,7 +33,7 @@
         </Style>
     </UserControl.Resources>
     <Canvas >
-
+        
         <Grid Width="240" Height="190" Canvas.Top="80">
             <Grid.RowDefinitions>
                 <RowDefinition Height="160"/>
@@ -64,6 +64,12 @@
                 </Rectangle.Fill>
             </Rectangle>
             <Rectangle x:Name="BG_Status" Margin="9,19" Visibility="{Binding BiasRfPowerOnChamberVisibility}" >
+                <Rectangle.ContextMenu >
+                    <ContextMenu>
+                        <MenuItem Header="Create Wafer"  Click="CreateWafer_Click"     IsChecked="{Binding IsHasWafer}" IsEnabled="{Binding IsHasWafer,Converter={StaticResource BoolToBool}}"/>
+                        <MenuItem Header="Delete Wafer"  Click="DeleteWafer_Click"     IsChecked="{Binding IsHasWafer,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding IsHasWafer}"/>
+                    </ContextMenu>
+                </Rectangle.ContextMenu>
                 <Rectangle.Style>
                     <Style>
                         <Setter Property="Rectangle.Fill" Value="WhiteSmoke"/>
@@ -307,7 +313,13 @@
                 </Grid>
 
                 <!--slit door右边-->
-                <Grid Margin="190,-10,-40,29" >
+                <Grid Margin="190,-10,-40,29" Cursor="Hand">
+                    <Grid.ContextMenu>
+                        <ContextMenu >
+                            <MenuItem Header="Open Door"   Click="OpenDoor_Click"  IsChecked="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}"                                        IsEnabled="{Binding IsSlitDoorClosed}"/>
+                            <MenuItem Header="Close Door"  Click="CloseDoor_Click"  IsChecked="{Binding IsSlitDoorClosed}"  IsEnabled="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}"/>
+                        </ContextMenu>
+                    </Grid.ContextMenu>
                     <Rectangle  Fill="DimGray" Style="{StaticResource SlitValve_Animation}" Width="8" VerticalAlignment="Top" Height="75" />
                     <Rectangle  Fill="DimGray" Style="{StaticResource SlitValve_Animation}" Width="8" VerticalAlignment="Bottom" Height="75" />
                 </Grid>

+ 33 - 0
Venus/Venus_Themes/UserControls/Chamber.xaml.cs

@@ -12,6 +12,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using Venus_Themes.Unity;
 
 namespace Venus_Themes.UserControls
 {
@@ -90,5 +91,37 @@ namespace Venus_Themes.UserControls
             get { return (string)this.GetValue(WaferIDProperty); }
             set { this.SetValue(WaferIDProperty, value); }
         }
+        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
+      "ModuleName", typeof(string), typeof(Chamber));
+
+        public string ModuleName
+        {
+            get { return (string)this.GetValue(ModuleNameProperty); }
+            set
+            {
+                this.SetValue(ModuleNameProperty, value);
+            }
+        }
+
+        private void CreateWafer_Click(object sender, RoutedEventArgs e)
+        {
+            UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = true });
+        }
+
+        private void DeleteWafer_Click(object sender, RoutedEventArgs e)
+        {
+            UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = false });
+
+        }
+        private void OpenDoor_Click(object sender, RoutedEventArgs e)
+        {
+            //var t = ((((this.Parent as Canvas).Parent as Canvas).Parent as UserControl).DataContext).;
+            UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Open" });
+        }
+
+        private void CloseDoor_Click(object sender, RoutedEventArgs e)
+        {
+            UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Close" });
+        }
     }
 }

+ 12 - 0
Venus/Venus_Themes/unity/UIEvents.cs

@@ -26,10 +26,22 @@ namespace Venus_Themes.Unity
         {
             LLEDoorRaiseChangedEvent?.Invoke(para);
         }
+
+        public static event Action<WaferOperation> ChamberCreateDeleteWaferEvent;
+        public static void OnChamberCreateDeleteWafer(WaferOperation para)
+        {
+            ChamberCreateDeleteWaferEvent?.Invoke(para);
+        }
     }
     public class DoorPara
     {
         public string ModuleName { get; set; }
         public string IsOpen { get; set; }
     }
+
+    public class WaferOperation
+    {
+        public string ModuleName { get; set; }
+        public bool IsCreate { get; set; }
+    }
 }