Forráskód Böngészése

Merge branch 'master' of http://git.jetplasma-oa.com/JetPlasma/Venus

lixiang 1 éve%!(EXTRA string=óta)
szülő
commit
aad749230c

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

@@ -35,6 +35,10 @@ namespace Venus_MainPages.ViewModels
         private WaferRobotXAction m_Robot1XAction;
         private WaferRobotTAction m_Robot2TAction;
         private WaferRobotXAction m_Robot2XAction;
+        private WaferRobotTAction m_Robot3TAction;
+        private WaferRobotXAction m_Robot3XAction;
+        private WaferRobotTAction m_Robot4TAction;
+        private WaferRobotXAction m_Robot4XAction;
         private RobotMoveInfo m_robotMoveInfo;
         int arm1oldWaferStatus = 100;
         int arm2oldWaferStatus = 100;
@@ -134,6 +138,28 @@ namespace Venus_MainPages.ViewModels
             get { return m_Robot2XAction; }
             set { SetProperty(ref m_Robot2XAction, value); }
         }
+
+        public WaferRobotTAction Robot3TAction 
+        {
+            get{ return m_Robot3TAction;} 
+            set{SetProperty(ref m_Robot3TAction ,value);}
+        }
+        public WaferRobotXAction Robot3XAction 
+        {
+            get{ return m_Robot3XAction;} 
+            set{SetProperty(ref m_Robot3XAction ,value);}
+        }
+        public WaferRobotTAction Robot4TAction 
+        {
+            get{ return m_Robot4TAction;} 
+            set{SetProperty(ref m_Robot4TAction ,value);}
+        }
+        public WaferRobotXAction Robot4XAction 
+        {
+            get{ return m_Robot4XAction;} 
+            set{SetProperty(ref m_Robot4XAction, value);}
+        }
+
         public RobotMoveInfo RobotMoveInfo
         {
             get { return m_robotMoveInfo; }

+ 70 - 6
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -9,10 +9,12 @@ using Newtonsoft.Json;
 using Prism.Commands;
 using Prism.Mvvm;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Text;
 using System.Threading;
 using System.Windows;
 using System.Windows.Controls;
@@ -29,6 +31,8 @@ using Venus_MainPages.Views;
 using Venus_Themes.CustomControls;
 using Venus_Themes.UserControls;
 using WPF.Themes.UserControls;
+using Xceed.Wpf.Toolkit.Primitives;
+using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -257,6 +261,7 @@ namespace Venus_MainPages.ViewModels
                 CurrentRecipe = Recipe.Load(xmlRecipeData);
                 LoadHeadWrapPanel(headWrapPanel, CurrentRecipe);
                 LoadRecipe(CurrentRecipe);
+                
             }
             catch (Exception ex)
             {
@@ -452,8 +457,9 @@ namespace Venus_MainPages.ViewModels
                     Source = recipe.Header,                // 数据源  
                     Path = new PropertyPath(propertyInfo.Name), // 需绑定的数据源属性名  
                     Mode = BindingMode.TwoWay,        // 绑定模式  
-                    UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged    //触发器
+                    UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,    //触发器
                 };
+                
 
                 var propertyTypeName = propertyInfo.PropertyType.Name;
                 var propertyInfoName = propertyInfo.Name;
@@ -461,26 +467,63 @@ namespace Venus_MainPages.ViewModels
                 switch (propertyInfoName)
                 {
                     case "ChamberType":
-                    case "Type":
                         control = new ComboBox();
                         control.Height = 23;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
                         ItemsControlHelper.SetEnumValuesToItemsSource(control, true);
                         break;
+                    case "Type":
+                        ComboBox cb = new ComboBox();
+                        cb.SelectionChanged += ChangeUI;
+                        control = cb;
+                        control.Height = 23;
+                        control.SetBinding(ComboBox.SelectedItemProperty, binding);
+                        ItemsControlHelper.SetEnumValuesToItemsSource(control, true);
+                        break;
                     case "ChuckRecipe":
+                        string[] chucklist = new string[] {"" };
+                        ArrayList arrayList = new ArrayList(chucklist.ToList());
+                        IEnumerable<string> chlist= GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList().Where(item => item.ToLower().Contains("chuck") && (item.ToLower().Contains("dechuck") == false));
+                        foreach (var i in chlist)
+                        {
+                            arrayList.Add(i);
+                        }
+                        chucklist = (string[])arrayList.ToArray(typeof(string));
+                        StringBuilder stringBuilder = new StringBuilder();
+                        //输出
+                        for (int i = 0; i < chucklist.Length; i++)
+                        {
+                            stringBuilder.Append(chucklist[i] + "\t");
+                        }
+                        
                         control = new ComboBox()
                         {
-                            ItemsSource = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList().Where(item => item.ToLower().Contains("chuck")&& (item.ToLower().Contains("dechuck")==false))
+                            ItemsSource = chucklist
                         };
                         control.Height = 23;
+                        control.MinWidth = 100;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
                         break;
                     case "DechuckRecipe":
+                        string[] dechucklist = new string[] { "" };
+                        ArrayList dearrayList = new ArrayList(dechucklist.ToList());
+                        IEnumerable<string> delist = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList().Where(item => item.ToLower().Contains("dechuck"));
+                        foreach (var i in delist)
+                        {
+                            dearrayList.Add(i);
+                        }
+                        dechucklist = (string[])dearrayList.ToArray(typeof(string));
+                        StringBuilder destringBuilder = new StringBuilder();
+                        for (int i = 0; i < dechucklist.Length; i++)
+                        {
+                            destringBuilder.Append(dechucklist[i] + "\t");
+                        }
                         control = new ComboBox()
                         {
-                            ItemsSource= GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList().Where(item=>item.ToLower().Contains("dechuck"))
-                         };
-                        control.Height = 23;                   
+                            ItemsSource= dechucklist
+                        };
+                        control.Height = 23;
+                        control.MinWidth = 100;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
 
                         break;
