using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Log; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Communications; using MECF.Framework.Common.Equipment; using MECF.Framework.RT.ModuleLibrary.Commons; using SecsGem.Core; using SecsGemSerial.Application; using SecsGemSerial.Core; using SecsGemSerial.Core.EnumData; using SecsGemSerial.Core.Model; using System; using System.Collections.Generic; using System.Data; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Venus_RT.Devices.SMIF { /// /// Fortrend PLUS 500 /// Loader/Unloader /// 执行标准 E84 /// public class FortrendPLUS500 : ISMIF { public enum StreamType { SMIFState = 1, SMIFControl = 2, LP = 3, TAG = 4, ALARM = 5, DVDATA = 6, COMMANDERROR = 9, RFIDCOMMAND = 18, SMARTTAG8400COMMAND = 100, } //private AsyncSerialPort _serialport; private string _portname; //connect status public bool IsConnected; //online status public bool IsOnline; //Load public bool IsLoaded; //Lock public bool IsLocked; //Error public bool IsError; private SecsGemSerialApplication _serial = null; private ModuleName _smifbelong; /// /// 构造函数 /// /// 从属的设备 如VCE1 LP1 public FortrendPLUS500(ModuleName VCEName) { _smifbelong = VCEName; _portname = SC.GetStringValue($"{VCEName}.SMIF.Port"); SerialOptions serialOptions = new SerialOptions() { Port = _portname ?? "COM81", BaudRate = 9600, DataBits = 8, Parity = Parity.None, StopBits = StopBits.One, }; SecsGemSerialOptions secsGemSerialOptions = new SecsGemSerialOptions() { DeviceId = 0 }; _serial = new SecsGemSerialApplication(VCEName.ToString(), serialOptions, secsGemSerialOptions); _serial.OnAlarm += _serial_OnAlarm; } private void _serial_OnAlarm(string alarm) { //Console.WriteLine(alarm); LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"SMIF({_smifbelong}) received Alarm:{alarm}"); } public void Initialize() { _serial.Initialize(); _serial.RemoteControl(out string reason); } private void OnSMIFDataChanged(string oneLineMessage) { } public void Query() { SmifData smifdata = _serial.QueryAllSvids(out string reason); List mapdata = smifdata?.WaferMap; int? wafercount = smifdata?.WaferCount; E84Signals SmifIO = smifdata?.E84Signals; } public void Home() { if (!_serial.RemoteCommand(EnumRemoteCmd.HomeSmif, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Home Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Home Command to SMIF({_smifbelong})"); } public void Load() { if (!_serial.RemoteCommand(EnumRemoteCmd.StartLoadOpenCycle, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Load Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Load Command to SMIF({_smifbelong})"); } public void Unload() { if (!_serial.RemoteCommand(EnumRemoteCmd.StartUnloadCloseCycle, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unload Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLoad Command to SMIF({_smifbelong})"); } public void Lock() { if (!_serial.RemoteCommand(EnumRemoteCmd.KeepPrtLocked, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Lock Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Lock Command to SMIF({_smifbelong})"); } public void Unlock() { if (!_serial.RemoteCommand(EnumRemoteCmd.UnlockPort, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unlock Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLock Command to SMIF({_smifbelong})"); } public void Reset() { if (!_serial.RemoteCommand(EnumRemoteCmd.HomeSmif, out string reason)) LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unlock Command Failed for {reason}!Please Check SMIF({_smifbelong})"); else LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLock Command to SMIF({_smifbelong})"); } /// /// 中断SMIF正在执行的操作 /// public void Abort() { } } }