293 lines
7.8 KiB
C#
293 lines
7.8 KiB
C#
using System;
|
||
using Aitex.Core.RT.Device;
|
||
using Aitex.Sorter.Common;
|
||
|
||
|
||
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot.NX100.AL
|
||
{
|
||
public class AlignerHandler : ITransferMsg
|
||
{
|
||
public bool background { get; protected set; }
|
||
public bool evt { get { return false; } }
|
||
public string deviceID { private get; set; }
|
||
|
||
public string _cmd = string.Empty;
|
||
|
||
public IDevice Robot { set { _device = (Aligner)value; } }
|
||
protected Aligner _device;
|
||
|
||
public AlignerHandler()
|
||
{
|
||
background = false;
|
||
}
|
||
|
||
public virtual string package(params object[] args)
|
||
{
|
||
return "";
|
||
}
|
||
|
||
public bool unpackage(string type, string[] items)
|
||
{
|
||
int value = Convert.ToInt32(items[3], 16);
|
||
|
||
_device.Status = value;
|
||
|
||
int error = Convert.ToInt32(items[4], 16);
|
||
_device.ErrorCode = error;
|
||
if (error > 0)
|
||
_device.LastErrorCode = error;
|
||
|
||
if (type.Equals(ProtocolTag.resp_tag_excute))
|
||
{
|
||
if (error == 0)
|
||
{
|
||
update(items);
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
return !background;
|
||
}
|
||
|
||
protected virtual void update(string[] data)
|
||
{
|
||
|
||
}
|
||
}
|
||
public class AlInitHandler : AlignerHandler
|
||
{
|
||
public AlInitHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
|
||
public override string package(params object[] args)
|
||
{
|
||
return ",INIT,00,";
|
||
}
|
||
|
||
protected override void update(string[] data)
|
||
{
|
||
_device.Initalized = true;
|
||
}
|
||
}
|
||
|
||
public class AlHomeHandler : AlignerHandler
|
||
{
|
||
public AlHomeHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
|
||
public override string package(params object[] args)
|
||
{
|
||
|
||
return ",MHOM,F,";
|
||
}
|
||
|
||
protected override void update(string[] data)
|
||
{
|
||
_device.Initalized = true;
|
||
}
|
||
}
|
||
|
||
public class AlClearErrorHandler : AlignerHandler
|
||
{
|
||
|
||
public AlClearErrorHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
//$,<UNo>(,<SeqNo>),CCLR,<CMode>(,<Sum>)<CR>
|
||
public override string package(params object[] args)
|
||
{
|
||
return ",CCLR,E,";
|
||
}
|
||
}
|
||
public class AlGripHandler : AlignerHandler
|
||
{
|
||
public AlGripHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
//Command wafer hold/release signal to the solenoid of the specified unit.
|
||
//$ <UNo> (<SeqNo>) CSOL <Fork> <Sw> <Sum> <CR>
|
||
//• Fork: Fork specified(1 byte)
|
||
//• ‘A’: Extension axis 1 (Blade 1), pre-aligner
|
||
//• ‘B’: Extension axis 2 (Blade 2)
|
||
//• Sw: Chucking command(1 byte)
|
||
//• ‘0’: Chucking OFF
|
||
//• ‘1’: Chucking ON
|
||
public override string package(params object[] args)
|
||
{
|
||
bool bHold = (bool)args[1];
|
||
// bool bHold = (bool)args[0];
|
||
if (bHold)
|
||
return ",CSOL,A,1,";
|
||
|
||
return ",CSOL,A,0,";
|
||
}
|
||
}
|
||
|
||
|
||
public class ALMoveToReadyPositionHandler : AlignerHandler
|
||
{
|
||
public ALMoveToReadyPositionHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
|
||
public override string package(params object[] args)
|
||
{
|
||
|
||
|
||
return ",MTRS,GP,00,AL,A,";
|
||
}
|
||
}
|
||
public class ALLiftHandler : AlignerHandler
|
||
{
|
||
public ALLiftHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
//$ <UNo> (<SeqNo>) CLFT<Sw> <Sum> <CR>
|
||
//• UNo: Unit number(1 byte)
|
||
//• ‘1’ to ‘4’: Unit specified
|
||
//• SeqNo: Sequence number(Non/1/2/3 byte)
|
||
//• Sw: Lifter command(1 byte)
|
||
//• ‘0’: Lifter down
|
||
//• ‘1’: Lifter up
|
||
public override string package(params object[] args)
|
||
{
|
||
|
||
bool bUp = (bool)args[0];
|
||
if (bUp)
|
||
return ",CLFT,1,";
|
||
|
||
return ",CLFT,0,";
|
||
}
|
||
}
|
||
|
||
public class AlStopHandler : AlignerHandler
|
||
{
|
||
public AlStopHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
|
||
public override string package(params object[] args)
|
||
{
|
||
return ",CHLT,";
|
||
}
|
||
}
|
||
|
||
public class ALQueryStateHandler : ITransferMsg
|
||
{
|
||
public bool background { get; protected set; }
|
||
public bool evt { get { return false; } }
|
||
public string deviceID { private get; set; }
|
||
|
||
public string _cmd = string.Empty;
|
||
|
||
public IDevice Robot { set { _device = (Aligner)value; } }
|
||
protected Aligner _device;
|
||
|
||
public ALQueryStateHandler()
|
||
{
|
||
background = false;
|
||
}
|
||
|
||
//$,<UNo>(,<SeqNo>),RSTS(,<Sum>)<CR>
|
||
|
||
public string package(params object[] args)
|
||
{
|
||
return ",RSTS,";
|
||
}
|
||
|
||
public bool unpackage(string type, string[] items)
|
||
{
|
||
|
||
return !background;
|
||
}
|
||
}
|
||
|
||
public class AlAlignHandler : AlignerHandler
|
||
{
|
||
private int _angle = 0;
|
||
public AlAlignHandler()
|
||
{
|
||
background = true;
|
||
}
|
||
// $ <UNo> (<SeqNo>) MALN <TUNo> <TrsSt> <Angle> <Sum> <CR>
|
||
//Mode : Motion mode (1 byte) If the case of edge grip type pre-Aligner, specify ‘0’.
|
||
public override string package(params object[] args)
|
||
{
|
||
// • TUNo: Unit number to be compensated for (1 byte)
|
||
//• ‘1’ to ‘4’: Unit specified
|
||
//• TrsSt: Target station(2 Byte)
|
||
//• ”P1” - ”P2”: At the time of PA stage specification
|
||
//Note: P1 and P2 station are effective only when two or more PA stations exist.
|
||
//When it does not exist in addition to P1 station, specification of an target station is nothing.
|
||
//• Angle: Positioning angle(6 bytes)
|
||
//• Relative angle from the position set by alignment calibration as the reference point.
|
||
//• Specified in the range between "000000" and "035999"(0 to 359.99 degree.Resolution: 0.01[deg])
|
||
//• If a value is less than specified digits, fill the higher digit with ‘0’ so that the field always has specfied digits
|
||
|
||
//_angle is 0.001 pecent
|
||
_angle =(int)Math.Round((double)args[0]* 100.0,2);
|
||
return string.Format(",MALN,1,{0:D6},",_angle);
|
||
//return string.Format(",MALN,2,{0:D6},", _angle);
|
||
}
|
||
|
||
//!,<UNo>(,<SeqNo>),<Sts>,<Errcd>,MALN,<ExeTime>,<PosData1>…,<PosDataN>,<Value1>…,<Value10>(,<Sum>)<CR>
|
||
protected override void update(string[] data)
|
||
{
|
||
/*
|
||
$ <UNo> (<SeqNo>) <StsN> <Ackcd> <Sum> <CR>
|
||
*/
|
||
|
||
_device.Notch = _angle;
|
||
}
|
||
}
|
||
|
||
public class ALEventHandler : ITransferMsg
|
||
{
|
||
public bool background { get { return false; } }
|
||
public bool evt { get { return true; } }
|
||
public string deviceID { private get; set; }
|
||
|
||
public string _cmd = string.Empty;
|
||
|
||
public IDevice Robot { set { _device = (Aligner)value; } }
|
||
protected Aligner _device;
|
||
|
||
public ALEventHandler()
|
||
{
|
||
}
|
||
|
||
//$,<UNo>(,<SeqNo>),RSTS(,<Sum>)<CR>
|
||
|
||
public string package(params object[] args)
|
||
{
|
||
return "";
|
||
}
|
||
|
||
public bool unpackage(string type, string[] items)
|
||
{
|
||
string evtType = items[3];
|
||
if (evtType.Equals(ProtocolTag.resp_evt_error))
|
||
{
|
||
int error = Convert.ToInt32(items[5], 16);
|
||
_device.ErrorCode = error;
|
||
if (error > 0)
|
||
_device.LastErrorCode = error;
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
}
|