Sic08/Modules/Mainframe/Devices/AkOpticsViper.cs

566 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//using Aitex.Core.Common.DeviceData;
//using Aitex.Core.RT.DataCenter;
//using Aitex.Core.RT.Device;
//using Aitex.Core.RT.Event;
//using Aitex.Core.RT.Log;
//using Aitex.Core.Util;
//using MECF.Framework.Common.CommonData;
//using MECF.Framework.Common.Event;
//using RTOverEthernetDevelopmentKit;
//using System;
//using System.Collections.ObjectModel;
//using System.Runtime.Serialization;
//namespace Mainframe.Devices
//{
// #region ZM 2021-08-03
// [DataContract]
// [Serializable]
// public class OpticsViperItem : NotifiableItem, IDeviceData
// {
// [DataMember]
// public int WaferNo { get; set; }
// [DataMember]
// public double DateTime { get; set; }
// [DataMember]
// public double Para1 { get; set; }
// [DataMember]
// public double Para2 { get; set; }
// [DataMember]
// public double Para3 { get; set; }
// [DataMember]
// public double Para4 { get; set; }
// [DataMember]
// public double Temperature { get; set; }
// public OpticsViperItem()
// {
// //DisplayName = "Undefined";
// //WaferNo = 0;
// //DateTime = 0.0;
// //Para1 = 0.0;
// //Para2 = 0.0;
// //Para3 = 0.0;
// //Para4 = 0.0;
// //Temperature = 0.0;
// }
// public void Update(IDeviceData data)
// {
// }
// }
// #endregion
// #region ZM 2021-08-04
// public class OpticsViperStatus : NotifiableItem
// {
// public int Status { get; set; }
// public int Head { get; set; }
// public int DetectorMask { get; set; }
// public int Reserved { get; set; }
// public double SusAvg_1 { get; set; }
// public double SusAvg_2 { get; set; }
// public double SusAvg_3 { get; set; }
// public double SusAvg_4 { get; set; }
// public double WaferAvg_1 { get; set; }
// public double WaferAvg_2 { get; set; }
// public double WaferAvg_3 { get; set; }
// public double WaferAvg_4 { get; set; }
// public OpticsViperStatus()
// {
// Status = 0;
// Head = 0;
// DetectorMask = 0;
// Reserved = 0;
// SusAvg_1 = 0.0;
// SusAvg_2 = 0.0;
// SusAvg_3 = 0.0;
// SusAvg_4 = 0.0;
// WaferAvg_1 = 0.0;
// WaferAvg_2 = 0.0;
// WaferAvg_3 = 0.0;
// WaferAvg_4 = 0.0;
// }
// }
// #endregion
// #region ZM 2021-08-04
// public class OpticsViperInfo
// {
// private int _lastStatus = 0;
// public int lastStatus
// {
// get
// {
// return _lastStatus;
// }
// }
// private OpticsViperStatus _opticsViperStatus = new OpticsViperStatus();
// public OpticsViperStatus opticsViperStatus
// {
// get
// {
// return _opticsViperStatus;
// }
// }
// private AITOpticsViperData[] _innerOpticsViperItem = new AITOpticsViperData[0];
// public AITOpticsViperData[] innerOpticsViperItem
// {
// get
// {
// return _innerOpticsViperItem;
// }
// }
// private AITOpticsViperData[] _middleOpticsViperItem = new AITOpticsViperData[0];
// public AITOpticsViperData[] middleOpticsViperItem
// {
// get
// {
// return _middleOpticsViperItem;
// }
// }
// private AITOpticsViperData[] _outerOpticsViperItem = new AITOpticsViperData[0];
// public AITOpticsViperData[] outerOpticsViperItem
// {
// get
// {
// return _outerOpticsViperItem;
// }
// }
// private AITOpticsViperData[] _exOpticsViperItem = new AITOpticsViperData[0];
// public AITOpticsViperData[] exOpticsViperItem
// {
// get
// {
// return _exOpticsViperItem;
// }
// }
// public OpticsViperInfo()
// {
// _innerOpticsViperItem = new AITOpticsViperData[0];
// _middleOpticsViperItem = new AITOpticsViperData[0];
// _outerOpticsViperItem = new AITOpticsViperData[0];
// _exOpticsViperItem = new AITOpticsViperData[0];
// }
// public OpticsViperInfo(OpticsViperStatus opticsViperStatus, AITOpticsViperData[] innerOpticsViperItem, AITOpticsViperData[] middleOpticsViperItem, AITOpticsViperData[] outerOpticsViperItem)
// {
// _opticsViperStatus = opticsViperStatus;
// _innerOpticsViperItem = innerOpticsViperItem;
// _middleOpticsViperItem = middleOpticsViperItem;
// _outerOpticsViperItem = outerOpticsViperItem;
// }
// public OpticsViperInfo(OpticsViperStatus opticsViperStatus, AITOpticsViperData[] innerOpticsViperItem, AITOpticsViperData[] middleOpticsViperItem, AITOpticsViperData[] outerOpticsViperItem, AITOpticsViperData[] exOpticsViperItem)
// {
// _opticsViperStatus = opticsViperStatus;
// _innerOpticsViperItem = innerOpticsViperItem;
// _middleOpticsViperItem = middleOpticsViperItem;
// _outerOpticsViperItem = outerOpticsViperItem;
// _exOpticsViperItem = exOpticsViperItem;
// _lastStatus = opticsViperStatus.Status;
// }
// public void SetlastStatus(int lastStatus)
// {
// _lastStatus = lastStatus;
// }
// }
// public class AkOpticsViper : IDevice
// {
// public AkOpticsViper(string module, string name)
// {
// this.Name = name;
// this.Module = module;
// RT = new RTOverEthernet();
// //DATA.Subscribe($"PM1.{Name}.OpticsViperInfo", () => _opticsViperInfo);
// }
// private RTOverEthernet RT = null;
// private bool IsNewStatus = false;
// private PeriodicJob _thread;//工作线程
// private OpticsViperInfo _opticsViperInfo = new OpticsViperInfo();
// public event Action<string, AlarmEventItem> OnDeviceAlarmStateChanged;
// /// <summary>
// /// 接受到数据时触发事件
// /// </summary>
// public event Action<OpticsViperInfo> DataReceivedEvent;
// /// <summary>
// /// 通讯数据
// /// </summary>
// public OpticsViperInfo OpticsViperInfo
// {
// get
// {
// return _opticsViperInfo;
// }
// set
// {
// _opticsViperInfo = value;
// DataReceivedEvent?.Invoke(_opticsViperInfo);
// }
// }
// //public AITOpticsViperData[] innerOpticsViperItem
// //{
// // get;
// // set;
// //}
// //public AITOpticsViperData[] middleOpticsViperItem
// //{
// // get;
// // set;
// //}
// //public AITOpticsViperData[] outerOpticsViperItem
// //{
// // get;
// // set;
// //}
// //private OpticsViperItem[] _exOpticsViperItem = new OpticsViperItem[0];
// //public OpticsViperItem[] exOpticsViperItem
// //{
// // get
// // {
// // return _exOpticsViperItem;
// // }
// //}
// // public OpticsViperItem[] InnerOpticsViperItem { get; set; }
// public string Module { get; set; }
// public string Name { get; set; }
// public bool HasAlarm => false;
// public AkOpticsViper()
// {
// RT = new RTOverEthernet();
// RT.CommunicationBroken += RT_CommunicationBroken;
// }
// private void RT_CommunicationBroken(object sender, RTCommunicationEventArgs e)
// {
// LOG.Write("AkOptics-" + e.Command);
// }
// public OpticsViperItem InitOpticsViperItem()
// {
// OpticsViperItem opticsViperItem = new OpticsViperItem();
// opticsViperItem.WaferNo = 0;
// opticsViperItem.DateTime = 0.0;
// opticsViperItem.Para1 = 0.0;
// opticsViperItem.Para2 = 0.0;
// opticsViperItem.Para3 = 0.0;
// opticsViperItem.Para4 = 0.0;
// opticsViperItem.Temperature = 0.0;
// return opticsViperItem;
// }
// public AITOpticsViperData ConvertTempData(int WaferNo, TempData tempData)
// {
// AITOpticsViperData opticsViperItem = new AITOpticsViperData();
// opticsViperItem.WaferNo = WaferNo;
// opticsViperItem.DateTime = tempData.DateTime;
// opticsViperItem.Para1 = tempData.Para1;
// opticsViperItem.Para2 = tempData.Para2;
// opticsViperItem.Para3 = tempData.Para3;
// opticsViperItem.Para4 = tempData.Para4;
// opticsViperItem.Temperature = tempData.Temperature;
// return opticsViperItem;
// }
// public AITOpticsViperData[] ConvertTempData(TempData[] tempData)
// {
// AITOpticsViperData[] opticsViperItem = new AITOpticsViperData[tempData.Length];
// for (int i = 0; i < tempData.Length; i++)
// {
// opticsViperItem[i] = ConvertTempData(i + 1, tempData[i]);
// }
// return opticsViperItem;
// }
// public OpticsViperStatus ConvertStatusData(BEI_SYSTEM_STATUS_EX statusData)
// {
// OpticsViperStatus opticsViperStatus = new OpticsViperStatus();
// opticsViperStatus.Status = statusData.nStatus;
// opticsViperStatus.Head = statusData.Head;
// opticsViperStatus.DetectorMask = statusData.DetectorMask;
// opticsViperStatus.Reserved = statusData.Reserved;
// opticsViperStatus.SusAvg_1 = statusData.SusAvg_1;
// opticsViperStatus.SusAvg_2 = statusData.SusAvg_2;
// opticsViperStatus.SusAvg_3 = statusData.SusAvg_3;
// opticsViperStatus.SusAvg_4 = statusData.SusAvg_4;
// opticsViperStatus.WaferAvg_1 = statusData.WaferAvg_1;
// opticsViperStatus.WaferAvg_2 = statusData.WaferAvg_2;
// opticsViperStatus.WaferAvg_3 = statusData.WaferAvg_3;
// opticsViperStatus.WaferAvg_4 = statusData.WaferAvg_4;
// return opticsViperStatus;
// }
// public void Connect()
// {
// try
// {
// RT.Init();
// _thread = new PeriodicJob(1000, OnTimer, "AkOpticsTimer", true);//测试用,直接连接
// DATA.Subscribe($"PM1.{Name}.InnerOpticsViperItem", () => _opticsViperInfo?.innerOpticsViperItem);
// DATA.Subscribe($"PM1.{Name}.MiddleOpticsViperItem", () => _opticsViperInfo?.middleOpticsViperItem);
// DATA.Subscribe($"PM1.{Name}.OuterOpticsViperItem", () => _opticsViperInfo?.outerOpticsViperItem);
// DATA.Subscribe($"PM1.{Name}.ExOpticsViperItem", () => _opticsViperInfo?.exOpticsViperItem);
// DATA.Subscribe($"PM1.{Name}.OpticsViperStatus", () => _opticsViperInfo?.opticsViperStatus);
// //Task.Factory.StartNew(()=> {
// //});
// }
// catch (Exception e)
// {
// LOG.Write(e.ToString());
// }
// }
// public void SendRunInfo(string runID, string susID)
// {
// //Acceptable value:
// //ProcessWell = 0
// //DetectorConnectError = 1 探测器连接错误=1
// //TimeIntervalError = 2(posible freeze)时间间隔错误=2可能冻结
// //MemeoryAllocError = 3, 记忆和忠诚错误=3
// //Initializing = 4 //Default Temperature status 默认温度状态
// //UnStarted = 5//未启动的
// // LOG.Write("");
// // LOG.Write("error reload recipe file list, type = " + processType);
// // 可接受的值:
// //processwell = 0
// //DetectorConnectError = 1
// //时间间隔错误 = 2可能冻结
// //memoryallocerror = 3
// //初始化 = 4//默认温度状态
// //未启动的
// //RT.SystemStatus.nStatus
// try
// {
// if (RT.Data.status.nStatus == 0)
// {
// RT.SendRunInfo(runID, susID);
// }
// else
// {
// AddLog(_opticsViperInfo.lastStatus, (_opticsViperInfo.lastStatus == 0 ? false : true));
// }
// }
// catch (Exception e)
// {
// LOG.Write(e.ToString());
// }
// }
// public void AddLog(int Status, bool IsAdd)
// {
// switch (Status)
// {
// case 0:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": ProcessWell");
// break;
// case 1:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": DetectorConnectError");
// break;
// case 2:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": TimeIntervalError");
// break;
// case 3:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": MemeoryAllocError");
// break;
// case 4:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": Initializing");
// break;
// case 5:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": UnStarted");
// break;
// default:
// if (IsAdd) LOG.Write("AkOptics-" + Status.ToString() + ": 未知错误");
// break;
// }
// }
// public void StartRT()
// {
// try
// {
// RT.StartRT();
// }
// catch (Exception e)
// {
// LOG.Write(e.ToString());
// }
// }
// public void Close()
// {
// try
// {
// RT.Close();
// _thread?.Stop();
// }
// catch (Exception ex)
// {
// LOG.Write("AkOpticsViper Close Error:" + ex.Message);
// }
// }
// public object locker = new object();
// public bool ReadData()
// {
// bool Result = false;
// try
// {
// //lock (locker)
// {
// int lastStatus = _opticsViperInfo.lastStatus;
// //innerOpticsViperItem = ConvertTempData1(RT.Data.zoneInner);
// //middleOpticsViperItem = ConvertTempData1(RT.Data.zoneMiddle);
// //outerOpticsViperItem= ConvertTempData1(RT.Data.zoneOuter);
// OpticsViperInfo = new OpticsViperInfo(ConvertStatusData(RT.Data.status), ConvertTempData(RT.Data.zoneInner), ConvertTempData(RT.Data.zoneMiddle), ConvertTempData(RT.Data.zoneOuter), ConvertTempData(RT.Data.zoneEx));
// if (_opticsViperInfo.lastStatus == lastStatus)
// {
// IsNewStatus = false;
// }
// else
// {
// IsNewStatus = true;
// _opticsViperInfo.SetlastStatus(lastStatus);
// AddLog(_opticsViperInfo.lastStatus, (_opticsViperInfo.lastStatus == 0 ? false : true));
// }
// Result = true;
// }
// }
// catch (Exception e)
// {
// LOG.Write("AkOpticsViper ReadData Error:" + e.ToString());
// }
// return Result;
// }
// public bool OnTimer()
// {
// try
// {
// //if (RT.Data.status.nStatus == 0)//如果未读取到数据,尝试重新连接
// //{
// // Close();
// // Connect();
// //}
// ReadData();
// }
// catch (Exception ex)
// {
// LOG.Write("AkOpticsViper OnTimer Error" + ex.Message);
// }
// return true;
// }
// public void ChangeStepID(int stepID, string stepName, string stepDesc)
// {
// try
// {
// if (RT.Data.status.nStatus == 0)
// {
// RT.ChangeStepID(stepID, stepName, stepDesc);
// }
// else
// {
// AddLog(_opticsViperInfo.lastStatus, (_opticsViperInfo.lastStatus == 0 ? false : true));
// }
// }
// catch (Exception e)
// {
// LOG.Write(e.ToString());
// }
// }
// #region 接口
// /// <summary>
// /// 初始化
// /// </summary>
// /// <returns></returns>
// public bool Initialize()
// {
// try
// {
// Connect();
// return true;
// }
// catch (Exception ex)
// {
// EV.PostAlarmLog("AkOpticsViper", "AkOpticsViper connect failed.");
// LOG.Write(ex);
// return false;
// }
// }
// public void Monitor()
// {
// return;
// }
// /// <summary>
// /// 终止
// /// </summary>
// public void Terminate()
// {
// try
// {
// Close();
// }
// catch (Exception ex)
// {
// System.Diagnostics.Trace.WriteLine(ex.Message);
// }
// }
// /// <summary>
// /// 复位
// /// </summary>
// public void Reset()
// {
// //_Job.Stop();
// //Close();
// //IsNewStatus = true;
// }
// #endregion
// }
// #endregion
//}