123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Aitex.Core.Common.DeviceData;
- using Aitex.Core.RT.Event;
- using Aitex.Core.RT.Log;
- using MECF.Framework.Common.Communications;
- namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.HonghuAligners
- {
- public static class FuqiAlignerCommand
- {
- public const string Reset = "C01";
- public const string RequestPlace = "C02";
- public const string RequestFinishPlace = "C03";
- public const string RequestVacuumOn = "C04";
- public const string RequestVacuumOff = "C05";
- public const string SetVacuumOffAfterAlign = "C06";
- public const string SetVacuumOnAfterAlign = "C07";
- public const string SetWIDReaderOn = "C08";
- public const string SetWIDReaderOff = "C09";
- public const string SetWIDReadComplete = "C10";
- public const string SetNotchProduct = "C11";
- public const string SetLineProduct = "C12";
- public const string SetCenterAndNotch = "C13";
- public const string SetOnlyNotch = "C14";
- public const string SetWIDReadFail = "C15";
- public const string SetAdjustFirstTime = "C16";
- public const string SetAdjustTwice = "C17";
- public const string SetUseNewCommand = "C41";
- public const string SetUseOldCommand = "C40";
- public const string SetWaferSize = "T";
- public const string RequestRecipe = "C200";
-
- /// <summary>
- /// A
- /// </summary>
- }
- public class FuqiAlignerHandler : HandlerBase
- {
- public FuqiAligner Device { get; set; }
- public string Command;
- protected FuqiAlignerHandler(FuqiAligner device, string command) : base(BuildMesage(command))
- {
- Device = device;
- Command = command;
- Name = command;
- }
- public static byte[] BuildMesage(string data)
- {
- List<byte> ret = new List<byte>();
- foreach (char c in data)
- {
- ret.Add((byte)c);
- }
- return ret.ToArray();
- }
- public override bool HandleMessage(MessageBase msg, out bool transactionComplete)
- {
- FuqiAlignerMessageBIN response = msg as FuqiAlignerMessageBIN;
- ResponseMessage = msg;
- transactionComplete = false;
- if (response.IsResponse)
- {
- SetState(EnumHandlerState.Completed);
- transactionComplete = true;
- }
- Device.OnActionDone();
- return true;
- }
- }
- public enum FuqiMotionStatus
- {
- None,
- Complete,
- Fail,
- }
- public class FuqiResetHandler : FuqiAlignerHandler
- {
- public FuqiResetHandler(FuqiAligner device, string command) : base(device, BuildData(command))
- {
- _xAxisStatus = MotionStatus.None;
- _yAxisStatus = MotionStatus.None;
- _zAxisStatus = MotionStatus.None;
- }
- private MotionStatus _xAxisStatus;
- private MotionStatus _yAxisStatus;
- private MotionStatus _zAxisStatus;
- private static string BuildData(string command)
- {
- return command;
- }
- public override bool HandleMessage(MessageBase msg, out bool transactionComplete)
- {
- HonghuAlignerMessageBIN response = msg as HonghuAlignerMessageBIN;
- ResponseMessage = msg;
- Device.TaExecuteSuccss = false;
- transactionComplete = false;
- if (response.IsAck)
- {
- if (Encoding.ASCII.GetString(response.CMD).Contains("X01"))
- _xAxisStatus = MotionStatus.Complete;
- if (Encoding.ASCII.GetString(response.CMD).Contains("X02"))
- _xAxisStatus = MotionStatus.Fail;
- if (Encoding.ASCII.GetString(response.CMD).Contains("Y01"))
- _yAxisStatus = MotionStatus.Complete;
- if (Encoding.ASCII.GetString(response.CMD).Contains("Y02"))
- _yAxisStatus = MotionStatus.Fail;
- if (Encoding.ASCII.GetString(response.CMD).Contains("Z01"))
- _zAxisStatus = MotionStatus.Complete;
- if (Encoding.ASCII.GetString(response.CMD).Contains("Z02"))
- _zAxisStatus = MotionStatus.Fail;
- SetState(EnumHandlerState.Completed);
- if (_xAxisStatus == MotionStatus.Complete &&
- _yAxisStatus == MotionStatus.Complete &&
- _zAxisStatus == MotionStatus.Complete) Device.TaExecuteSuccss = true;
- if (_xAxisStatus != MotionStatus.None &&
- _yAxisStatus != MotionStatus.None &&
- _zAxisStatus != MotionStatus.None) transactionComplete = true;
- }
- return true;
- }
- }
- public class FuqiRequestHandler : FuqiAlignerHandler
- {
- private string cmd;
- public FuqiRequestHandler(FuqiAligner device, string command) : base(device, BuildData(command))
- {
- cmd = command;
- }
- private static string BuildData(string command)
- {
- return command;
- }
- public override bool HandleMessage(MessageBase msg, out bool transactionComplete)
- {
- FuqiAlignerMessageBIN response = msg as FuqiAlignerMessageBIN;
- ResponseMessage = msg;
- Device.TaExecuteSuccss = false;
- transactionComplete = false;
-
- if (response.IsResponse)
- {
- string commandstr = Encoding.ASCII.GetString(response.CMD);
- switch (cmd)
- {
- case FuqiAlignerCommand.RequestPlace:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M01"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnWaferPresent(false);
- Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M02"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnWaferPresent(true);
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.RequestFinishPlace:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M03"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.IsAlignSuccess = true;
- //Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M04"))
- {
- Device.TaExecuteSuccss = false;
- transactionComplete = true;
- Device.IsAlignSuccess = false;
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M17"))
- {
- Device.TaExecuteSuccss = false;
- transactionComplete = true;
- Device.IsAlignSuccess = false;
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M18"))
- {
- Device.TaExecuteSuccss = false;
- transactionComplete = true;
- Device.IsAlignSuccess = false;
- }
- break;
- case FuqiAlignerCommand.RequestVacuumOn:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M05"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M06"))
- {
- Device.TaExecuteSuccss = false;
- transactionComplete = true;
- Device.OnError(Encoding.ASCII.GetString(response.CMD));
- }
- break;
- case FuqiAlignerCommand.RequestVacuumOff:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M07"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M08"))
- {
- Device.TaExecuteSuccss = false;
- transactionComplete = true;
- Device.OnError(Encoding.ASCII.GetString(response.CMD));
- }
- break;
- case FuqiAlignerCommand.Reset:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M00"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.Initalized = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetVacuumOffAfterAlign:
- case FuqiAlignerCommand.SetVacuumOnAfterAlign:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M09"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetWIDReaderOn:
- case FuqiAlignerCommand.SetWIDReaderOff:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M10"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetWIDReadComplete:
- case FuqiAlignerCommand.SetWIDReadFail:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M11"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetLineProduct:
- case FuqiAlignerCommand.SetNotchProduct:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M12"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetCenterAndNotch:
- case FuqiAlignerCommand.SetOnlyNotch:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M13"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetAdjustFirstTime:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M31"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetAdjustTwice:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M32"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetUseOldCommand:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M40"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M41"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.SetUseNewCommand:
- if (Encoding.ASCII.GetString(response.CMD).Contains("M41"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M40"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- break;
- case FuqiAlignerCommand.RequestRecipe:
- if (Encoding.ASCII.GetString(response.CMD).Contains(FuqiAlignerCommand.RequestRecipe))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnRecipeReceived(Encoding.ASCII.GetString(response.RawMessage));
- }
- break;
- default:
- break;
- }
- if (cmd.Contains("A"))
- {
- if (Encoding.ASCII.GetString(response.CMD).Contains("M14"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- }
- if (cmd.Contains("B"))
- {
- if (Encoding.ASCII.GetString(response.CMD).Contains("M15"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- }
- if (cmd.Contains("T"))
- {
- if (Encoding.ASCII.GetString(response.CMD).Contains("M16"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnActionDone();
- }
- }
- if (cmd.Contains("SET"))
- {
- if (Encoding.ASCII.GetString(response.CMD).Contains("M201"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnSetComplete(true);
- }
- if (Encoding.ASCII.GetString(response.CMD).Contains("M202"))
- {
- Device.TaExecuteSuccss = true;
- transactionComplete = true;
- Device.OnSetComplete(false);
- }
- }
- }
- return true;
- }
- }
- }
|