Sic.Framework/MECF.Framework.RT.Equipment.../HardwareUnits/LoadPorts/TDK/SetHandler.cs

188 lines
4.7 KiB
C#

using Aitex.Core.RT.Device;
using Aitex.Sorter.Common;
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK
{
public class ResetHandler : IMsg
{
public bool background { get; private set; }
public string deviceID { private get; set; }
public ResetHandler()
{
background = true;
}
public string package(params object[] args)
{
return "SET:RESET";
}
public string retry()
{
return "RST:RESET";
}
public bool unpackage(string type, string[] cmds)
{
if (type.Equals("INF"))
return true;
return false;
}
public bool canhandle(string id)
{
return id.Equals("RESET");
}
}
/// <summary>
/// 将LoadPort切换为FOSB模式
/// </summary>
public class FOSBModeHandler : IMsg
{
public bool background { get; private set; }
public string deviceID { private get; set; }
public FOSBModeHandler()
{
background = true;
}
public string package(params object[] args)
{
return "SET:FSBON";
}
public string retry()
{
return "RST:FSBON";
}
public bool unpackage(string type, string[] cmds)
{
if (type.Equals("ACK"))
return true;
return false;
}
public bool canhandle(string id)
{
return id.Equals("FSBON");
}
}
/// <summary>
/// 将LoadPort切换为FOUP模式
/// </summary>
public class FOUPModeHandler : IMsg
{
public bool background { get; private set; }
public string deviceID { private get; set; }
public FOUPModeHandler()
{
background = true;
}
public string package(params object[] args)
{
return "SET:FSBOF";
}
public string retry()
{
return "RST:FSBOF";
}
public bool unpackage(string type, string[] cmds)
{
if (type.Equals("ACK"))
return true;
return false;
}
public bool canhandle(string id)
{
return id.Equals("FSBOF");
}
}
public class IndicatorHandler : IMsg
{
public bool background { get; private set; }
public string deviceID { private get; set; }
private string[] _opstring = { "LON", "LBL", "LOF" };
private string _cmd =" ";
Indicator light;
IndicatorState func;
public IndicatorHandler()
{
background = true;
}
public string package(params object[] args)
{
light = (Indicator)args[0];
func = (IndicatorState)args[1];
_cmd = indicator(light,func);
return string.Format("SET:{0}", _cmd);
}
public string retry()
{
return string.Format("RST:{0}", _cmd);
}
public bool unpackage(string type, string[] cmds)
{
if (type.Equals("INF"))
{
SetLight(light,func);
TDKLoadPort device = DEVICE.GetDevice<TDKLoadPort>(deviceID);
string reason = string.Empty;
// device.QueryIndicator(out reason);
return true;
}
return false;
}
public bool canhandle(string id)
{
return id.Equals(_cmd);
}
private string indicator(Indicator light, IndicatorState op)
{
return string.Format("{0}{1:D2}", _opstring[(int)op-1], (int)light);
}
private void SetLight(Indicator light, IndicatorState op)
{
TDKLoadPort device = DEVICE.GetDevice<TDKLoadPort>(deviceID);
switch (light)
{
case Indicator.LOAD:
device.IndicatiorLoad = op;
break;
case Indicator.UNLOAD:
device.IndicatiorUnload = op;
break;
case Indicator.ACCESSAUTO:
device.IndicatiorAccessAuto = op;
break;
case Indicator.ACCESSMANUL:
device.IndicatiorAccessManual = op;
break;
case Indicator.PLACEMENT:
device.IndicatiorPlacement = op;
break;
case Indicator.PRESENCE:
device.IndicatiorPresence = op;
break;
}
}
}
}