| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 | 
							- using Aitex.Core.Common.DeviceData;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Core.Util;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Collections.ObjectModel;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Threading.Tasks;
 
- using System.Windows;
 
- using FurnaceUI.Models;
 
- namespace FurnaceUI.Views.IOStatus
 
- {
 
-     public class SensorsViewModel : FurnaceUIViewModelBase
 
-     {
 
-         #region Syste Properties
 
-         [Subscription("SensorASOpenPosition.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASOpenPosition { get; set; }
 
-         [Subscription("SensorASClosePosition.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASClosePosition { get; set; }
 
-         [Subscription("SensorASUpPositionW.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASUpPositionW { get; set; }
 
-         [Subscription("SensorASDownPosition.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASDownPosition { get; set; }
 
-         [Subscription("SensorASOpenStatus.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASOpenStatus { get; set; }
 
-         [Subscription("SensorASTiltStatus.DeviceData", "System", "System")]
 
-         public AITSensorData SensorASTiltStatus { get; set; }
 
-         [Subscription("SensorSideDoorFfuOK.DeviceData", "System", "System")]
 
-         public AITSensorData SensorSideDoorFfuOK { get; set; }
 
-         [Subscription("SensorZAxisUpLimit.DeviceData", "System", "System")]
 
-         public AITSensorData SensorZAxisUpLimit { get; set; }
 
-         [Subscription("SensorZAxisDownLimit.DeviceData", "System", "System")]
 
-         public AITSensorData SensorZAxisDownLimit { get; set; }
 
-         [Subscription("SensorBEHumanInterlock.DeviceData", "System", "System")]
 
-         public AITSensorData SensorBEHumanInterlock { get; set; }
 
-         [Subscription("SensorTAxisHome.DeviceData", "System", "System")]
 
-         public AITSensorData SensorTAxisHome { get; set; }
 
-         [Subscription("SensorCapClose.DeviceData", "System", "System")]
 
-         public AITSensorData SensorCapClose { get; set; }
 
-         [Subscription("SensorZone1.DeviceData", "System", "System")]
 
-         public AITSensorData SensorZone1 { get; set; }
 
-         [Subscription("SensorZone2.DeviceData", "System", "System")]
 
-         public AITSensorData SensorZone2 { get; set; }
 
-         [Subscription("SensorR5ArmNotExtendToBE.DeviceData", "System", "System")]
 
-         public AITSensorData SensorR5ArmNotExtendToBE { get; set; }
 
-         [Subscription("SensorCapILOK.DeviceData", "System", "System")]
 
-         public AITSensorData SensorCapILOK { get; set; }
 
-         [Subscription("SensorPPPosition.DeviceData", "System", "System")]
 
-         public AITSensorData SensorPPPosition { get; set; }
 
-         [Subscription("SensorHomePosition.DeciceData", "System", "System")]
 
-         public AITSensorData SensorHomePosition { get; set; }
 
-         #endregion
 
-         #region EFEM properties
 
-         [Subscription("SensorLightCurtainsStateEFEM.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorLightCurtainsState { get; set; }
 
-         [Subscription("SensorCDAPressureSensorState.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorCDAPressureSensorState { get; set; }
 
-         [Subscription("SensorEMOState.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorEMOState { get; set; }
 
-         [Subscription("SensorSafeDoorState.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorSafeDoorState { get; set; }
 
-         [Subscription("SensorSystemPowerONState.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorSystemPowerONState { get; set; }
 
-         [Subscription("SensorCSFfuOK.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorCSFfuOK { get; set; }
 
-         [Subscription("SensorIOPortFfuOKSensorIOPortFfuOK.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorIOPortFfuOK { get; set; }
 
-         [Subscription("SensorIOBtmExhFanOK.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorIOBtmExhFanOK { get; set; }
 
-         [Subscription("SensorFncExhFanOK.DeviceData", "System", "Efem")]
 
-         public AITSensorData SensorFncExhFanOK { get; set; }
 
-         #endregion
 
-         #region Stocker Sensors
 
-         [Subscription("SensorStation1Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation1Presence { get; set; }
 
-         [Subscription("SensorStation2Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation2Presence { get; set; }
 
-         [Subscription("SensorStation3Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation3Presence { get; set; }
 
-         [Subscription("SensorStation4Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation4Presence { get; set; }
 
-         [Subscription("SensorStation5Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation5Presence { get; set; }
 
-         [Subscription("SensorStation6Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation6Presence { get; set; }
 
-         [Subscription("SensorStation7Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation7Presence { get; set; }
 
-         [Subscription("SensorStation8Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation8Presence { get; set; }
 
-         [Subscription("SensorStation9Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation9Presence { get; set; }
 
-         [Subscription("SensorStation10Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation10Presence { get; set; }
 
-         [Subscription("SensorStation11Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation11Presence { get; set; }
 
-         [Subscription("SensorStation12Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation12Presence { get; set; }
 
-         [Subscription("SensorStation13Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation13Presence { get; set; }
 
-         [Subscription("SensorStation14Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation14Presence { get; set; }
 
-         [Subscription("SensorStation15Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation15Presence { get; set; }
 
-         [Subscription("SensorStation16Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation16Presence { get; set; }
 
-         [Subscription("SensorStation17Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation17Presence { get; set; }
 
-         [Subscription("SensorStation18Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation18Presence { get; set; }
 
-         [Subscription("SensorStation19Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation19Presence { get; set; }
 
-         [Subscription("SensorStation20Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation20Presence { get; set; }
 
-         [Subscription("SensorStation21Presence.DeviceData", "System", "Stocker")]
 
-         public AITSensorData SensorStation21Presence { get; set; }
 
-         #endregion
 
-         #region CassetteProtrusion Sensor
 
-         [Subscription("SensorCassetteProtrusion1.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion1 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion2.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion2 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion3.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion3 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion4.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion4 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion5.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion5 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion6.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion6 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion7.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion7 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion8.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion8 { get; set; }
 
-         [Subscription("SensorCassetteProtrusion9.DeviceData", "System", "CassetteProtrusion")]
 
-         public AITSensorData SensorCassetteProtrusion9 { get; set; }
 
-         #endregion
 
-         #region Stage Sensors
 
-         [Subscription("SensorStage1LockPosition.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage1LockPosition { get; set; }
 
-         [Subscription("SensorStage1UnlockPosition.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage1UnlockPosition { get; set; }
 
-         [Subscription("SensorStage1LockValveFB.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage1LockValveFB { get; set; }
 
-         [Subscription("SensorStage1UnlockValveFB.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage1UnlockValveFB { get; set; }
 
-         [Subscription("SensorStage2LockPosition.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage2LockPosition { get; set; }
 
-         [Subscription("SensorStage2UnlockPosition.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage2UnlockPosition { get; set; }
 
-         [Subscription("SensorStage2LockValveFB.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage2LockValveFB { get; set; }
 
-         [Subscription("SensorStage2UnlockValveFB.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage2UnlockValveFB { get; set; }
 
-         [Subscription("SensorStage1CASSPresence.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage1CASSPresence { get; set; }
 
-         [Subscription("SensorStage2CASSPresence.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorStage2CASSPresence { get; set; }
 
-         [Subscription("SensorR3NotExtendToStage1.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorR3NotExtendToStage1 { get; set; }
 
-         [Subscription("SensorR3NotExtendToStage2.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorR3NotExtendToStage2 { get; set; }
 
-         [Subscription("SensorR5NotExtendToStage1.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorR5NotExtendToStage1 { get; set; }
 
-         [Subscription("SensorR5NotExtendToStage2.DeviceData", "System", "TransferStage")]
 
-         public AITSensorData SensorR5NotExtendToStage2 { get; set; }
 
-         #endregion
 
-         #region SmifA sensors
 
-         [Subscription("SensorSmif1PodLockPosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1PodLockPosition { get; set; }
 
-         [Subscription("SensorSmif1PodUnlockPosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1PodUnlockPosition { get; set; }
 
-         [Subscription("SensorSmif1PodOpenPosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1PodOpenPosition { get; set; }
 
-         [Subscription("SensorSmif1PodClosePosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1PodClosePosition { get; set; }
 
-         [Subscription("SensorSmif1PodPresence.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1PodPresence { get; set; }
 
-         [Subscription("SensorSmif1ZAxisUnloadPosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1ZAxisUnloadPosition { get; set; }
 
-         [Subscription("SensorSmif1ZAxisLoadPosition.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1ZAxisLoadPosition { get; set; }
 
-         [Subscription("SensorSmif1ZAxisPosition1.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1ZAxisPosition1 { get; set; }
 
-         [Subscription("SensorSmif1ZAxisPosition2.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1ZAxisPosition2 { get; set; }
 
-         [Subscription("SensorSmif1RotateAxisCheck1.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1RotateAxisCheck1 { get; set; }
 
-         [Subscription("SensorSmif1RotateAxisCheck2.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1RotateAxisCheck2 { get; set; }
 
-         [Subscription("SensorSmif1SlideAxisExtend.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1SlideAxisExtend { get; set; }
 
-         [Subscription("SensorSmif1SlideAxisRetract.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1SlideAxisRetract { get; set; }
 
-         [Subscription("SensorSmif1ProtrudedWafer.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1ProtrudedWafer { get; set; }
 
-         [Subscription("SensorSmif1Mapping.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1Mapping { get; set; }
 
-         [Subscription("SensorSmif1Ready.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1Ready { get; set; }
 
-         [Subscription("SensorSmif1Homed.DeviceData", "System", "SmifA")]
 
-         public AITSensorData SensorSmif1Homed { get; set; }
 
-         #endregion
 
-         #region SmifB sensors
 
-         [Subscription("SensorSmif2PodLockPosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2PodLockPosition { get; set; }
 
-         [Subscription("SensorSmif2PodUnlockPosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2PodUnlockPosition { get; set; }
 
-         [Subscription("SensorSmif2PodOpenPosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2PodOpenPosition { get; set; }
 
-         [Subscription("SensorSmif2PodClosePosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2PodClosePosition { get; set; }
 
-         [Subscription("SensorSmif2PodPresence.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2PodPresence { get; set; }
 
-         [Subscription("SensorSmif2ZAxisUnloadPosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2ZAxisUnloadPosition { get; set; }
 
-         [Subscription("SensorSmif2ZAxisLoadPosition.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2ZAxisLoadPosition { get; set; }
 
-         [Subscription("SensorSmif2ZAxisPosition1.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2ZAxisPosition1 { get; set; }
 
-         [Subscription("SensorSmif2ZAxisPosition2.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2ZAxisPosition2 { get; set; }
 
-         [Subscription("SensorSmif2RotateAxisCheck1.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2RotateAxisCheck1 { get; set; }
 
-         [Subscription("SensorSmif2RotateAxisCheck2.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2RotateAxisCheck2 { get; set; }
 
-         [Subscription("SensorSmif2SlideAxisExtend.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2SlideAxisExtend { get; set; }
 
-         [Subscription("SensorSmif2SlideAxisRetract.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2SlideAxisRetract { get; set; }
 
-         [Subscription("SensorSmif2ProtrudedWafer.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2ProtrudedWafer { get; set; }
 
-         [Subscription("SensorSmif2Mapping.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2Mapping { get; set; }
 
-         [Subscription("SensorSmif2Ready.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2Ready { get; set; }
 
-         [Subscription("SensorSmif2Homed.DeviceData", "System", "SmifB")]
 
-         public AITSensorData SensorSmif2Homed { get; set; }
 
-         #endregion
 
-         public ObservableCollection<AITSensorData> SensorsSystem{ get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsEfem { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsStocker { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsCassetteProtrusion { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsTransferStage { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsSMIFA { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public ObservableCollection<AITSensorData> SensorsSMIFB { get; set; } = new ObservableCollection<AITSensorData>();
 
-         public void Add(ObservableCollection<AITSensorData> Sensors,object obj)
 
-         {
 
-             AITSensorData data = obj as AITSensorData;
 
-             int iIndex = -1;
 
-             for (int i = 0; i < Sensors.Count; i++)
 
-             {
 
-                 if (Sensors[i] == null) break;
 
-                 if (Sensors[i].DeviceName == data.DeviceName)
 
-                 {
 
-                     iIndex = i;
 
-                     break;
 
-                 }
 
-                     
 
-             }
 
-             if (iIndex >= 0)
 
-             {
 
-                 Sensors[iIndex] = data;
 
-             }else
 
-             {
 
-                 Sensors.Add(data);
 
-             }
 
-         }
 
-         protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
 
-         {
 
-             base.InvokeAfterUpdateProperty(data);
 
-         }
 
-         public override void UpdateSubscribe(Dictionary<string, object> data, object target, string module = null)
 
-         {
 
-             Parallel.ForEach(target.GetType().GetProperties().Where(_hasSubscriptionAttribute),
 
-                  property =>
 
-                  {
 
-                      PropertyInfo pi = (PropertyInfo)property;
 
-                      SubscriptionAttribute subscription = property.GetCustomAttributes(false).First(_isSubscriptionAttribute) as SubscriptionAttribute;
 
-                      string key = subscription.ModuleKey;
 
-                      key = module == null ? key : string.Format("{0}.{1}", module, key);
 
-                      if (_subscribedKeys.Contains(key) && data.ContainsKey(key))
 
-                      {
 
-                          try
 
-                          {
 
-                              var convertedValue = Convert.ChangeType(data[key], pi.PropertyType);
 
-                              var originValue = Convert.ChangeType(pi.GetValue(target, null), pi.PropertyType);
 
-                              if (originValue != convertedValue)
 
-                              {
 
-                                  pi.SetValue(target, convertedValue, null);
 
-                                  switch (subscription.Params[0].ToString())
 
-                                  {
 
-                                      case "System":
 
-                                          Add(SensorsSystem,convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "Efem":
 
-                                          Add(SensorsEfem, convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "Stocker":
 
-                                          Add(SensorsStocker, convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "CassetteProtrusion":
 
-                                          Add(SensorsCassetteProtrusion, convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "TransferStage":
 
-                                          Add(SensorsTransferStage, convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "SmifA":
 
-                                          Add(SensorsSMIFA, convertedValue as AITSensorData);
 
-                                          break;
 
-                                      case "SmifB":
 
-                                          Add(SensorsSMIFB, convertedValue as AITSensorData);
 
-                                          break;
 
-                                  }
 
-                              }
 
-                          }
 
-                          catch (Exception ex)
 
-                          {
 
-                              LOG.Error("由RT返回的数据更新失败" + key, ex);
 
-                          }
 
-                      }
 
-                  });
 
-         }
 
-         public void CloseCmd()
 
-         {
 
-             ((Window)GetView()).Close();
 
-         }
 
-     }
 
- }
 
 
  |