Pārlūkot izejas kodu

1.分开Venus/Kepler OverView界面,之前公用一个Overview界面
2.Venus Platform界面添加chamber 管路信息

lixiang 1 gadu atpakaļ
vecāks
revīzija
7fe847dfd8

+ 8 - 0
Venus/Venus_MainPages/Venus_MainPages.csproj

@@ -157,6 +157,7 @@
     <Compile Include="ViewModels\IOViewModel.cs" />
     <Compile Include="ViewModels\MFCVerificationViewModel.cs" />
     <Compile Include="ViewModels\OperationOverViewModel.cs" />
+    <Compile Include="ViewModels\OverViewModel_Kepler.cs" />
     <Compile Include="ViewModels\OverViewModel.cs" />
     <Compile Include="ViewModels\PartialPressureViewModel.cs" />
     <Compile Include="ViewModels\PlatformViewModel.cs" />
@@ -198,6 +199,9 @@
     <Compile Include="Views\OperationOverView.xaml.cs">
       <DependentUpon>OperationOverView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\OverView_Kepler.xaml.cs">
+      <DependentUpon>OverView_Kepler.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\OverView.xaml.cs">
       <DependentUpon>OverView.xaml</DependentUpon>
     </Compile>
@@ -303,6 +307,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\OverView_Kepler.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="Views\OverView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1610 - 0
Venus/Venus_MainPages/ViewModels/OverViewModel_Kepler.cs


+ 152 - 14
Venus/Venus_MainPages/ViewModels/PlatformViewModel.cs

@@ -37,6 +37,23 @@ namespace Venus_MainPages.ViewModels
         private WaferInfo m_LLAWafer;
         private WaferInfo m_PMAWafer;
         private bool m_WaferInPosSensor;
+
+        private bool m_SoftPumpValveIsOpen;
+        private bool m_FastPumpValveIsOpen;
+        private bool m_PVHe1ValveIsOpen;
+        private bool m_PVHe2ValveIsOpen;
+        private bool m_TurboPumpPumpingValveIsOpen;
+        private bool m_TurboPumpPurgeValveIsOpen;
+        private bool m_GuageValveIsOpen;
+        private bool m_PendulumValveIsOpen;
+        private bool m_TurboIsOpen;
+        private int m_PositionValue;
+        private float m_PendulumValvePosition;
+        private float m_ProcessHighPressure;
+        private float m_ProcessLowPressure;
+        private float m_ForelinePressurePressure;
+        private int m_TurboPumpRotationalSpeed;
+        private AITMfcData m_MFCN2Data;
         #endregion
 
         #region  属性
@@ -49,11 +66,11 @@ namespace Venus_MainPages.ViewModels
                 {
                     if (value == true && PMCurrentState!=PMState.LLPicking && PMCurrentState != PMState.LLPlacing)
                     {
-                        InvokeClient.Instance.Service.DoOperation("CreateWafer", "LLA", 3);
+                        InvokeClient.Instance.Service.DoOperation("CreateWafer", "LLA", 1);
                     }
                     else if (value == false  && PMCurrentState != PMState.LLPicking && PMCurrentState != PMState.LLPlacing)
                     {
-                        InvokeClient.Instance.Service.DoOperation("DeleteWafer", "LLA", 3);
+                        InvokeClient.Instance.Service.DoOperation("DeleteWafer", "LLA", 1);
                     }
                 }
                 SetProperty(ref m_WaferInPosSensor, value);
@@ -122,6 +139,101 @@ namespace Venus_MainPages.ViewModels
             get { return m_PMCurrentState; }
             set { SetProperty(ref m_PMCurrentState, value); }
         }
+
+        public bool TurboPumpPumpingValveIsOpen
+        {
+            get { return m_TurboPumpPumpingValveIsOpen; }
+            set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); }
+        }
+        public bool TurboPumpPurgeValveIsOpen
+        {
+            get { return m_TurboPumpPurgeValveIsOpen; }
+            set { SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); }
+        }
+        public bool SoftPumpValveIsOpen
+        {
+            get { return m_SoftPumpValveIsOpen; }
+            set { SetProperty(ref m_SoftPumpValveIsOpen, value); }
+        }
+        public bool FastPumpValveIsOpen
+        {
+            get { return m_FastPumpValveIsOpen; }
+            set { SetProperty(ref m_FastPumpValveIsOpen, value); }
+        }
+        public bool GuageValveIsOpen
+        {
+            get { return m_GuageValveIsOpen; }
+            set { SetProperty(ref m_GuageValveIsOpen, value); }
+        }
+
+        public bool PendulumValveIsOpen
+        {
+            get { return m_PendulumValveIsOpen; }
+            set { SetProperty(ref m_PendulumValveIsOpen, value); }
+        }
+
+        public bool TurboIsOpen
+        {
+            get { return m_TurboIsOpen; }
+            set { SetProperty(ref m_TurboIsOpen, value); }
+        }
+        public bool PVHe1ValveIsOpen
+        {
+            get { return m_PVHe1ValveIsOpen; }
+            set { SetProperty(ref m_PVHe1ValveIsOpen, value); }
+        }
+        public bool PVHe2ValveIsOpen
+        {
+            get { return m_PVHe2ValveIsOpen; }
+            set { SetProperty(ref m_PVHe2ValveIsOpen, value); }
+        }
+        public int PositionValue
+        {
+            get { return m_PositionValue; }
+            set { SetProperty(ref m_PositionValue, value); }
+        }
+        public float PendulumValvePosition
+        {
+            get { return m_PendulumValvePosition; }
+            set { SetProperty(ref m_PendulumValvePosition, value); }
+        }
+        public float ProcessHighPressure
+        {
+            get { return m_ProcessHighPressure; }
+            set
+            {
+                SetProperty(ref m_ProcessHighPressure, value);
+            }
+        }
+        public float ProcessLowPressure
+        {
+            get { return m_ProcessLowPressure; }
+            set
+            {
+                SetProperty(ref m_ProcessLowPressure, value);
+            }
+        }
+        public float ForelinePressure
+        {
+            get { return m_ForelinePressurePressure; }
+            set
+            {
+                SetProperty(ref m_ForelinePressurePressure, value);
+            }
+        }
+        public int TurboPumpRotationalSpeed
+        {
+            get { return m_TurboPumpRotationalSpeed; }
+            set
+            {
+                SetProperty(ref m_TurboPumpRotationalSpeed, value);
+            }
+        }
+        public AITMfcData MFCN2Data
+        {
+            get { return m_MFCN2Data; }
+            set { SetProperty(ref m_MFCN2Data, value); }
+        }
         #endregion
 
 
