using Aitex.Core.Common;
using Aitex.Core.Util;
using Aitex.Sorter.Common;
using Aitex.Sorter.UI.Controls;
using MECF.Framework.Common.CommonData;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Media3D;
namespace EfemUI.Controls
{
///
/// EFEM2LPJet.xaml 的交互逻辑
///
public partial class EFEM2LPJetAB : EFEMBase
{
public EFEM2LPJetAB()
{
InitializeComponent();
root.DataContext = this;
}
public bool IsEnableTextMenu
{
get { return (bool)GetValue(IsEnableTextMenuProperty); }
set { SetValue(IsEnableTextMenuProperty, value); }
}
// Using a DependencyProperty as the backing store for IsEnableTextMenu. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsEnableTextMenuProperty =
DependencyProperty.Register("IsEnableTextMenu", typeof(bool), typeof(EFEM2LPJetAB), new PropertyMetadata(true));
public WaferInfo Aligner1Wafer
{
get { return (WaferInfo)GetValue(Aligner1WaferProperty); }
set { SetValue(Aligner1WaferProperty, value); }
}
// Using a DependencyProperty as the backing store for Aligner1Wafer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty Aligner1WaferProperty =
DependencyProperty.Register("Aligner1Wafer", typeof(WaferInfo), typeof(EFEM2LPJetAB), new PropertyMetadata(null));
public WaferInfo Aligner2Wafer
{
get { return (WaferInfo)GetValue(Aligner2WaferProperty); }
set { SetValue(Aligner2WaferProperty, value); }
}
// Using a DependencyProperty as the backing store for Aligner2Wafer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty Aligner2WaferProperty =
DependencyProperty.Register("Aligner2Wafer", typeof(WaferInfo), typeof(EFEM2LPJetAB), new PropertyMetadata(null));
public WaferInfo CoolingBuffer1Wafer
{
get { return (WaferInfo)GetValue(CoolingBuffer1WaferProperty); }
set { SetValue(CoolingBuffer1WaferProperty, value); }
}
// Using a DependencyProperty as the backing store for CoolingBuffer1Wafer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CoolingBuffer1WaferProperty =
DependencyProperty.Register("CoolingBuffer1Wafer", typeof(WaferInfo), typeof(EFEM2LPJetAB), new PropertyMetadata(null));
public WaferInfo CoolingBuffer2Wafer
{
get { return (WaferInfo)GetValue(CoolingBuffer2WaferProperty); }
set { SetValue(CoolingBuffer2WaferProperty, value); }
}
// Using a DependencyProperty as the backing store for CoolingBuffer2Wafer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CoolingBuffer2WaferProperty =
DependencyProperty.Register("CoolingBuffer2Wafer", typeof(WaferInfo), typeof(EFEM2LPJetAB), new PropertyMetadata(null));
public WaferInfo FlipperWafer
{
get { return (WaferInfo)GetValue(FlipperWaferProperty); }
set { SetValue(FlipperWaferProperty, value); }
}
// Using a DependencyProperty as the backing store for FlipperWafer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FlipperWaferProperty =
DependencyProperty.Register("FlipperWafer", typeof(WaferInfo), typeof(EFEM2LPJetAB), new PropertyMetadata(null));
public WaferDisplayMode WaferIDDisplayMode
{
get { return (WaferDisplayMode)GetValue(WaferDisplayModeProperty); }
set { SetValue(WaferDisplayModeProperty, value); }
}
// Using a DependencyProperty as the backing store for WaferIDDisplayMode. This enables animation, styling, binding, etc...
public static readonly DependencyProperty WaferDisplayModeProperty =
DependencyProperty.Register("WaferIDDisplayMode", typeof(WaferDisplayMode), typeof(EFEM2LPJetAB), new PropertyMetadata(WaferDisplayMode.None));
[Subscription("CoolingBuffer1Disable", "System")]
public bool CoolingBuffer1Disable
{
get;
set;
}
[Subscription("CoolingBuffer2Disable", "System")]
public bool CoolingBuffer2Disable
{
get;
set;
}
[Subscription("Aligner1Disable", "System")]
public bool Aligner1Disable
{
get;
set;
}
[Subscription("Aligner2Disable", "System")]
public bool Aligner2Disable
{
get;
set;
}
[Subscription("RobotMoveInfo", "Robot")]
public RobotMoveInfo RobotMoveInfo
{
get;
set;
}
public override Dictionary StationPosition
{
get
{
return new Dictionary
{
{ "ArmA.System",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=155,
Arm=240,
Hand=236
},
EndPosition= new RobotPosition()
{
Root=155,
Arm=240,
Hand=236
}
}
},
{ "ArmB.System",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=25,
Arm=120,
Hand=484
},
EndPosition= new RobotPosition()
{
Root=25,
Arm=120,
Hand=484
}
}
},
{ "ArmA.LP1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=228,
Arm=179,
Hand=67
},
EndPosition= new RobotPosition()
{
Root=189,
Arm=225,
Hand=52
}
}
},
{ "ArmB.LP1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=13,
Arm=173,
Hand=281
},
EndPosition= new RobotPosition()
{
Root=37,
Arm=131,
Hand=302
}
}
},
{ "ArmA.LP2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=159,
Arm=187,
Hand=93
},
EndPosition= new RobotPosition()
{
Root=147,
Arm=227,
Hand=61
}
}
},
{ "ArmB.LP2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=-33,
Arm=178,
Hand=286
},
EndPosition= new RobotPosition()
{
Root=-5,
Arm=140,
Hand=301
}
}
},
{ "ArmA.Flipper",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=291,
Arm=187,
Hand=88
},
EndPosition= new RobotPosition()
{
Root=277,
Arm=230,
Hand=58
}
}
},
{ "ArmB.Flipper",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=87,
Arm=166,
Hand=307
},
EndPosition= new RobotPosition()
{
Root=129,
Arm=117,
Hand=318
}
}
},
{ "ArmA.CoolingBuffer1",new StationPosition()
{
StartPosition= new RobotPosition()//取完
{
X=0,
Root=265,
Arm=192,
Hand=76
},
EndPosition= new RobotPosition()//去取
{
Root=258,
Arm=228,
Hand=50
}
}
},
{ "ArmB.CoolingBuffer1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=99,
Arm=150,
Hand=284
},
EndPosition= new RobotPosition()
{
Root=111,
Arm=120,
Hand=301
}
}
},
{ "ArmA.CoolingBuffer2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=255,
Arm=200,
Hand=55
},
EndPosition= new RobotPosition()
{
Root=230,
Arm=235,
Hand=45
}
}
},
{ "ArmB.CoolingBuffer2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=55,
Arm=150,
Hand=309
},
EndPosition= new RobotPosition()
{
Root=84,
Arm=110,
Hand=322
}
}
},
{ "ArmA.Aligner1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=95,
Arm=200,
Hand=66
},
EndPosition= new RobotPosition()
{
Root=75,
Arm=230,
Hand=57
}
}
},
{ "ArmB.Aligner1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=-100,
Arm=172,
Hand=290
},
EndPosition= new RobotPosition()
{
Root=-80,
Arm=142,
Hand=300
}
}
},
{ "ArmA.Aligner2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=132,
Arm=205,
Hand=49
},
EndPosition= new RobotPosition()
{
Root=88,
Arm=250,
Hand=49
}
}
},
{ "ArmB.Aligner2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=-81,
Arm=164,
Hand=304
},
EndPosition= new RobotPosition()
{
Root=-37,
Arm=115,
Hand=310
}
}
},
{ "ArmA.Buffer",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=78,
Arm=198,
Hand=55
},
EndPosition= new RobotPosition()
{
Root=46,
Arm=243,
Hand=48
}
}
},
{ "ArmB.Buffer",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=-126,
Arm=173,
Hand=278
},
EndPosition= new RobotPosition()
{
Root=-104,
Arm=132,
Hand=307
}
}
},
{ "ArmA.LL1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=79,
Arm=141,
Hand=410
},
EndPosition= new RobotPosition()
{
Root=143,
Arm=130,
Hand=357
}
}
},
{ "ArmB.LL1",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=87,
Arm=130,
Hand=413
},
EndPosition= new RobotPosition()
{
Root=137,
Arm=122,
Hand=371
}
}
},
{ "ArmA.LL2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=73,
Arm=220,
Hand=337
},
EndPosition= new RobotPosition()
{
Root=24,
Arm=236,
Hand=370
}
}
},
{ "ArmB.LL2",new StationPosition()
{
StartPosition= new RobotPosition()
{
X=0,
Root=99,
Arm=205,
Hand=326
},
EndPosition= new RobotPosition()
{
Root=26,
Arm=226,
Hand=377
}
}
}
};
}
}
[Subscription("Aligner1.IsEnable")]
public bool Aligner1Enable
{
get;
set;
}
[Subscription("Aligner2.IsEnable")]
public bool Aligner2Enable
{
get;
set;
}
[Subscription("Buffer.IsEnable")]
public bool BufferEnable
{
get;
set;
}
[Subscription("PMA.IsEnable")]
public bool PMAEnable
{
get;
set;
}
[Subscription("PMB.IsEnable")]
public bool PMBEnable
{
get;
set;
}
[Subscription("LP1.IsEnable")]
public bool LP1Enable
{
get;
set;
}
[Subscription("LP2.IsEnable")]
public bool LP2Enable
{
get;
set;
}
[Subscription("Flipper.IsEnable")]
public bool FlipperEnable
{
get;
set;
}
[Subscription("CoolingBuffer1.IsEnable")]
public bool CoolingBuffer1Enable
{
get;
set;
}
[Subscription("CoolingBuffer2.IsEnable")]
public bool CoolingBuffer2Enable
{
get;
set;
}
[Subscription("System.IsPMADoorOpen")]
public bool IsPMADoorOpen
{
get;
set;
}
[Subscription("System.IsPMBDoorOpen")]
public bool IsPMBDoorOpen
{
get;
set;
}
private bool _isFlipperOverOrigin;
[Subscription("Flipper.IsFlipperOverOrigin")]
public bool IsFlipperOverOrigin
{
get => _isFlipperOverOrigin;
set
{
if (_isFlipperOverOrigin != value)
{
_isFlipperOverOrigin = value;
//FlipperAnimation();
}
}
}
private bool _triggerFlipperTurnOver = false;
private void FlipperAnimation()
{
DoubleAnimation da = new DoubleAnimation();
da.Duration = new Duration(TimeSpan.FromSeconds(1));
da.To = _isFlipperOverOrigin ? 0d : 180d;
this.Dispatcher.Invoke(() =>
{
AxisAngleRotation3D aar = this.FindName("aar") as AxisAngleRotation3D;
if (aar != null)
{
aar.BeginAnimation(AxisAngleRotation3D.AngleProperty, da);
}
else
{
Debug.WriteLine("AxisAngleRotation3D named 'aar' not found.");
}
});
//AxisAngleRotation3D aar = this.FindName("aar") as AxisAngleRotation3D;
//aar.BeginAnimation(AxisAngleRotation3D.AngleProperty, da);
}
}
}