|
@@ -21,7 +21,7 @@ using static Venus_Core.NiceRobotAction;
|
|
|
|
|
|
namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
public enum TMModule
|
|
|
{
|
|
|
PMA, PMB, PMC, PMD, LLA, LLB
|
|
@@ -30,7 +30,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
Blade1, Blade2
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
internal class TMViewModel : BindableBase
|
|
|
{
|
|
|
#region 私有字段
|
|
@@ -42,8 +42,8 @@ namespace Venus_MainPages.ViewModels
|
|
|
private bool m_TMIsOFFline;
|
|
|
private bool m_LLIsOFFline;
|
|
|
private WaferInfo m_PMAWafer;
|
|
|
- private WaferInfo m_PMBWafer;
|
|
|
- private WaferInfo m_PMCWafer;
|
|
|
+ private WaferInfo m_PMBWafer;
|
|
|
+ private WaferInfo m_PMCWafer;
|
|
|
private WaferInfo m_PMDWafer;
|
|
|
private WaferInfo m_LLAWafer;
|
|
|
private WaferInfo m_LLBWafer;
|
|
@@ -82,10 +82,10 @@ namespace Venus_MainPages.ViewModels
|
|
|
private int m_PlaceSoltSelectedIndex;
|
|
|
private int m_ExtendSoltSelectedIndex;
|
|
|
private int m_RetractSoltSelectedIndex;
|
|
|
- private List<string> m_RtDataKeys=new List<string> ();
|
|
|
+ private List<string> m_RtDataKeys = new List<string>();
|
|
|
private Dictionary<string, object> m_RtDataValues;
|
|
|
|
|
|
- private string m_ModuleCheckedName="TM";
|
|
|
+ private string m_ModuleCheckedName = "TM";
|
|
|
private string m_RobotAction;
|
|
|
private string m_RobotTarget;
|
|
|
|
|
@@ -100,10 +100,10 @@ namespace Venus_MainPages.ViewModels
|
|
|
private bool m_TMIsInstalled;
|
|
|
|
|
|
|
|
|
- private List<string> m_OriginalCycle=new List<string> ();
|
|
|
+ private List<string> m_OriginalCycle = new List<string>();
|
|
|
private List<string> m_ToCycle = new List<string>();
|
|
|
|
|
|
- private List<TMModule> m_TMModules= new List<TMModule>();
|
|
|
+ private List<TMModule> m_TMModules = new List<TMModule>();
|
|
|
|
|
|
private bool m_CycleEnable;
|
|
|
private string m_OriginalCycleSelectedItem;
|
|
@@ -145,10 +145,10 @@ namespace Venus_MainPages.ViewModels
|
|
|
public string RobotAction2
|
|
|
{
|
|
|
get { return m_RobotAction; }
|
|
|
- set
|
|
|
+ set
|
|
|
{
|
|
|
//RobotActiont(m_RobotAction, value);
|
|
|
-
|
|
|
+
|
|
|
SetProperty(ref m_RobotAction, value);
|
|
|
}
|
|
|
}
|
|
@@ -157,7 +157,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
public RobotMoveInfo RobotMoveInfo
|
|
|
{
|
|
|
get { return m_robotMoveInfo; }
|
|
|
- set
|
|
|
+ set
|
|
|
{
|
|
|
TMRobotMoveInfoChanged(m_robotMoveInfo, value);
|
|
|
SetProperty(ref m_robotMoveInfo, value);
|
|
@@ -175,7 +175,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
get { return m_RobotArm; }
|
|
|
set
|
|
|
- {
|
|
|
+ {
|
|
|
SetProperty(ref m_RobotArm, value);
|
|
|
}
|
|
|
}
|
|
@@ -405,7 +405,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
|
|
|
//private async void RobotActiont(string oldValue,string newValue)
|
|
|
//{
|
|
|
-
|
|
|
+
|
|
|
// if (oldValue == "None" && newValue == "Placing" && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus==1)
|
|
|
// {
|
|
|
// var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
|
|
@@ -474,7 +474,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
// {
|
|
|
// Robot2XAction = WaferRobotXAction.Retract;
|
|
|
// }
|
|
|
-
|
|
|
+
|
|
|
// if (oldValue == "None" && newValue == "Picking" && ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus == 0)
|
|
|
// {
|
|
|
// var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
|
|
@@ -501,7 +501,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
// await Task.Delay(1500);
|
|
|
// Robot2XAction = WaferRobotXAction.Extend;
|
|
|
// }
|
|
|
-
|
|
|
+
|
|
|
// }
|
|
|
|
|
|
|
|
@@ -791,7 +791,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
get { return m_TMIsInstalled; }
|
|
|
set { SetProperty(ref m_TMIsInstalled, value); }
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public List<TMModule> TMModules
|
|
|
{
|
|
|
get { return m_TMModules; }
|
|
@@ -927,7 +927,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
PMDIsInstalled = allModules.Contains("PMD");
|
|
|
LLAIsInstalled = allModules.Contains("LLA");
|
|
|
LLBIsInstalled = allModules.Contains("LLB");
|
|
|
- TMIsInstalled= allModules.Contains("TM");
|
|
|
+ TMIsInstalled = allModules.Contains("TM");
|
|
|
if (PMAIsInstalled == true)
|
|
|
{
|
|
|
TMModules.Add(TMModule.PMA);
|
|
@@ -964,22 +964,22 @@ namespace Venus_MainPages.ViewModels
|
|
|
timer = new DispatcherTimer();
|
|
|
timer.Interval = TimeSpan.FromSeconds(0.1);
|
|
|
timer.Tick += Timer_Tick;
|
|
|
- timer.Start();
|
|
|
+ //timer.Start();
|
|
|
|
|
|
PickSoltItemsSource.Add(1);
|
|
|
PlaceSoltItemsSource.Add(1);
|
|
|
ExtendSoltItemsSource.Add(1);
|
|
|
RetractSoltItemsSource.Add(1);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
private void Timer_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
if (LLAIsInstalled == true)
|
|
|
{
|
|
|
- LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x=>x.WaferStatus!=0);
|
|
|
+ LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
|
|
|
LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
|
|
|
}
|
|
|
if (LLBIsInstalled == true)
|
|
@@ -1011,7 +1011,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
BladeBWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1];
|
|
|
TMModuleInfo = ModuleManager.ModuleInfos["TMRobot"];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
|
|
|
|
|
@@ -1025,7 +1025,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
|
|
|
var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
|
|
|
if (TMRobotMoveActionBladeTarget != null)
|
|
|
- {
|
|
|
+ {
|
|
|
RobotTarget = TMRobotMoveActionBladeTarget.ToString();
|
|
|
}
|
|
|
|
|
@@ -1046,19 +1046,19 @@ namespace Venus_MainPages.ViewModels
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.RobotHome", "TMRobot");
|
|
|
}
|
|
|
private void OnGoto()
|
|
|
- {
|
|
|
+ {
|
|
|
var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), BladeNiceXinSongWaferRobotTAction.ToString(), true);
|
|
|
var selectedHand = (Hand)Enum.Parse(typeof(Hand), GoToSelectedBlade.ToString(), true);
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Goto}", moduleName, selectedHand, selectedHand);
|
|
|
}
|
|
|
private void OnExtend()
|
|
|
- {
|
|
|
+ {
|
|
|
var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), ExtendSelectedModule.ToString(), true);
|
|
|
var selectedHand = (Hand)Enum.Parse(typeof(Hand), ExtendSelectedBlade.ToString(), true);
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Extend}", moduleName, selectedHand, selectedHand);
|
|
|
}
|
|
|
private void OnRetract()
|
|
|
- {
|
|
|
+ {
|
|
|
var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), RetractSelectedModule.ToString(), true);
|
|
|
var selectedHand = (Hand)Enum.Parse(typeof(Hand), RetractSelectedBlade.ToString(), true);
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Retract}", moduleName, selectedHand, selectedHand);
|
|
@@ -1071,7 +1071,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
case "Pick":
|
|
|
PickSoltItemsSource.Clear();
|
|
|
if ((int)PickSelectedModule == 4)
|
|
|
- {
|
|
|
+ {
|
|
|
for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
|
|
|
{
|
|
|
PickSoltItemsSource.Add(i);
|
|
@@ -1164,18 +1164,18 @@ namespace Venus_MainPages.ViewModels
|
|
|
RetractSoltSelectedIndex = 0;
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
- private void OnPick()
|
|
|
+ private void OnPick()
|
|
|
{
|
|
|
Queue<MoveItem> moveItems = new Queue<MoveItem>();
|
|
|
-
|
|
|
- var moduleName= (ModuleName)Enum.Parse(typeof(ModuleName), PickSelectedModule.ToString(), true);
|
|
|
- var selectedHand= (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
|
|
|
+
|
|
|
+ var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PickSelectedModule.ToString(), true);
|
|
|
+ var selectedHand = (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
|
|
|
MoveItem moveItem = new MoveItem(moduleName, PickSoltItemsSource[PickSoltSelectedIndex] - 1, 0, 0, selectedHand);
|
|
|
moveItems.Enqueue(moveItem);
|
|
|
if ((int)PickSelectedModule > 3)
|
|
|
- {
|
|
|
+ {
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPick}", moveItems);
|
|
|
}
|
|
|
else
|
|
@@ -1183,13 +1183,13 @@ namespace Venus_MainPages.ViewModels
|
|
|
InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPick}", moveItems);
|
|
|
}
|
|
|
}
|
|
|
- private void OnPlace()
|
|
|
+ private void OnPlace()
|
|
|
{
|
|
|
Queue<MoveItem> moveItems = new Queue<MoveItem>();
|
|
|
var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
|
|
|
|
|
|
var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
|
|
|
- MoveItem moveItem = new MoveItem(0,0,moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex]-1, selectedHand);
|
|
|
+ MoveItem moveItem = new MoveItem(0, 0, moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex] - 1, selectedHand);
|
|
|
moveItems.Enqueue(moveItem);
|
|
|
if ((int)PlaceSelectedModule > 3)
|
|
|
{
|
|
@@ -1218,7 +1218,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
}
|
|
|
private void OnModuleChecked(object obj)
|
|
|
{
|
|
|
- m_ModuleCheckedName=obj.ToString();
|
|
|
+ m_ModuleCheckedName = obj.ToString();
|
|
|
}
|
|
|
private void OnAbort()
|
|
|
{
|
|
@@ -1239,8 +1239,8 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- if (PMAIsCycle==true)
|
|
|
+
|
|
|
+ if (PMAIsCycle == true)
|
|
|
{
|
|
|
strings.Add("PMA");
|
|
|
}
|
|
@@ -1264,7 +1264,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- InvokeClient.Instance.Service.DoOperation("TMCycle.Start", strings.ToArray(),CycleCount);
|
|
|
+ InvokeClient.Instance.Service.DoOperation("TMCycle.Start", strings.ToArray(), CycleCount);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1275,7 +1275,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
|
|
|
}
|
|
|
private void OnSystemHome()
|
|
|
- {
|
|
|
+ {
|
|
|
InvokeClient.Instance.Service.DoOperation("System.Home");
|
|
|
|
|
|
}
|
|
@@ -1303,10 +1303,30 @@ namespace Venus_MainPages.ViewModels
|
|
|
#region 私有方法
|
|
|
private void addDataKeys()
|
|
|
{
|
|
|
- m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
|
|
|
- m_RtDataKeys.Add("PMB.IsSlitDoorClosed");
|
|
|
- m_RtDataKeys.Add("PMC.IsSlitDoorClosed");
|
|
|
- m_RtDataKeys.Add("PMD.IsSlitDoorClosed");
|
|
|
+ if (PMAIsInstalled)
|
|
|
+ {
|
|
|
+ m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
|
|
|
+ m_RtDataKeys.Add("PMA.CalculationPressure");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (PMBIsInstalled)
|
|
|
+ {
|
|
|
+ m_RtDataKeys.Add("PMB.IsSlitDoorClosed");
|
|
|
+ m_RtDataKeys.Add("PMB.CalculationPressure");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (PMCIsInstalled)
|
|
|
+ {
|
|
|
+ m_RtDataKeys.Add("PMC.IsSlitDoorClosed");
|
|
|
+ m_RtDataKeys.Add("PMC.CalculationPressure");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (PMDIsInstalled)
|
|
|
+ {
|
|
|
+ m_RtDataKeys.Add("PMD.IsSlitDoorClosed");
|
|
|
+ m_RtDataKeys.Add("PMD.CalculationPressure");
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
|
|
|
m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
|
|
@@ -1315,10 +1335,6 @@ namespace Venus_MainPages.ViewModels
|
|
|
m_RtDataKeys.Add("TM.LLBESlitDoor.IsClosed");
|
|
|
|
|
|
m_RtDataKeys.Add("TMCycle.CycleIndex");
|
|
|
- m_RtDataKeys.Add("PMA.CalculationPressure");
|
|
|
- m_RtDataKeys.Add("PMB.CalculationPressure");
|
|
|
- m_RtDataKeys.Add("PMC.CalculationPressure");
|
|
|
- m_RtDataKeys.Add("PMD.CalculationPressure");
|
|
|
|
|
|
m_RtDataKeys.Add("TM.PMASlitDoor.IsClosed");
|
|
|
m_RtDataKeys.Add("TM.PMBSlitDoor.IsClosed");
|