@@ -258,20 +370,11 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnNewWafer()
         {
-            //if (WaferIsVisibility != Visibility.Visible)
-            //{
-            //    WaferIsVisibility = Visibility.Visible;
-            //}
-            //else
-            //{
-            //    WPFMessageBox.ShowInformation("晶圆已创建");
-            //}
             InvokeClient.Instance.Service.DoOperation("CreateWafer", "PMA", 0);
         }
 
         private void OnDeleteWafer()
         {
-            //WaferIsVisibility = Visibility.Collapsed;
             InvokeClient.Instance.Service.DoOperation("DeleteWafer", "PMA", 0);
         }
 
@@ -308,6 +411,7 @@ namespace Venus_MainPages.ViewModels
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", Convert.ToInt32(commonValveControl.Tag.ToString()), !commonValveControl.Status);
             }
         }
+
         #endregion
 
         #region 私有方法
@@ -325,12 +429,29 @@ namespace Venus_MainPages.ViewModels
             PMAWafer = ModuleManager.ModuleInfos["PMA"].WaferManager.Wafers[0];
             
 
-            //PMAWaferIsVisibility = (bool)RtDataValues[$"PMA.HasWafer"] ==true ? Visibility.Visible : Visibility.Collapsed;
-            //LLAWaferIsVisibility = (bool)RtDataValues[$"LLA.HasWafer"] == true ? Visibility.Visible : Visibility.Collapsed;
-
             PMCurrentState= (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());
 
             WaferInPosSensor = (bool)RtDataValues[$"{ModuleName}.SensorSmallWaferInPos.Value"];
+
+            SoftPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveSoftPump.IsOpen");
+            FastPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveFastPump.IsOpen");
+            GuageValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGuage.IsOpen");
+ 
+            TurboPumpPumpingValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen");
+            TurboPumpPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen");
+            PVHe1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe1.IsOpen");
+            PVHe2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe2.IsOpen");
+
+            PumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.PumpIsRunning");
+            TurboIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpIsRunning");
+            PendulumValvePosition = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.GetPVPosition");
+            PositionValue = -((int)((PendulumValvePosition) * 0.09));
+
+            ProcessHighPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessHighPressure");
+            ProcessLowPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessLowPressure");
+            ForelinePressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ForelinePressure");
+            TurboPumpRotationalSpeed = Convert.ToInt32(RtDataValues[$"{ModuleName}.TurboPumpRotationalSpeed"].ToString());
+            MFCN2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcN2");
         }
         private void addDataKeys()
         {
@@ -349,6 +470,23 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"LLA.HasWafer");
             m_RtDataKeys.Add($"LLA.ModuleWaferList");
             m_RtDataKeys.Add($"{ModuleName}.SensorSmallWaferInPos.Value");
+            m_RtDataKeys.Add($"{ModuleName}.ValveSoftPump.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValveFastPump.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValveN2.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe1.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe2.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPumping.IsOpen");
+            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPurge.IsOpen");
+
+            m_RtDataKeys.Add($"{ModuleName}.ValveGuage.IsOpen");
+
+            m_RtDataKeys.Add($"{ModuleName}.TurboPumpIsRunning");
+            m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning");
+            m_RtDataKeys.Add($"{ModuleName}.IsATM");
+            m_RtDataKeys.Add($"{ModuleName}.IsVAC");
+            m_RtDataKeys.Add($"{ModuleName}.GetPVPosition");
+            m_RtDataKeys.Add($"{ModuleName}.TurboPumpRotationalSpeed");
+            m_RtDataKeys.Add($"{ModuleName}.MfcN2");
         }
 
         #endregion

+ 5 - 1
Venus/Venus_MainPages/ViewModels/ProcessHistoryViewModel.cs

@@ -463,7 +463,11 @@ namespace Venus_MainPages.ViewModels
             {
                 Keys.Add(key.Key);
             });
-            var result = GetData(Keys.Distinct().ToList(), Convert.ToDateTime(selectedRecipeItem.StartTime) , Convert.ToDateTime(selectedRecipeItem.EndTime) );
+            if (keys.Count == 0)
+            {
+                return;
+            }
+            var result = GetData(Keys.Distinct().ToList(), Convert.ToDateTime(selectedRecipeItem?.StartTime) , Convert.ToDateTime(selectedRecipeItem?.EndTime) );
             if (result == null)
             {
                 return;

+ 19 - 13
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -337,19 +337,25 @@ namespace Venus_MainPages.ViewModels
             {
                 return;
             }
-            var dlg = new SaveFileDialog()
-            {
-                Title = "Save As",
-                DefaultExt = "rcp",
-                Filter = "rcp files (*.rcp)|*.rcp",
-            };
-            if (dlg.ShowDialog() == true)
-            {
-                var newRecipe = CurrentRecipe;
-                newRecipe.Header.Name = Path.GetFileNameWithoutExtension( dlg.FileName);
-                newRecipe.Header.CreateTime = DateTime.Now.ToString();
-                File.WriteAllText(dlg.FileName, RecipeUnity.RecipeToString(newRecipe));
-            }
+            //var dlg = new SaveFileDialog()
+            //{
+            //    Title = "Save As",
+            //    DefaultExt = "rcp",
+            //    Filter = "rcp files (*.rcp)|*.rcp",
+            //};
+            //if (dlg.ShowDialog() == true)
+            //{
+            //    var newRecipe = CurrentRecipe;
+            //    newRecipe.Header.Name = Path.GetFileNameWithoutExtension( dlg.FileName);
+            //    newRecipe.Header.CreateTime = DateTime.Now.ToString();
+            //    File.WriteAllText(dlg.FileName, RecipeUnity.RecipeToString(newRecipe));
+            //}
+            var newName = Interaction.InputBox("Save As Recipe", "", CurrentRecipeName, -1, -1);
+            var newRecipe = CurrentRecipe;
+            newRecipe.Header.Name = newName;
+            newRecipe.Header.CreateTime = DateTime.Now.ToString();
+            var newrecipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, newName + ".rcp");
+            File.WriteAllText(newrecipePath, RecipeUnity.RecipeToString(newRecipe));
             UpdateRecipeFileList();
         }
 

