123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- using Aitex.Core.RT.RecipeCenter;
- using MECF.Framework.Common.OperationCenter;
- using MECF.Framework.Common.RecipeCenter;
- using CyberX8_Core;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- using MECF.Framework.Common.Equipment;
- namespace CyberX8_Themes.UserControls
- {
- /// <summary>
- /// RecipeControlMetal.xaml 的交互逻辑
- /// </summary>
- public partial class RecipeControlMetal : UserControl
- {
- public RecipeControlMetal()
- {
- InitializeComponent();
- CheckBoxA.IsChecked = false;
- CheckBoxB.IsChecked = false;
- }
- #region 属性
- public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
- "ModuleName", typeof(string), typeof(RecipeControlMetal),
- new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// 模块名称
- /// </summary>
- public string ModuleName
- {
- get
- {
- return (string)this.GetValue(ModuleNameProperty);
- }
- set
- {
- this.SetValue(ModuleNameProperty, value);
- }
- }
- public static readonly DependencyProperty ModuleTitleProperty = DependencyProperty.Register(
- "ModuleTitle", typeof(string), typeof(RecipeControlMetal),
- new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// 模块名称
- /// </summary>
- public string ModuleTitle
- {
- get
- {
- return (string)this.GetValue(ModuleTitleProperty);
- }
- set
- {
- this.SetValue(ModuleTitleProperty, value);
- }
- }
- public static readonly DependencyProperty InputCycleTimesProperty = DependencyProperty.Register(
- "InputCycleTimes", typeof(int), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// InputCycleTimes
- /// </summary>
- public int InputCycleTimes
- {
- get
- {
- return (int)this.GetValue(InputCycleTimesProperty);
- }
- set
- {
- this.SetValue(InputCycleTimesProperty, value);
- }
- }
- public static readonly DependencyProperty AchievedCycleTimesProperty = DependencyProperty.Register(
- "AchievedCycleTimes", typeof(int), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// AchievedCycleTimes
- /// </summary>
- public int AchievedCycleTimes
- {
- get
- {
- return (int)this.GetValue(AchievedCycleTimesProperty);
- }
- set
- {
- this.SetValue(AchievedCycleTimesProperty, value);
- }
- }
- public static readonly DependencyProperty NumberOfSelectedRecipeScansProperty = DependencyProperty.Register(
- "NumberOfSelectedRecipeScans", typeof(int), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// NumberOfSelectedRecipeScans
- /// </summary>
- public int NumberOfSelectedRecipeScans
- {
- get
- {
- return (int)this.GetValue(NumberOfSelectedRecipeScansProperty);
- }
- set
- {
- this.SetValue(NumberOfSelectedRecipeScansProperty, value);
- }
- }
- public static readonly DependencyProperty SelectedRecipeNodeProperty = DependencyProperty.Register(
- "SelectedRecipeNode", typeof(RecipeNode), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(null, new PropertyChangedCallback(SelectedRecipeNodeChanged)));
- /// <summary>
- /// 当前选中recipe节点
- /// </summary>
- public RecipeNode SelectedRecipeNode
- {
- get
- {
- return (RecipeNode)this.GetValue(SelectedRecipeNodeProperty);
- }
- set
- {
- this.SetValue(SelectedRecipeNodeProperty, value);
- }
- }
- public static readonly DependencyProperty RecipeTypeProperty = DependencyProperty.Register(
- "RecipeType", typeof(string), typeof(RecipeControlMetal));
- /// <summary>
- /// Recipe类型
- /// </summary>
- public string RecipeType
- {
- get
- {
- return (string)this.GetValue(RecipeTypeProperty);
- }
- set
- {
- this.SetValue(RecipeTypeProperty, value);
- }
- }
- public static readonly DependencyProperty LoadEnabledProperty = DependencyProperty.Register(
- "LoadEnabled", typeof(bool), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// 按钮可用性
- /// </summary>
- public bool LoadEnabled
- {
- get
- {
- return (bool)this.GetValue(LoadEnabledProperty);
- }
- set
- {
- this.SetValue(LoadEnabledProperty, value);
- }
- }
- /// <summary>
- /// 选中Recipe文件的触发的方法
- /// </summary>
- /// <param name="d"></param>
- /// <param name="e"></param>
- private static void SelectedRecipeNodeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (e.NewValue != null)
- {
- d.SetValue(LoadEnabledProperty, true);
- }
- else
- {
- d.SetValue(LoadEnabledProperty, false);
- }
- }
- public static readonly DependencyProperty CurrentOperationModeProperty = DependencyProperty.Register(
- "CurrentOperationMode", typeof(string), typeof(RecipeControlMetal));
- /// <summary>
- /// CurrentOperationMode
- /// </summary>
- public string CurrentOperationMode
- {
- get
- {
- return (string)this.GetValue(CurrentOperationModeProperty);
- }
- set
- {
- this.SetValue(CurrentOperationModeProperty, value);
- }
- }
- public static readonly DependencyProperty IsEngineeringProperty = DependencyProperty.Register(
- "IsEngineering", typeof(bool), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// IsEngineering
- /// </summary>
- public bool IsEngineering
- {
- get
- {
- return (bool)this.GetValue(IsEngineeringProperty);
- }
- set
- {
- this.SetValue(IsEngineeringProperty, value);
- }
- }
- public static readonly DependencyProperty IsProductionProperty = DependencyProperty.Register(
- "IsProduction", typeof(bool), typeof(RecipeControlMetal), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// IsProduction
- /// </summary>
- public bool IsProduction
- {
- get
- {
- return (bool)this.GetValue(IsProductionProperty);
- }
- set
- {
- this.SetValue(IsProductionProperty, value);
- }
- }
- public static readonly DependencyProperty RecipeModeValueProperty = DependencyProperty.Register(
- "RecipeModeValue", typeof(string), typeof(RecipeControlMetal), new FrameworkPropertyMetadata("", new PropertyChangedCallback(OnItemsSourceChanged)));
- /// <summary>
- /// OpertationModeValue
- /// </summary>
- public string RecipeModeValue
- {
- get
- {
- return (string)this.GetValue(RecipeModeValueProperty);
- }
- set
- {
- this.SetValue(RecipeModeValueProperty, value);
- }
- }
-
- public static readonly DependencyProperty SelectedSideProperty = DependencyProperty.Register(
- "SelectedSide", typeof(string), typeof(RecipeControlMetal), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
- /// <summary>
- /// SelectedSide
- /// </summary>
- public string SelectedSide
- {
- get
- {
- return (string)this.GetValue(SelectedSideProperty);
- }
- set
- {
- this.SetValue(SelectedSideProperty, value);
- }
- }
- private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (e.NewValue != null)
- {
- string currentMode = (string)e.NewValue;
- switch (currentMode)
- {
- case "Engineering":
- d.SetValue(IsEngineeringProperty, true);
- d.SetValue(IsProductionProperty, false);
- break;
- case "Production":
- d.SetValue(IsEngineeringProperty, false);
- d.SetValue(IsProductionProperty, true);
- break;
- default:
- break;
- }
- }
- }
- #endregion
-
- private void Pause_Click(object sender, RoutedEventArgs e)
- {
- if ("Manual".Equals(CurrentOperationMode))
- {
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PauseWaferRecipe", SelectedRecipeNode.RecipeFullFileName, InputCycleTimes);
- }
- else
- {
- MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private void Resume_Click(object sender, RoutedEventArgs e)
- {
- if ("Manual".Equals(CurrentOperationMode))
- {
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ResumeWaferRecipe", SelectedRecipeNode.RecipeFullFileName, InputCycleTimes);
- }
- else
- {
- MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private void Abort_Click(object sender, RoutedEventArgs e)
- {
- if ("Manual".Equals(CurrentOperationMode))
- {
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
- }
- else
- {
- if (RecipeModeValue != SelectedRecipeNode.RecipeLocation)
- {
- MessageBox.Show("Recipe OperationMode is not match!", $"Current Recipe OperationMode is {RecipeModeValue}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- }
- private void Edit_Click(object sender, RoutedEventArgs e)
- {
- string _recipeName = "";
- string pattern1 = @"^Metal\d$";
- Regex regex1 = new Regex(pattern1);
- switch (ModuleName)
- {
- case string str when regex1.IsMatch(str):
- _recipeName = "DepRecipe";
- break;
- default:
- break;
- }
- if (!"Manual".Equals(CurrentOperationMode))
- {
- MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- if (RecipeModeValue != SelectedRecipeNode.RecipeLocation)
- {
- MessageBox.Show("Recipe OperationMode is not match!", $"Current Recipe OperationMode is {RecipeModeValue}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- GlobalEvents.OnSwitchFixedTabItem("Recipe", "", _recipeName);
- }
- }
- }
- private void RunRecipe_Click(object sender, RoutedEventArgs e)
- {
- if ("Manual".Equals(CurrentOperationMode))
- {
- if (InputCycleTimes == 0)
- {
- MessageBox.Show("Please Enter CycleTimes First!", "Current Cycle is 0", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- if (RecipeModeValue != SelectedRecipeNode.RecipeLocation)
- {
- MessageBox.Show("Recipe OperationMode is not match!", $"Current Recipe OperationMode is {RecipeModeValue}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CycleManualProcessRecipe", SelectedRecipeNode.RecipeFullFileName, SelectedSide, InputCycleTimes);
- }
- }
- }
- else
- {
- MessageBox.Show("Current OperationMode Can't Perform This Action", $"Current OperationMode is {CurrentOperationMode}", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private void Side_Checked(object sender, RoutedEventArgs e)
- {
- CheckBox checkBox = (sender as CheckBox);
- if ((bool)CheckBoxA.IsChecked && (bool)!CheckBoxB.IsChecked)
- {
- SelectedSide = "SideA";
- }
- else if ((bool)!CheckBoxA.IsChecked && (bool)CheckBoxB.IsChecked)
- {
- SelectedSide = "SideB";
- }else
- {
- SelectedSide = "";
- }
- }
- }
- }
|