using MECF.Framework.Common.Communications;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.SMIFs.Reje
{
public class RejeSMIFHandler : HandlerBase
{
static string _Command;
static string charStart = "s";
static string charAdr = "00";
static string charEnd = "\r";
public RejeSMIFHandler(RejeSMIF device, string commandType, string command, string parameter) : base(BuilderMessage(commandType, command, parameter))
{
}
public static string BuilderMessage(string commandType, string command, string parameter)
{
string commandStr = charStart + charAdr + commandType + ":";
if (command != null)
{
_Command = command;
commandStr += command;
}
if (parameter != null)
{
commandStr += parameter;
}
return commandStr + ";" + charEnd;
}
public override bool HandleMessage(MessageBase msg, out bool transactionComplete)
{
RejeSMIFMessage response = msg as RejeSMIFMessage;
ResponseMessage = msg;
transactionComplete = false;
if (response.IsAck)
{
SetState(EnumHandlerState.Acked);
transactionComplete = true;
}
if (response.IsError)
{
SetState(EnumHandlerState.Completed);
transactionComplete = true;
}
if (response.IsNak)
{
SetState(EnumHandlerState.Completed);
transactionComplete = true;
}
if (response.IsEvent)
{
if (response.Command.Contains(_Command))
{
SetState(EnumHandlerState.Completed);
transactionComplete = true;
}
}
return true;
}
}
public class RejeSMIFSetONMGVPModeHandler : RejeSMIFHandler
{
public RejeSMIFSetONMGVPModeHandler(RejeSMIF device)
: base(device, "MOD", "ONMGV", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFSetMENTEHModeHandler : RejeSMIFHandler
{
public RejeSMIFSetMENTEHModeHandler(RejeSMIF device)
: base(device, "MOD", "MENTE", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFStopHeandler : RejeSMIFHandler
{
public RejeSMIFStopHeandler(RejeSMIF device)
: base(device, "MOV", "STOP_", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFORGJZHeandler : RejeSMIFHandler
{
public RejeSMIFORGJZHeandler(RejeSMIF device)
: base(device, "MOV", "ORGJZ", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFPodOpenHeandler : RejeSMIFHandler
{
public RejeSMIFPodOpenHeandler(RejeSMIF device)
: base(device, "MOV", "ORGJL", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFDorOpenHeandler : RejeSMIFHandler
{
public RejeSMIFDorOpenHeandler(RejeSMIF device)
: base(device, "MOV", "DOROP", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFDorCloseHeandler : RejeSMIFHandler
{
public RejeSMIFDorCloseHeandler(RejeSMIF device)
: base(device, "MOV", "DORCL", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFHomeHeandler : RejeSMIFHandler
{
public RejeSMIFHomeHeandler(RejeSMIF device)
: base(device, "MOV", "HOME_", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFStageHeandler : RejeSMIFHandler
{
public RejeSMIFStageHeandler(RejeSMIF device)
: base(device, "MOV", "STAGE", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFTeachHeandler : RejeSMIFHandler
{
public RejeSMIFTeachHeandler(RejeSMIF device)
: base(device, "MOV", "TEACH", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFMapingHeandler : RejeSMIFHandler
{
public RejeSMIFMapingHeandler(RejeSMIF device)
: base(device, "MOV", "MAPDO", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFORGSHHeandler : RejeSMIFHandler
{
public RejeSMIFORGSHHeandler(RejeSMIF device)
: base(device, "MOV", "ORGSH", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFLoadCassetteHeandler : RejeSMIFHandler
{
public RejeSMIFLoadCassetteHeandler(RejeSMIF device)
: base(device, "MOV", "CLDMP", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFUnLoadCassetteHeandler : RejeSMIFHandler
{
public RejeSMIFUnLoadCassetteHeandler(RejeSMIF device)
: base(device, "MOV", "CUDMP", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFResetHeandler : RejeSMIFHandler
{
public RejeSMIFResetHeandler(RejeSMIF device)
: base(device, "SET", "RESET", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFSetHomePositionHeandler : RejeSMIFHandler
{
public RejeSMIFSetHomePositionHeandler(RejeSMIF device, int position)
: base(device, "SET", $"H{position}", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFSetWTYHeandler : RejeSMIFHandler
{
///
///
///
///
/// 0-39
public RejeSMIFSetWTYHeandler(RejeSMIF device, int mapNo)
: base(device, "SET", $"WTY{mapNo}", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
msg.IsAck = true;
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFGetStatusHandler : RejeSMIFHandler
{
RejeSMIF _device = null;
private string sysStatus = "-1"; //位置1 状态0 正常,A可恢复报警
private string mode = "-1"; //位置2 模式 0 online模式,1 维护模式,T 示教模式
private int isRunOrigin = -1; //位置3 0未执行,1执行
private int runStatus = -1; //位置4 0停止状态 1运行状态
private string errorCode = "00";//5-6
private int podStatus = -1;//7 0不在位,1 在位
private int clampStatus = -1;//8 0松开状态,加紧状态,?异常状态
private int doorSstatus = -1;//9 0门关闭状态,1夹紧状态,?异常状态
private int waferStatus = -1;//12 0晶圆凸出,1无晶圆凸出
private int zAixsPod = -1;//13 0 Home位置,1Stage位置,? 未知位置
public RejeSMIFGetStatusHandler(RejeSMIF device)
: base(device, "GET", $"STATE", "")
{
_device = device;
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
string raw = result.RawMessage;
msg.IsAck = true;
if (result.Data != null && result.Data.Length >= 20)
{
//获取状态信息
sysStatus = result.Data.Substring(0, 1);
mode = result.Data.Substring(1, 1);
isRunOrigin = Convert.ToInt32(result.Data.Substring(2, 1));
runStatus = Convert.ToInt32(result.Data.Substring(3, 1));
errorCode = result.Data.Substring(4, 2);
podStatus = Convert.ToInt32(result.Data.Substring(6, 1));
clampStatus = Convert.ToInt32(result.Data.Substring(7, 1));
doorSstatus = Convert.ToInt32(result.Data.Substring(8, 1));
waferStatus = Convert.ToInt32(result.Data.Substring(11, 1));
zAixsPod = Convert.ToInt32(result.Data.Substring(12, 1));
if (errorCode != "00")
{
_device.NoteError(errorCode, 3);
handled = false;
return false;
}
}
else
{
handled = false;
return false;
}
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFGetVersnHandler : RejeSMIFHandler
{
public RejeSMIFGetVersnHandler(RejeSMIF device)
: base(device, "GET", $"VERSN", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
if (result.Data != null && result.Data.Length > 0)
{
msg.IsAck = true;
//获取状态信息
}
else
{
handled = false;
return false;
}
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFGetMapingStateHandler : RejeSMIFHandler
{
public RejeSMIFGetMapingStateHandler(RejeSMIF device)
: base(device, "GET", $"MAPRD", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
if (result.Data != null && result.Data.Length > 0)
{
msg.IsAck = true;
//获取状态信息
}
else
{
handled = false;
return false;
}
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
public class RejeSMIFGetWaferStateHandler : RejeSMIFHandler
{
public RejeSMIFGetWaferStateHandler(RejeSMIF device)
: base(device, "GET", $"THICK", "")
{
}
public override bool HandleMessage(MessageBase msg, out bool handled)
{
var result = msg as RejeSMIFMessage;
if (result.Data != null && result.Data.Length > 0)
{
msg.IsAck = true;
//获取状态信息
}
else
{
handled = false;
return false;
}
if (base.HandleMessage(msg, out handled))
{
//Device.NoteConstant(result.MessagePart[1]);
}
return true;
}
}
}