+ 1 - 1
Venus/Venus_MainPages/Views/OverView.xaml

@@ -721,7 +721,7 @@
             <Ellipse Width="20" Height="20"  Canvas.Top="651.5" Canvas.Left="775" Fill="{Binding MFCHeData.IsWarning,Converter={StaticResource boolToColor4}}"  Stroke="Silver" StrokeThickness="2" ToolTip="Pressure Alarm"></Ellipse>
 
             <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
-            <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding RtDataValues[PMA.GetPVPosition],StringFormat='F0'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding PendulumValvePosition,StringFormat='F0'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1330" LabelValue="Flow(sccm)" TextBoxValue="{Binding MFCN2Data.FeedBack,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
             <!--<ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1367" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" />-->
 

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1209 - 0
Venus/Venus_MainPages/Views/OverView_Kepler.xaml


+ 24 - 0
Venus/Venus_MainPages/Views/OverView_Kepler.xaml.cs

@@ -0,0 +1,24 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using Venus_MainPages.ViewModels;
+
+namespace Venus_MainPages.Views
+{
+    /// <summary>
+    /// OverView.xaml 的交互逻辑
+    /// </summary>
+    public partial class OverView_Kepler : UserControl
+    {
+        public OverView_Kepler()
+        {
+            InitializeComponent();
+        }
+        public void Init(string systemName)
+        {
+            (this.DataContext as OverViewModel_Kepler).ModuleName = systemName;
+            (this.DataContext as OverViewModel_Kepler).addDataKeys();
+        }
+
+    }
+}

+ 219 - 62
Venus/Venus_MainPages/Views/PlatformView.xaml

@@ -17,50 +17,23 @@
         <converters:BoolToColor x:Key="boolToColor"/>
         <converters:BoolToColor2 x:Key="boolToColor2"/>
         <converters:VisibilityToReverse x:Key="VisibilityToReverse"/>
+        <converters:ToBoolMultiValueConverter  x:Key="toBoolMultiValueConverter"/>
+        <converters:ToBoolMultiValueConverter2 x:Key="toBoolMultiValueConverter2"/>
+        <converters:ToBoolMultiValueConverter3 x:Key="toBoolMultiValueConverter3"/>
+        <converters:ToBoolMultiValueConverter4 x:Key="toBoolMultiValueConverter4"/>
+        <converters:BoolToColor5 x:Key="boolToColor5"/>
+        <converters:BoolToColor4 x:Key="boolToColor4"/>
     </UserControl.Resources>
     <Canvas>
-        <!--<ctrls:Chamber Canvas.Left="150" Canvas.Top="500" 
-                       
-                        />-->
         <Image Canvas.Left="200" Canvas.Top="500"  Width="150" Height="150" Source="Pack://application:,,,/Venus_Themes;Component/Resources/LoadLock.png">
-            <!--<Image.ContextMenu>
-                <ContextMenu Visibility="{Binding WaferIsVisibility,Converter={StaticResource VisibilityToReverse}}">
-                    <MenuItem Header="新建晶圆" Command="{Binding NewWaferCommand}"/>
-                </ContextMenu>
-            </Image.ContextMenu>-->
-        </Image>
-        <ctrls:WaferCtrl  Canvas.Left="242" Canvas.Top="542"  WaferData="{Binding PMAWafer}">
-            <!--<ctrls:WaferCtrl.ContextMenu>
-                <ContextMenu >
-                    <MenuItem Header="删除晶圆" Command="{Binding DeleteWaferCommand}" />
-                </ContextMenu>
-            </ctrls:WaferCtrl.ContextMenu>-->
-        </ctrls:WaferCtrl>
 
-        <!--<Ellipse Stroke="White"  Width="80" Height="80" Canvas.Left="235" Canvas.Top="536" Visibility="{Binding PMAWaferIsVisibility}">
-            <Ellipse.ContextMenu>
-                <ContextMenu >
-                    <MenuItem Header="删除晶圆" Command="{Binding DeleteWaferCommand}" />
-                </ContextMenu>
-            </Ellipse.ContextMenu>
-            <Ellipse.Fill>
-                <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
-                    <GradientStop Color="Gray" Offset="0"/>
-                    <GradientStop Color="White"  Offset="0.7"/>
-                    <GradientStop Color="Silver" Offset="1"/>
-                </LinearGradientBrush>
-            </Ellipse.Fill>
-        </Ellipse>-->
-        
-        <ctrls:FlowPipe x:Name="N2Pipe1"  Height="8"  Width="120" Canvas.Left="90"  Canvas.Top="120" IsFlowing="{Binding LoadLockVentValveIsOpen,Mode=TwoWay}">
-            
-        </ctrls:FlowPipe>
+        </Image>
+        <ctrls:WaferCtrl  Canvas.Left="242" Canvas.Top="542"  WaferData="{Binding PMAWafer}"/>
+        <ctrls:FlowPipe x:Name="N2Pipe1"  Height="8"  Width="120" Canvas.Left="90"  Canvas.Top="120" IsFlowing="{Binding LoadLockVentValveIsOpen,Mode=TwoWay}"/>
         <ctrls:FlowPipe  x:Name="purgeFlow2"    Height="8"  Width="142" Canvas.Left="276"  Canvas.Top="220" RotateTransformValue="90"  IsFlowing="{Binding LoadLockPumpValveIsOpen,Mode=TwoWay}"/>
         <ctrls:Pump Canvas.Top="360"  Canvas.Left="254" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}">
             <ctrls:Pump.ContextMenu>
                 <ContextMenu>
-                    <!--<RadioButton Content="Open" Command="{Binding OpenPumpCommand}" IsChecked="{Binding PumpIsOpen}"/>
-                    <RadioButton Content="Close" Command="{Binding ClosePumpCommand}"   IsChecked="{Binding PumpIsOpen,Converter={StaticResource boolToBool}}"/>-->
                     <MenuItem Header="ON"  Command="{Binding OpenPumpCommand}" IsChecked="{Binding PumpIsOpen,Mode=OneWay}" IsEnabled="{Binding PumpIsOpen,Converter={StaticResource boolToBool},Mode=OneWay}"/>
                     <MenuItem Header="OFF" Command="{Binding ClosePumpCommand}" IsChecked="{Binding PumpIsOpen,Converter={StaticResource boolToBool},Mode=OneWay}" IsEnabled="{Binding PumpIsOpen,Mode=OneWay}"/>
                 </ContextMenu>