@@ -539,6 +582,27 @@ namespace Venus_MainPages.ViewModels
                 HeadWrapPanel.Children.Add(control);
             }
         }
+
+        private void ChangeUI(object sender, SelectionChangedEventArgs e)
+        {
+            var t = sender as ComboBox;
+            if (t.SelectedValue.ToString() == "Chuck" || t.SelectedValue.ToString() == "DeChuck")
+            {
+                headWrapPanel.Children[8].Visibility = Visibility.Collapsed;
+                headWrapPanel.Children[9].Visibility = Visibility.Collapsed;
+                headWrapPanel.Children[10].Visibility = Visibility.Collapsed;
+                headWrapPanel.Children[11].Visibility = Visibility.Collapsed;
+            }
+            else
+            {
+                headWrapPanel.Children[8].Visibility = Visibility.Visible;
+                headWrapPanel.Children[9].Visibility = Visibility.Visible;
+                headWrapPanel.Children[10].Visibility = Visibility.Visible;
+                headWrapPanel.Children[11].Visibility = Visibility.Visible;
+            }
+        }
+
+
         private void MenuItemLeftInsert_Click(object sender, RoutedEventArgs e)
         {
             var t = ((sender as MenuItem).Parent as ContextMenu).PlacementTarget as TextBox;

BIN
Venus/Venus_RT/Config/PM/Kepler2300/Kepler2300DeviceModel.xml


+ 23 - 17
Venus/Venus_RT/Devices/IODevices/IoBacksideHe.cs

@@ -53,23 +53,27 @@ namespace Venus_RT.Devices
         }
         public void Monitor()
         {
-            if(MinFlowThreshold > 0 && _mfc.FeedBack <= MinFlowThreshold)
+            if (_mfc != null)
             {
-                OutOfRange = true;
-                _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed min threshold value: {MinFlowThreshold}");
-            }
-            else if(MaxFlowThreshold > 0 && _mfc.FeedBack >= MaxFlowThreshold)
-            {
-                OutOfRange = true;
-                _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed max threshold value: {MaxFlowThreshold}");
-            }
-            else
-            {
-                OutOfRange = false;
+                if (MinFlowThreshold > 0 && _mfc.FeedBack <= MinFlowThreshold)
+                {
+                    OutOfRange = true;
+                    _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed min threshold value: {MinFlowThreshold}");
+                }
+                else if (MaxFlowThreshold > 0 && _mfc.FeedBack >= MaxFlowThreshold)
+                {
+                    OutOfRange = true;
+                    _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed max threshold value: {MaxFlowThreshold}");
+                }
+                else
+                {
+                    OutOfRange = false;
+                }
             }
+            
 
             _DownValve.Monitor();
-            _mfc.Monitor();
+            _mfc?.Monitor();
         }
 
         public void Terminate()
@@ -87,8 +91,9 @@ namespace Venus_RT.Devices
             if (mTorr >= 0.01)
             {
                 _DownValve.TurnValve(true, out _);
-                _UpValve.TurnValve(true, out _);
-                _Up2Valve.TurnValve(true, out _);
+                //Kepler2300 not define upvalve up2valve
+                _UpValve?.TurnValve(true, out _);
+                _Up2Valve?.TurnValve(true, out _);
 
 
 
@@ -97,8 +102,9 @@ namespace Venus_RT.Devices
             else
             {
                 _DownValve.TurnValve(false, out _);
-                _UpValve.TurnValve(false, out _);
-                _Up2Valve.TurnValve(false, out _);
+                //Kepler2300 not define upvalve up2valve
+                _UpValve?.TurnValve(false, out _);
+                _Up2Valve?.TurnValve(false, out _);
 
 
             }

+ 2 - 2
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -162,7 +162,7 @@ namespace Venus_RT.Modules.PMs
             switch (recipe.Header.Type)
             {
                 case RecipeType.Process:
-                   if(_recipeRunningMode == 1 && recipe.Header.ChuckRecipe != null)
+                   if(_recipeRunningMode == 1 && recipe.Header.ChuckRecipe != null && !string.IsNullOrEmpty(recipe.Header.ChuckRecipe))
                     {
                         string chuckcontent= RecipeFileManager.Instance.LoadRecipe(_chamber.Name, recipe.Header.ChuckRecipe, false);
                         var chuckRecipe = Recipe.Load(chuckcontent);
@@ -177,7 +177,7 @@ namespace Venus_RT.Modules.PMs
                     ProcessRecipeName = recipeName;
                     _qeRecipes.Enqueue(recipe);
 
-                    if(_recipeRunningMode == 1 && recipe.Header.DechuckRecipe != null)
+                    if(_recipeRunningMode == 1 && recipe.Header.DechuckRecipe != null && !string.IsNullOrEmpty(recipe.Header.DechuckRecipe))
                     {
 
                         string dechuckcontent = RecipeFileManager.Instance.LoadRecipe(_chamber.Name, recipe.Header.DechuckRecipe, false);