| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 | 
							- using Aitex.Core.Common;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.UI.Control;
 
- using Aitex.Core.Util;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Jobs;
 
- using MECF.Framework.Common.SubstrateTrackings;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Controls;
 
- using Venus_RT.FAs;
 
- using Venus_RT.HostWrapper;
 
- namespace Venus_RT.Modules
 
- {
 
-     public interface ISchedulerFACallback
 
-     {
 
-         void JobCreated(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobCreateFailed(string module, string lotID, string jobID, string sequenceID);
 
-         void JobStarted(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobStopped(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobPaused(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobResumed(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobAborted(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobFinished(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobFailed(ControlJobInfo cj, ProcessJobInfo pj);
 
-         void JobWaferStart(ControlJobInfo cj, ProcessJobInfo pj, string module, int slotID);
 
-         void JobWaferEnd(ControlJobInfo cj, ProcessJobInfo pj, string module, int slotID);
 
-     }
 
-     public class SchedulerFACallback : ISchedulerFACallback
 
-     {
 
-         private const string Port1JobStarted = "Port1JobStarted";
 
-         private const string Port1JobStopped = "Port1JobStopped";
 
-         private const string Port1JobPaused = "Port1JobPaused";
 
-         private const string Port1JobResumed = "Port1JobResumed";
 
-         private const string Port1JobAborted = "Port1JobAborted";
 
-         private const string Port1JobFinished = "Port1JobFinished";
 
-         private const string Port1JobFailed = "Port1JobFailed";
 
-         private const string Port1SequenceSelected = "Port1SequenceSelected";
 
-         private const string Port1SequenceSelectFailed = "Port1SequenceSelectFailed";
 
-         private const string Port1JobWaferStart = "Port1JobWaferStart";
 
-         private const string Port1JobWaferEnd = "Port1JobWaferEnd";
 
-         private const string Port2JobStarted = "Port2JobStarted";
 
-         private const string Port2JobStopped = "Port2JobStopped";
 
-         private const string Port2JobPaused = "Port2JobPaused";
 
-         private const string Port2JobResumed = "Port2JobResumed";
 
-         private const string Port2JobAborted = "Port2JobAborted";
 
-         private const string Port2JobFinished = "Port2JobFinished";
 
-         private const string Port2JobFailed = "Port2JobFailed";
 
-         private const string Port2SequenceSelected = "Port2SequenceSelected";
 
-         private const string Port2SequenceSelectFailed = "Port2SequenceSelectFailed";
 
-         private const string Port2JobWaferStart = "Port2JobWaferStart";
 
-         private const string Port2JobWaferEnd = "Port2JobWaferEnd";
 
-         private const string Port3JobStarted = "Port3JobStarted";
 
-         private const string Port3JobStopped = "Port3JobStopped";
 
-         private const string Port3JobPaused = "Port3JobPaused";
 
-         private const string Port3JobResumed = "Port3JobResumed";
 
-         private const string Port3JobAborted = "Port3JobAborted";
 
-         private const string Port3JobFinished = "Port3JobFinished";
 
-         private const string Port3JobFailed = "Port3JobFailed";
 
-         private const string Port3SequenceSelected = "Port3SequenceSelected";
 
-         private const string Port3SequenceSelectFailed = "Port3SequenceSelectFailed";
 
-         private const string Port3JobWaferStart = "Port3JobWaferStart";
 
-         private const string Port3JobWaferEnd = "Port3JobWaferEnd";
 
-         private Dictionary<ModuleName, string> PortJobWaferStart = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobWaferStart},
 
-             {ModuleName.LP2, Port2JobWaferStart},
 
-             {ModuleName.LP3, Port3JobWaferStart},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobWaferEnd = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobWaferEnd},
 
-             {ModuleName.LP2, Port2JobWaferEnd},
 
-             {ModuleName.LP3, Port3JobWaferEnd},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobStarted = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobStarted},
 
-             {ModuleName.LP2, Port2JobStarted},
 
-             {ModuleName.LP3, Port3JobStarted},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobStopped = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobStopped},
 
-             {ModuleName.LP2, Port2JobStopped},
 
-              {ModuleName.LP3, Port3JobStopped},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobPaused = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobPaused},
 
-             {ModuleName.LP2, Port2JobPaused},
 
-             {ModuleName.LP3, Port3JobPaused},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobResumed = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobResumed},
 
-             {ModuleName.LP2, Port2JobResumed},
 
-             {ModuleName.LP3, Port3JobResumed},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobAborted = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobAborted},
 
-             {ModuleName.LP2, Port2JobAborted},
 
-             {ModuleName.LP3, Port3JobAborted},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobFinished = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobFinished},
 
-             {ModuleName.LP2, Port2JobFinished},
 
-             {ModuleName.LP3, Port3JobFinished},
 
-         };
 
-         private Dictionary<ModuleName, string> PortJobFailed = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1JobFailed},
 
-             {ModuleName.LP2, Port2JobFailed},
 
-             {ModuleName.LP3, Port3JobFailed},
 