@@ -72,10 +45,6 @@
         <customControls:CommonValveControl Status="{Binding LoadLockVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="130" Canvas.Top="113" IsCanEdit="True" Tag="28" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
         <!--<ctrls:FlowPipeValve x:Name="purgevalve"   Height="20" Width="24" Canvas.Left="285.5"  Canvas.Top="310" RotateTransformValue="90" IsOpen="{Binding PumpValveIsOpen,Mode=TwoWay}"/>-->
         <customControls:CommonValveControl Status="{Binding LoadLockPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Left="262"  Canvas.Top="270" IsCanEdit="True" Tag="29" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
-
-        <!--<ctrls:CustomSwitch   Height="20" Value="   Slit Door Open   " Canvas.Left="100" Canvas.Top="300" IsOpen="{Binding LoadLockDoorIsOpen,Mode=TwoWay}">
-       
-        </ctrls:CustomSwitch>-->
         <Ellipse Width="20" Height="20" Fill="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="70" Canvas.Top="302" Stroke="Silver"  StrokeThickness="2"/>
         <Button Height="22" Content="   Slit Door Open   " Canvas.Left="100" Canvas.Top="300" Command="{Binding OpenDoorCommand}" Style="{StaticResource SysBtnStyle}" Foreground="White"/>
         <Ellipse Width="20" Height="20" Fill="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource boolToColor}}" Canvas.Left="70" Canvas.Top="342" Stroke="Silver"  StrokeThickness="2"/>
@@ -131,34 +100,14 @@
         <TextBlock Text="VAC" Canvas.Left="387" Canvas.Top="185"/>
         <TextBlock Text="N2" Canvas.Left="30" Canvas.Top="116"/>
         <Image  Canvas.Left="50"  Canvas.Top="110"  Width="40" Height="25"  Source="Pack://application:,,,/Venus_Themes;Component/Resources/Arrow.png" Stretch="Uniform" />
-        <Image Canvas.Left="200" Canvas.Top="100" Width="141" Height="141" Source="Pack://application:,,,/Venus_Themes;Component/Resources/LoadLock.png">
-            <!--<Image.ContextMenu>
-                <ContextMenu Visibility="{Binding WaferIsVisibility,Converter={StaticResource VisibilityToReverse}}">
-                    <MenuItem Header="新建晶圆" Command="{Binding NewWaferCommand}"/>
-                </ContextMenu>
-            </Image.ContextMenu>-->
-        </Image>
-        <!--<Ellipse Stroke="White"  Width="80" Height="80" Canvas.Left="231" Canvas.Top="130" Visibility="{Binding WaferInPosSensor.Value,Converter={StaticResource bool2VisibilityConverter}}">
-           
-            <Ellipse.Fill>
-                <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">
-                    <GradientStop Color="Silver" Offset="0"/>
-                    <GradientStop Color="White" Offset="0.5"/>
-                    <GradientStop Color="Gray" Offset="1"/>
-                </LinearGradientBrush>
-            </Ellipse.Fill>
-        </Ellipse>-->
+        <Image Canvas.Left="200" Canvas.Top="100" Width="141" Height="141" Source="Pack://application:,,,/Venus_Themes;Component/Resources/LoadLock.png"/>
+
         <ctrls:WaferCtrl Canvas.Left="238" Canvas.Top="140"  WaferData="{Binding LLAWafer}"/>
 
         <Grid Canvas.Left="600" Canvas.Top="120" >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"/>
                 <RowDefinition Height="Auto"/>
-                <!--<RowDefinition Height="30"/>
-                <RowDefinition Height="Auto"/>
-                <RowDefinition Height="Auto"/>
-                <RowDefinition Height="30"/>
-                <RowDefinition Height="Auto"/>-->
                 <RowDefinition />
             </Grid.RowDefinitions>
           
@@ -212,6 +161,214 @@
                 </StackPanel>
             </Border>
         </Grid>
