WaferMoveManager.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Aitex.Core.RT.Log;
  7. using Caliburn.Micro;
  8. using MECF.Framework.Common.OperationCenter;
  9. using OpenSEMI.ClientBase;
  10. using OpenSEMI.Ctrlib.Controls;
  11. using VirgoUI.Client.Dialog;
  12. namespace VirgoUI.Client
  13. {
  14. public class WaferMoveManager
  15. {
  16. #region single Instance
  17. private WaferMoveManager()
  18. {
  19. }
  20. private static WaferMoveManager m_Instance = null;
  21. public static WaferMoveManager Instance
  22. {
  23. get
  24. {
  25. if (m_Instance == null)
  26. {
  27. m_Instance = new WaferMoveManager();
  28. }
  29. return m_Instance;
  30. }
  31. }
  32. #endregion
  33. public void TransferWafer(Slot p_from, Slot p_to, float tempToChamber)
  34. {
  35. try
  36. {
  37. if (p_from == null || p_to == null || !p_from.IsValidSlot() || !p_to.IsValidSlot())
  38. return;
  39. string info = " from " + p_from.ModuleID + " slot " + (p_from.SlotID + 1).ToString() + " to " + p_to.ModuleID + " slot " + (p_to.SlotID + 1).ToString();
  40. string message = "Are you sure to transfer the wafer: \n" + info;
  41. bool displayAlignerCondition = (p_from.ModuleID != "Aligner1" && p_to.ModuleID != "Aligner1"
  42. && p_from.ModuleID != "Aligner2" && p_to.ModuleID != "Aligner2"
  43. && p_from.ModuleID != "Cooling1" && p_to.ModuleID != "Cooling1"
  44. && p_from.ModuleID != "Cooling2" && p_to.ModuleID != "Cooling2") && !p_from.ModuleID.Contains("PM");
  45. bool displayCoolingCondition = (p_from.ModuleID.Contains("PM") );
  46. displayCoolingCondition = displayCoolingCondition && !p_to.ModuleID.Contains("PM");
  47. string labelChamber = "";
  48. if (p_to.ModuleID.Contains("PM"))
  49. {
  50. labelChamber = $"{p_to.ModuleID} Temp. {tempToChamber:F2}℃";
  51. }
  52. WindowManager wm = new WindowManager();
  53. WaferTransferDialogViewModel _transferVM = new WaferTransferDialogViewModel(message, displayAlignerCondition, displayCoolingCondition, labelChamber);
  54. bool? bret = wm.ShowDialogWithNoStyle(_transferVM);
  55. if ((bool)bret)
  56. {
  57. //get and use transfer conditions
  58. WaferTransferCondition conditions = _transferVM.DialogResult;
  59. InvokeClient.Instance.Service.DoOperation("System.MoveWafer",
  60. p_from.ModuleID, p_from.SlotID, p_to.ModuleID, p_to.SlotID,
  61. conditions.IsPassAligner, conditions.AlignerAngle, conditions.IsPassCooling, conditions.CoolingTime);
  62. }
  63. p_from.ClearDragDropStatus();
  64. p_to.ClearDragDropStatus();
  65. }
  66. catch (Exception ex)
  67. {
  68. LOG.Write(ex);
  69. }
  70. }
  71. }
  72. }