-         };
 
-         private Dictionary<ModuleName, string> PortSequenceSelected = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1SequenceSelected},
 
-             {ModuleName.LP2, Port2SequenceSelected},
 
-             {ModuleName.LP3, Port3SequenceSelected},
 
-         };
 
-         private Dictionary<ModuleName, string> PortSequenceSelectFailed = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, Port1SequenceSelectFailed},
 
-             {ModuleName.LP2, Port2SequenceSelectFailed},
 
-             {ModuleName.LP3, Port3SequenceSelectFailed},
 
-         };
 
-         private Dictionary<ModuleName, string> PortId = new Dictionary<ModuleName, string>()
 
-         {
 
-             {ModuleName.LP1, "1"},
 
-             {ModuleName.LP2, "2"},
 
-             {ModuleName.LP3, "3"},
 
-         };
 
-         public SchedulerFACallback()
 
-         {
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobStarted, Port1JobStarted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobStopped, Port1JobStopped));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobPaused, Port1JobPaused));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobResumed, Port1JobResumed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobAborted, Port1JobAborted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobFinished, Port1JobFinished));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobFailed, Port1JobFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1SequenceSelected, Port1SequenceSelected));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1SequenceSelectFailed, Port1SequenceSelectFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobWaferStart, Port1JobWaferStart));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port1JobWaferEnd, Port1JobWaferEnd));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobStarted, Port2JobStarted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobStopped, Port2JobStopped));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobPaused, Port2JobPaused));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobResumed, Port2JobResumed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobAborted, Port2JobAborted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobFinished, Port2JobFinished));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobFailed, Port2JobFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2SequenceSelected, Port2SequenceSelected));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2SequenceSelectFailed, Port2SequenceSelectFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobWaferStart, Port2JobWaferStart));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port2JobWaferEnd, Port2JobWaferEnd));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobStarted, Port3JobStarted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobStopped, Port3JobStopped));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobPaused, Port3JobPaused));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobResumed, Port3JobResumed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobAborted, Port3JobAborted));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobFinished, Port3JobFinished));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobFailed, Port3JobFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3SequenceSelected, Port3SequenceSelected));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3SequenceSelectFailed, Port3SequenceSelectFailed));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobWaferStart, Port3JobWaferStart));
 
-             FaEvent.AddFaEvent(new PostFAItem("Event", Port3JobWaferEnd, Port3JobWaferEnd));
 
-         }
 
-         public void JobCreated(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortSequenceSelected[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobCreateFailed(string module, string lotID, string jobID, string sequenceID)
 
-         {
 
-             ModuleName moduleName = ModuleHelper.Converter(module);
 
-             FaEvent.FaNotify(PortSequenceSelectFailed[moduleName], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  lotID},
 
-                 {DVIDName.JobID,  jobID},
 
-                 {DVIDName.PortID, PortId[moduleName] },
 
-                 {DVIDName.SequenceID, sequenceID }
 
-             });
 
-         }
 
-         public void JobStarted(ControlJobInfo cj,ProcessJobInfo pj)
 
-         {
 
-             ModuleName module= ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobStarted[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobStopped(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobStopped[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobPaused(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobPaused[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobResumed(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobResumed[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobAborted(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobAborted[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  cj.LotName},
 
-                 {DVIDName.JobID,  cj.Name},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, "" }
 
-             });
 
-         }
 
-         public void JobFinished(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             int count = pj.SlotWafers.Count;
 
-             FaEvent.FaNotify(PortJobFinished[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name },
 
-                 {DVIDName.ProcessedWaferCount, count.ToString() },
 
-             });
 
-         }
 
-         public void JobFailed(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobFailed[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SequenceID, pj.Sequence.Name }
 
-             });
 
-         }
 
-         public void JobWaferStart(ControlJobInfo cj, ProcessJobInfo pj, string module1, int slotID)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             FaEvent.FaNotify(PortJobWaferStart[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SlotID, (slotID+1).ToString() },
 
-                 {DVIDName.CarrierID, cj.CarrierID.ToString()}
 
-             });
 
-         }
 
-         public void JobWaferEnd(ControlJobInfo cj, ProcessJobInfo pj, string module1, int slotID)
 
-         {
 
-             ModuleName module = ModuleHelper.Converter(cj.Module);
 
-             WaferInfo wafer = WaferManager.Instance.GetWafer(ModuleHelper.Converter(module1), slotID);
 
-             FaEvent.FaNotify(PortJobWaferEnd[module], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  pj.LotName},
 
-                 {DVIDName.JobID,  pj.ControlJobName},
 
-                 {DVIDName.PortID, PortId[module] },
 
-                 {DVIDName.SlotID, (slotID+1).ToString() },
 
-                 {DVIDName.CarrierID, cj.CarrierID.ToString()},
 
-                 {DVIDName.WaferProcessResult, (wafer.ProcessState == EnumWaferProcessStatus.Failed ? 0:1).ToString()}
 
-             });
 
-         }
 
-     }
 
- }
 
 
  |