+        
+        <Canvas Canvas.Right="1900" Canvas.Top="-50">
+           
+
+            <!--与chamber右上角连接的管道-->
+            <ctrls:FlowPipe  Height="8"  Width="40" Canvas.Left="1262" Canvas.Top="275"  RotateTransformValue="90" />
+            <ctrls:FlowPipe  Height="8"  Width="126" Canvas.Left="1250" Canvas.Top="192"  RotateTransformValue="90" />
+            <ctrls:Pipe2     Canvas.Left="1254" Canvas.Top="285" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-90" />
+
+            <ctrls:FlowPipe  Height="8"  Width="80" Canvas.Left="1252" Canvas.Top="182"   />
+            <ctrls:FlowPipe  Height="8"  Width="70" Canvas.Left="1264" Canvas.Top="272"   />
+            <TextBlock Text="Guage" Canvas.Left="1272" Canvas.Top="248"/>
+
+            <customControls:CommonValveControl   ValveOrientation="Horizontal" Status="{Binding GuageValveIsOpen,Mode=TwoWay}" Height="20" Width="20" Canvas.Left="1280" Canvas.Top="265" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="27" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+
+            <Border    BorderBrush="Gray"  BorderThickness="0"  Width="18" Height="6" Canvas.Left="1315" Canvas.Top="164" >
+                <Border.RenderTransform>
+                    <RotateTransform Angle="90"/>
+                </Border.RenderTransform>
+                <Border.Background>
+                    <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
+                        <GradientStop Color="Gray" Offset="0"/>
+                        <GradientStop Color="White"  Offset="0.5"/>
+                        <GradientStop Color="Gray" Offset="1"/>
+                    </LinearGradientBrush>
+                </Border.Background>
+            </Border>
+            <Border    BorderBrush="Gray"  BorderThickness="0"  Width="20" Height="6" Canvas.Left="1285" Canvas.Top="188" >
+                <Border.RenderTransform>
+                    <RotateTransform Angle="90"/>
+                </Border.RenderTransform>
+                <Border.Background>
+                    <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
+                        <GradientStop Color="Gray" Offset="0"/>
+                        <GradientStop Color="White"  Offset="0.5"/>
+                        <GradientStop Color="Gray" Offset="1"/>
+                    </LinearGradientBrush>
+                </Border.Background>
+            </Border>
+            <Ellipse Width="20" Height="20"  Canvas.Left="1302" Canvas.Top="150" Fill="{Binding RtDataValues[PMA.IsATM],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
+            <Ellipse Width="20" Height="20"  Canvas.Left="1272" Canvas.Top="200" Fill="{Binding RtDataValues[PMA.IsVAC],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
+            <TextBlock Text="ATM" Canvas.Left="1300" Canvas.Top="134"/>
+            <TextBlock Text="VAC" Canvas.Left="1270" Canvas.Top="220"/>
+            <ctrls:Pipe2     Canvas.Left="1242" Canvas.Top="195" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-90" />
+
+
+
+            <!--与chamber底部连接的管道-->
+            <ctrls:FlowPipe   Height="8"  Width="193" Canvas.Left="860"  Canvas.Top="658" IsFlowing="{Binding PVHe1ValveIsOpen}"/>
+            <ctrls:FlowPipe   Height="8"  Width="198" Canvas.Left="1055"  Canvas.Top="463" RotateTransformValue="90"  IsReverse="{Binding PVHe1ValveIsOpen}">
+                <ctrls:FlowPipe.IsFlowing>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                        <Binding Path="PVHe1ValveIsOpen"/>
+                        <Binding Path="PVHe2ValveIsOpen"/>
+                    </MultiBinding>
+                </ctrls:FlowPipe.IsFlowing>
+            </ctrls:FlowPipe>
+            <ctrls:FlowPipe   Height="8"  Width="17"  Canvas.Left="1055"  Canvas.Top="659" RotateTransformValue="90" IsFlowing="{Binding PVHe2ValveIsOpen}"/>
+            <ctrls:FlowPipe   Height="8"  Width="208" Canvas.Left="1057"  Canvas.Top="680" IsFlowing="{Binding PVHe2ValveIsOpen}"/>
+            <ctrls:FlowPipe   Height="8"  Width="20" Canvas.Left="1266"  Canvas.Top="682" RotateTransformValue="90">
+                <ctrls:FlowPipe.IsFlowing>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                        <Binding Path="SoftPumpValveIsOpen"/>
+                        <Binding Path="FastPumpValveIsOpen"/>
+                        <Binding Path="TurboPumpPumpingValveIsOpen"/>
+                        <Binding Path="PVHe2ValveIsOpen"/>
+                    </MultiBinding>
+                </ctrls:FlowPipe.IsFlowing>
+            </ctrls:FlowPipe>
+            <ctrls:FlowPipe   Height="8"  Width="40" Canvas.Left="1265"  Canvas.Top="658" />
+            <ctrls:FlowPipe   Height="8"  Width="178" Canvas.Left="1266"  Canvas.Top="464" RotateTransformValue="90" IsFlowing="{Binding TurboPumpPumpingValveIsOpen}">
+
+            </ctrls:FlowPipe>
+            <ctrls:FlowPipe   Height="8"  Width="45" Canvas.Left="1266"  Canvas.Top="638" RotateTransformValue="90" >
+                <ctrls:FlowPipe.IsFlowing>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                        <Binding Path="SoftPumpValveIsOpen"/>
+                        <Binding Path="FastPumpValveIsOpen"/>
+                        <Binding Path="TurboPumpPumpingValveIsOpen"/>
+                    </MultiBinding>
+                </ctrls:FlowPipe.IsFlowing>
+            </ctrls:FlowPipe>
+
+
+            <ctrls:Pipe2    Canvas.Left="1060"  Canvas.Top="687.8" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-180" />
+
+            <ctrls:FlowPipe   Height="8"  Width="46" Canvas.Left="1213"  Canvas.Top="635"  >
+                <ctrls:FlowPipe.IsFlowing>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                        <Binding Path="SoftPumpValveIsOpen"/>
+                        <Binding Path="FastPumpValveIsOpen"/>
+                    </MultiBinding>
+                </ctrls:FlowPipe.IsFlowing>
+            </ctrls:FlowPipe>
+            <ctrls:FlowPipe   Height="8"  Width="52" Canvas.Left="1165"  Canvas.Top="635" IsFlowing="{Binding SoftPumpValveIsOpen}" />
+
+            <ctrls:FlowPipe  Height="8"  Width="125" Canvas.Left="1219"  Canvas.Top="512" RotateTransformValue="90" IsFlowing="{Binding FastPumpValveIsOpen}"/>
+            <ctrls:FlowPipe  Height="8"  Width="119" Canvas.Left="1168"  Canvas.Top="517" RotateTransformValue="90" IsFlowing="{Binding SoftPumpValveIsOpen}"/>
+
+            <ctrls:Pipe2    Canvas.Left="1173"  Canvas.Top="643" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-180" />
+
+            <ctrls:FlowPipe   Height="8"  Width="48" Canvas.Left="1165"  Canvas.Top="512" HorizontalAlignment="Left" VerticalAlignment="Center" IsReverse="True" IsFlowing="{Binding SoftPumpValveIsOpen}"  />
+            <ctrls:FlowPipe   Height="8"  Width="50" Canvas.Left="1219"  Canvas.Top="463" RotateTransformValue="90">
+                <ctrls:FlowPipe.IsFlowing>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                        <Binding Path="SoftPumpValveIsOpen"/>
+                        <Binding Path="FastPumpValveIsOpen"/>
+                    </MultiBinding>
+                </ctrls:FlowPipe.IsFlowing>
+            </ctrls:FlowPipe>
+            <ctrls:Pipe2    Canvas.Left="1160"  Canvas.Top="525" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-90" />
+
+            <TextBlock Canvas.Left="1130"  Canvas.Top="558" Text="Soft"/>
+            <TextBlock Canvas.Left="1178"  Canvas.Top="558" Text="Fast"/>
+
+            <ctrls:FlowPipe  Height="8"  Width="194" Canvas.Left="1246"  Canvas.Top="535" IsReverse="True" IsFlowing="{Binding TurboPumpPurgeValveIsOpen,Mode=TwoWay}" >
+
+            </ctrls:FlowPipe>
+            <ctrls:FlowPipe  ToolTip="123"   Height="8"  Width="142" Canvas.Left="1448"  Canvas.Top="542" RotateTransformValue="90" IsReverse="True" IsFlowing="{Binding TurboPumpPurgeValveIsOpen}"/>
+            <ctrls:Pipe2    Canvas.Left="1435"  Canvas.Top="535" HorizontalAlignment="Left" VerticalAlignment="Top"  />
+            
+            <customControls:CommonValveControl Status="{Binding TurboPumpPurgeValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Left="1434"  Canvas.Top="610" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="26" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+            <TextBlock Text="Turbo N2&#10;   Purge" Canvas.Left="1365"  Canvas.Top="610" FontSize="15"/>
+
+            <TextBlock Text="VHe1" Canvas.Top="636" Canvas.Left="985"/>
+            <customControls:CommonValveControl   ValveOrientation="Horizontal" Height="20" Width="20"   Canvas.Top="652" Canvas.Left="990" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Status="{Binding PVHe1ValveIsOpen,Mode=TwoWay}" Tag="19" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+
+
+            <TextBlock Text="VHe2" Canvas.Top="658" Canvas.Left="1094"/>
+
+            <customControls:CommonValveControl   ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Top="674" Canvas.Left="1100" Status="{Binding PVHe2ValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="20" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+            <customControls:CommonValveControl Status="{Binding SoftPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="555" Canvas.Left="1154" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="22" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+            <customControls:CommonValveControl Status="{Binding FastPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"  Height="20" Width="20" Canvas.Top="555" Canvas.Left="1205"  IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="23" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+            <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="596" Canvas.Left="1252" Status="{Binding TurboPumpPumpingValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="25" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+
+
+
+
+            <!--turbo-->
+            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}"/>
+
+                <!--蝶阀-->
+            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}"/>
+
+            <Image Canvas.Top="715" Canvas.Left="1425"  Width="40" Height="25"  Source="Pack://application:,,,/Venus_Themes;Component/Resources/Arrow.png" Stretch="Uniform">
+                <Image.RenderTransform>
+                    <RotateTransform Angle="-90"/>
+                </Image.RenderTransform>
+            </Image>
+            <TextBlock Text="N2" Canvas.Top="720" Canvas.Left="1438"/>
+
+            <Image  Canvas.Top="650" Canvas.Left="815"  Width="40" Height="25"  Source="Pack://application:,,,/Venus_Themes;Component/Resources/Arrow.png" Stretch="Uniform" >
+
+            </Image>
+            <TextBlock Text="Helium" Canvas.Top="653" Canvas.Left="770" FontSize="15"/>
+
+
+
+            <!--chamber管道标签-->
+            <ctrls:TextboxWithLabel  Canvas.Top="156" Canvas.Left="1326" LabelValue="CM2(mTorr)" TextBoxValue="{Binding ProcessHighPressure,StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="248" Canvas.Left="1318" LabelValue="CM1(mTorr)" TextBoxValue="{Binding ProcessLowPressure,StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
+           
+            <!--<Ellipse Width="20" Height="20"  Canvas.Top="651.5" Canvas.Left="775" Fill="{Binding MFCHeData.IsWarning,Converter={StaticResource boolToColor4}}"  Stroke="Silver" StrokeThickness="2" ToolTip="Pressure Alarm"></Ellipse>-->
+
+            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding RtDataValues[PMA.GetPVPosition],StringFormat='F0'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1330" LabelValue="Flow(sccm)" TextBoxValue="{Binding MFCN2Data.FeedBack,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
+            <!--<ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1367" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" />-->
+
+            <!--<ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(mTorr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
+            <Border    BorderBrush="Gray"  BorderThickness="0"  Width="15" Height="6" Canvas.Top="581" Canvas.Left="1033">
+                <Border.Background>
+                    <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
+                        <GradientStop Color="Gray" Offset="0"/>
+                        <GradientStop Color="White"  Offset="0.5"/>
+                        <GradientStop Color="Gray" Offset="1"/>
+                    </LinearGradientBrush>
+                </Border.Background>
+            </Border>-->
+            <!--<ctrls:TextboxWithLabel  Canvas.Top="506" Canvas.Left="964" LabelValue="Flow(sccm)" TextBoxValue="{Binding MFCHeData.FeedBack,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
+            <Border    BorderBrush="Gray"  BorderThickness="0"  Width="15" Height="6" Canvas.Top="531" Canvas.Left="1033">
+                <Border.Background>
+                    <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
+                        <GradientStop Color="Gray" Offset="0"/>
+                        <GradientStop Color="White"  Offset="0.5"/>
+                        <GradientStop Color="Gray" Offset="1"/>
+                    </LinearGradientBrush>
+                </Border.Background>
+            </Border>-->
+            <ctrls:TextboxWithLabel  Canvas.Top="550" Canvas.Left="1280" LabelValue="Speed(rpm)" TextBoxValue="{Binding TurboPumpRotationalSpeed}" TextBoxColor="#D7E4BD" />
+            <TextBlock Canvas.Top="600" Canvas.Left="1280" Text="ISO"/>
+
+          
+
+            <!--Chamber-->
+            <ctrls:Chamber Canvas.Left="1034" Canvas.Top="224" 
+                       IsLiftPinUp="{Binding LiftPinIsUp}" 
+                       IsOpenSlitDoor="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}" 
+                       IsLidOpen="{Binding IsLidClosed,Converter={StaticResource BoolToBool}}"  
+                       IsBRFOn="{Binding BRFData.IsRfOn}"
+                       IsSRFOn="{Binding SRFData.IsRfOn}"
+                       IsHasWafer="{Binding IsHasWafer}"
+                        />
+
+            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1244" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}"/>
+            <TextBlock Text="Rough Pump" Canvas.Top="734"  Canvas.Left="1220" FontSize="15"/>
+
 
+        </Canvas>
     </Canvas>
 </UserControl>

+ 0 - 2
Venus/Venus_RT/Devices/AdTecRF.cs

@@ -17,8 +17,6 @@ using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using Venus_Core;
-using Venus_RT.Modules;
-using System.Threading;
 
 namespace Venus_RT.Devices
 {

+ 6 - 7
Venus/Venus_RT/Devices/DeviceManager.cs

@@ -26,13 +26,13 @@ namespace Venus_RT.Instances
         private readonly string device_model_file_MF;
         public DeviceManager()
         {
-            JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));
-            if (jetChamber == JetChamber.Venus)
+            
+            if (RtInstance.CurrentChamber == JetChamber.Venus)
             {
                 device_model_file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config\\", RtInstance.DeviceModelFileName);
                
             }
-            else if (jetChamber == JetChamber.Kepler)
+            else if (RtInstance.CurrentChamber == JetChamber.Kepler)
             {
                 device_model_file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config\\", "DeviceModelKepler.xml");        
             }
@@ -49,8 +49,7 @@ namespace Venus_RT.Instances
             if (ModuleHelper.IsInstalled(ModuleName.TM))
                 InitTM(ModuleName.TM);
 
-            JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));
-            if (jetChamber == JetChamber.Venus)
+            if (RtInstance.CurrentChamber == JetChamber.Venus)
             { 
                 AddCustomModuleDevice(new VenusSignalTower("System", "SignalTower"));
 
@@ -132,8 +131,8 @@ namespace Venus_RT.Instances
 
             AddCustomModuleDevice(new EPDClient(mod));
             //AddCustomDevice(new JetPM(mod));
-            JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));//Venus or Kepler
-            switch (jetChamber)
+
+            switch (RtInstance.CurrentChamber)
             {
                 case JetChamber.Venus:
                     AddCustomDevice(new JetVenusPM(mod));

+ 3 - 2
Venus/Venus_RT/Devices/IODevices/IoPressureControl.cs

@@ -11,6 +11,7 @@ using Aitex.Core.Util;
 using Venus_RT.Devices.IODevices;
 using Aitex.Core.RT.Log;
 using Venus_Core;
+using Venus_RT.Modules;
 
 namespace Venus_RT.Devices
 {
@@ -189,8 +190,8 @@ namespace Venus_RT.Devices
         public void Monitor()
         {
             CheckTolerance();
-            JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));//Venus or Kepler
-            if (jetChamber == JetChamber.Venus)
+            //JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));//Venus or Kepler
+            if (RtInstance.CurrentChamber == JetChamber.Venus)
             {
                 _trigPressureGauge.CLK = PressureGauge.GaugeAlarm;
                 if (_trigPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Chamber pressure gauge Alarm");

+ 3 - 0
Venus/Venus_RT/Instances/RtInstance.cs

@@ -3,6 +3,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using Venus_RT.Instances;
 using MECF.Framework.RT.Core.Applications;
+using Venus_Core;
 
 namespace Venus_RT.Modules
 {
@@ -34,6 +35,8 @@ namespace Venus_RT.Modules
         private ImageSource _trayIcon;
         private IRtLoader _loader;
 
+        public static JetChamber CurrentChamber=JetChamber.None;
+
         public RtInstance()
         {
             _trayIcon = new BitmapImage(new Uri("pack://application:,,,/Venus_RT;component/defaultrt.ico"));

+ 1 - 1
Venus/Venus_RT/Instances/ToolLoader.cs

@@ -60,6 +60,7 @@ namespace Venus_RT.Instances
             Singleton<SystemConfigManager>.Instance.Initialize(PathManager.GetCfgDir() + "System.sccfg");
 
             JetChamber jetChamber=  (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));//Venus or Kepler
+            RtInstance.CurrentChamber=jetChamber;
 
             IoProviderManager.Instance.Initialize(PathManager.GetCfgDir() + "IoProviderConfig.xml", jetChamber);
 
@@ -89,7 +90,6 @@ namespace Venus_RT.Instances
             string s1 = System.Diagnostics.FileVersionInfo.GetVersionInfo(Path.Combine(PathManager.GetAppDir(), "Venus_RT.exe")).ProductVersion;
 
             DATA.Subscribe("GetRTPath", () => AppDomain.CurrentDomain.BaseDirectory);
-
         }
         private void InstanceOnOnEvent(EventItem obj)
         {

+ 322 - 0
Venus/Venus_UI/Config/KeplerMenu.json

@@ -0,0 +1,322 @@
+[
+  {
+    "Id": "PMA",
+    "IsShow": "true",
+    "MenuItem": [
+      {
+        "Id": "Operation",
+        "Name": "Operation",
+        "View": "OverView_Kepler",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "IO",
+        "Name": "IO",
+        "View": "IOView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "Recipe",
+        "Name": "Recipe",
+        "View": "RecipeView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "GasLeakCheck",
+        "Name": "Gas&Leak Check",
+        "View": "GasLeakCheckView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "MFCVerification",
+        "Name": "MFCVerification",
+        "View": "MFCVerificationView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "PartialPressure",
+        "Name": "Partial Pressure",
+        "View": "PartialPressureView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "RFCalibration",
+        "Name": "RF Calibration",
+        "View": "RFCalibrationView",
+        "IsShow": "true"
+      }
+
+    ]
+  },
+  {
+    "Id": "PMB",
+    "IsShow": "false",
+
+    "MenuItem": [
+      {
+        "Id": "Operation",
+        "Name": "Operation",
+        "View": "OverView_Kepler",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "IO",
+        "Name": "IO",
+        "View": "IOView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "Recipe",
+        "Name": "Recipe",
+        "View": "RecipeView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "GasLeakCheck",
+        "Name": "Gas&Leak Check",
+        "View": "GasLeakCheckView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "MFCVerification",
+        "Name": "MFCVerification",
+        "View": "MFCVerificationView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "PartialPressure",
+        "Name": "Partial Pressure",
+        "View": "PartialPressureView",
+        "IsShow": "true"
+
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
+      }
+
+    ]
+  },
+  {
+    "Id": "PMC",
+    "IsShow": "false",
+    "MenuItem": [
+      {
+        "Id": "Operation",
+        "Name": "Operation",
+        "IsShow": "true",
+        "View": "OverView_Kepler"
+      },
+      {
+        "Id": "IO",
+        "Name": "IO",
+        "View": "IOView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "Recipe",
+        "Name": "Recipe",
+        "IsShow": "true",
+        "View": "RecipeView"
+      },
+      {
+        "Id": "GasLeakCheck",
+        "IsShow": "true",
+        "Name": "Gas&Leak Check",
+        "View": "GasLeakCheckView"
+      },
+      {
+        "Id": "MFCVerification",
+        "IsShow": "true",
+        "Name": "MFCVerification",
+        "View": "MFCVerificationView"
+      },
+      {
+        "Id": "PartialPressure",
+        "IsShow": "true",
+        "Name": "Partial Pressure",
+        "View": "PartialPressureView"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
+      }
+
+    ]
+  },
+  {
+    "Id": "PMD",
+
+    "IsShow": "false",
+
+    "MenuItem": [
+      {
+        "Id": "Operation",
+        "IsShow": "true",
+        "Name": "Operation",
+        "View": "OverView_Kepler"
+      },
+      {
+        "Id": "IO",
+        "Name": "IO",
+        "View": "IOView",
+        "IsShow": "true"
+      },
+      {
+        "Id": "Recipe",
+        "IsShow": "true",
+        "Name": "Recipe",
+        "View": "RecipeView"
+      },
+      {
+        "Id": "GasLeakCheck",
+        "IsShow": "true",
+
+        "Name": "Gas&Leak Check",
+        "View": "GasLeakCheckView"
+      },
+      {
+        "Id": "MFCVerification",
+        "IsShow": "true",
+        "Name": "MFCVerification",
+        "View": "MFCVerificationView"
+      },
+      {
+        "Id": "PartialPressure",
+        "IsShow": "true",
+        "Name": "Partial Pressure",
+        "View": "PartialPressureView"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
+      }
+
+    ]
+  },
+  {
+    "Id": "Operation",
+    "IsShow": "true",
+
+    "MenuItem": [
+      {
+        "Id": "OperationOverView",
+        "IsShow": "true",
+        "Name": "OverView",
+        "View": "OperationOverView"
+      },
+      {
+        "Id": "Platform",
+        "IsShow": "true",
+        "Name": "Platform",
+        "View": "PlatformView"
+      },
+      {
+        "Id": "Sequence",
+        "IsShow": "true",
+        "Name": "Sequence",
+        "View": "SequenceView"
+      },
+      {
+        "Id": "Efem",
+        "IsShow": "true",
+        "Name": "EFEM",
+        "View": "EfemView"
+      },
+      {
+        "Id": "Fa",
+        "IsShow": "true",
+        "Name": "FA",
+        "View": "FaView"
+      }
+    ]
+  },
+  {
+    "Id": "TM",
+    "IsShow": "true",
+    "MenuItem": [
+        {
+          "Id": "TM",
+          "IsShow": "true",
+          "Name": "TM",
+          "View": "TMView"
+        },
+        {
+          "Id": "IO",
+          "Name": "IO",
+          "View": "IOView",
+          "IsShow": "true"
+        }     
+    ]
+    
+  },
+  {
+    "Id": "Configuration",
+    "IsShow": "true",
+    "MenuItem": [
+      {
+        "Id": "SystemConfig",
+        "IsShow": "true",
+        "Name": "SystemConfig",
+        "View": "SystemConfigView"
+      },
+      {
+        "Id": "Role",
+        "IsShow": "true",
+        "Name": "Role",
+        "View": "RoleView"
+      }
+    ]
+  },
+  {
+    "Id": "DataLog",
+    "IsShow": "true",
+    "MenuItem": [
+      {
+        "Id": "Event",
+        "IsShow": "true",
+        "Name": "Event",
+        "View": "EventView"
+      },
+      {
+        "Id": "WaferHistoryDB",
+        "IsShow": "true",
+        "Name": "WaferHistory",
+        "View": "WaferHistoryDBView"
+      },
+      {
+        "Id": "ProcessHistory",
+        "IsShow": "true",
+        "Name": "Process History",
+        "View": "ProcessHistoryView"
+      },
+      {
+        "Id": "DataHistory",
+        "IsShow": "true",
+        "Name": "Data History",
+        "View": "DataHistoryView"
+      }
+    ]
+  }
+
+]

+ 0 - 22
Venus/Venus_UI/Models/Menu.cs

@@ -1,22 +0,0 @@
-using System.Runtime.Serialization;
-
-namespace Venus_UI.Models
-{
-    [DataContract]
-    internal class Menu
-    {
-        [DataMember(Name = "ID")]
-        public string ID { get; set; }
-        [DataMember(Name = "Name")]
-        public string Name { get; set; }
-        [DataMember(Name = "Group")]
-        public int Group { get; set; }  
-
-        public Menu(string iD, string name, int group)
-        {
-            ID = iD;
-            Name = name;
-            Group = group;
-        }   
-    }
-}

+ 0 - 22
Venus/Venus_UI/Models/MenuItem.cs

@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Venus_UI.Models
-{
-    [DataContract]
-    public class MenuItem
-    {
-        [DataMember(Name = "Id")]
-        public string Id { get; set; }
-        [DataMember(Name = "Name")]
-        public string Name { get; set; }
-        [DataMember(Name = "View")]
-        public string View { get; set; }
-        [DataMember(Name = "IsShow")]
-        public bool IsShow { get; set; }
-    }
-}

+ 0 - 21
Venus/Venus_UI/Models/VenusMenu.cs

@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Venus_UI.Models
-{
-    [DataContract]
-    public class VenusMenu
-    {
-        [DataMember(Name = "Id")]
-        public string Id { get; set; }
-        [DataMember(Name = "MenuItem")]
-        public List<MenuItem> MenuItem { get; set; }
-        [DataMember(Name = "IsShow")]
-        public bool IsShow { get; set; }
-
-    }
-}

+ 4 - 4
Venus/Venus_UI/Venus_UI.csproj

@@ -151,6 +151,9 @@
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <None Include="Config\KeplerMenu.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="Config\VenusMenu.json">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -168,10 +171,7 @@
       <Generator>MSBuild:Compile</Generator>
     </Page>
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Models\" />
-    <Folder Include="ViewModels\" />
-  </ItemGroup>
+  <ItemGroup />
   <ItemGroup>
     <ProjectReference Include="..\Framework\Common\Common.csproj">
       <Project>{9cd2a6be-1971-4e74-b49e-547982f64034}</Project>

+ 5 - 2
Venus/Venus_UI/Views/ShellView.xaml.cs

@@ -15,6 +15,8 @@ using System.Windows.Media;
 using Venus_Core;
 using System.Reflection;
 using Venus_MainPages.Unity;
+using MECF.Framework.Common.DataCenter;
+using Aitex.Core.RT.SCCore;
 
 namespace Venus_UI.Views
 {
@@ -55,8 +57,9 @@ namespace Venus_UI.Views
             }
         }
         private void CustomWnd_Loaded(object sender, RoutedEventArgs e)
-        {         
-            VenusMenu= SerializeHelper.Instance.ReadFromJsonFile<List<VenusMenu>>("Config/VenusMenu.json");
+        {
+            JetChamber jetChamber = (JetChamber)(SC.GetValue<int>("System.ChamberSelect"));//Venus or Kepler
+            VenusMenu = SerializeHelper.Instance.ReadFromJsonFile<List<VenusMenu>>($"Config/{jetChamber.ToString()}Menu.json");
             int index = 0;
             for (int i = 0; i < VenusMenu.Count; i++)
             {