| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 | 
							- using MECF.Framework.Common.CommonData.Transporter;
 
- using MECF.Framework.Common.DataCenter;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Layout;
 
- using MECF.Framework.Common.ToolLayout;
 
- using MECF.Framework.Common.Utilities;
 
- using Prism.Mvvm;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Collections.ObjectModel;
 
- using System.ComponentModel;
 
- using System.IO;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Timers;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Input;
 
- using System.Windows.Threading;
 
- namespace CyberX8_MainPages.ViewModels
 
- {
 
-     public class TransporterViewModel : BindableBase
 
-     {
 
-         #region 常量
 
-         private const string TRANSPORTER_DATA = "TransporterData";
 
-         private const string IS_SWITCH_ON = "IsSwitchOn";
 
-         private const string IS_HOMED = "IsHomed";
 
-         private const string IS_MOVING = "IsMoving";
 
-         #endregion
 
-         #region 内部变量
 
-         private ProcessLayout _processLayout;
 
-         /// RT查询key集合
 
-         /// </summary>
 
-         private List<string> _rtDataKeys = new List<string>();
 
-         /// <summary>
 
-         /// rt查询key数值字典
 
-         /// </summary>
 
-         private Dictionary<string, object> _rtDataValueDic = new Dictionary<string, object>();
 
-         /// <summary>
 
-         /// 定时器
 
-         /// </summary>
 
-         private DispatcherTimer _timer;
 
-         
 
-         
 
-         #region Loader Transporter
 
-         private TransporterData _loaderTransporterData;
 
-         private string _loaderbarcodeReaderDeviceName;
 
-         
 
-         private bool _loaderGantryMotorOn;
 
-         private bool _loaderElevatorMotorOn;
 
-         private bool _loaderGantryHomed;
 
-         private bool _loaderElevatorHomed;
 
-         private bool _loaderGantryMoving;
 
-         private bool _loaderElevatorMoving;
 
-         private bool _loaderElevatorInUpPlace;
 
-         private string _loaderBarcode;
 
-         private List<string> _loaderPositionList;
 
-         private string _loaderFromSelectedItem;
 
-         private string _loaderToSelectedItem;
 
-         /// <summary>
 
-         /// 模块Homed状态
 
-         /// </summary>
 
-         private bool _loaderTransporterIsHomed;
 
-         #endregion
 
-         #region Process Transporter
 
-         private TransporterData _processTransporterData;
 
-         private string _processbarcodeReaderDeviceName;
 
-         private bool _processGantryMotorOn;
 
-         private bool _processElevatorMotorOn;
 
-         private bool _processGantryHomed;
 
-         private bool _processElevatorHomed;
 
-         private bool _processGantryMoving;
 
-         private bool _processElevatorMoving;
 
-         private bool _processElevatorInUpPlace;
 
-         private string _processBarcode;
 
-         private List<string> _processPositionList;
 
-         private string _processFromSelectedItem;
 
-         private string _processToSelectedItem;
 
-         private bool _processTransporterIsHomed;
 
-         #endregion
 
-         #endregion
 
-         #region 属性
 
-         #region Loader Transporter
 
-         public string LoaderBarcodeReaderDeviceName { get { return _loaderbarcodeReaderDeviceName; } set { SetProperty(ref _loaderbarcodeReaderDeviceName, value); } }
 
-         public TransporterData LoaderTransporterData { get { return _loaderTransporterData; } set { SetProperty(ref _loaderTransporterData, value); } }
 
-         public bool LoaderGantryMotorOn { get { return _loaderGantryMotorOn; } set { SetProperty(ref _loaderGantryMotorOn,value); } }
 
-         public bool LoaderElevatorMotorOn { get { return _loaderElevatorMotorOn; } set { SetProperty(ref _loaderElevatorMotorOn,value); } }
 
-         public bool LoaderGantryHomed { get { return _loaderGantryHomed; } set { SetProperty(ref _loaderGantryHomed,value); } }
 
-         public bool LoaderElevatorHomed { get { return _loaderElevatorHomed; } set { SetProperty(ref _loaderElevatorHomed,value); } }
 
-         public bool LoaderGantryMoving { get { return _loaderGantryMoving; } set { SetProperty(ref _loaderGantryMoving, value); } }
 
-         public bool LoaderElevatorMoving { get { return _loaderElevatorMoving; } set { SetProperty(ref _loaderElevatorMoving,value); } }
 
-         
 
-         public bool LoaderElevatorIsInUpPlace { get { return _loaderElevatorInUpPlace; } set { SetProperty(ref _loaderElevatorInUpPlace, value); } }
 
-         public string LoaderBarcode { get { return _loaderBarcode; } set { SetProperty(ref _loaderBarcode, value); } }
 
-         
 
-         public List<string> LoaderPositionList { get { return _loaderPositionList; } set { SetProperty(ref _loaderPositionList, value); } }
 
-         public string LoaderFromSelectedItem { get { return _loaderFromSelectedItem; } set { SetProperty(ref _loaderFromSelectedItem, value); } }
 
-         public string LoaderToSelectedItem { get { return _loaderToSelectedItem; } set { SetProperty(ref _loaderToSelectedItem, value); } }
 
-         /// <summary>
 
-         /// Loader Homed状态
 
-         /// </summary>
 
-         public bool LoaderTransporterIsHomed { get { return _loaderTransporterIsHomed; } set { SetProperty(ref _loaderTransporterIsHomed, value); } }
 
-         #endregion
 
-         #region Process Transporter
 
-         public string ProcessBarcodeReaderDeviceName { get { return _processbarcodeReaderDeviceName; } set { SetProperty(ref _processbarcodeReaderDeviceName, value); } }
 
-         public TransporterData ProcessTransporterData { get { return _processTransporterData; } set { SetProperty(ref _processTransporterData, value); } }
 
-         public bool ProcessGantryMotorOn { get { return _processGantryMotorOn; } set { SetProperty(ref _processGantryMotorOn, value); } }
 
-         public bool ProcessElevatorMotorOn { get { return _processElevatorMotorOn; } set { SetProperty(ref _processElevatorMotorOn, value); } }
 
-         public bool ProcessGantryHomed { get { return _processGantryHomed; } set { SetProperty(ref _processGantryHomed, value); } }
 
-         public bool ProcessElevatorHomed { get { return _processElevatorHomed; } set { SetProperty(ref _processElevatorHomed, value); } }
 
-         public bool ProcessGantryMoving { get { return _processGantryMoving; } set { SetProperty(ref _processGantryMoving, value); } }
 
-         public bool ProcessElevatorIsInUpPlace { get { return _processElevatorInUpPlace; } set { SetProperty(ref _processElevatorInUpPlace, value); } }
 
-         
 
-         public bool ProcessElevatorMoving { get { return _processElevatorMoving; } set { SetProperty(ref _processElevatorMoving, value); } }
 
-         public string ProcessBarcode { get { return _processBarcode; } set { SetProperty(ref _processBarcode, value); } }
 
-         public List<string> ProcessPositionList { get { return _processPositionList; } set { SetProperty(ref _processPositionList, value); } }
 
-         public string ProcessFromSelectedItem { get { return _processFromSelectedItem; } set { SetProperty(ref _processFromSelectedItem, value); } }
 
-         public string ProcessToSelectedItem { get { return _processToSelectedItem; } set { SetProperty(ref _processToSelectedItem, value); } }
 
-         /// <summary>
 
-         /// Process Homed状态
 
-         /// </summary>
 
-         public bool ProcessTransporterIsHomed { get { return _processTransporterIsHomed; } set { SetProperty(ref _processTransporterIsHomed, value); } }
 
-         #endregion
 
-         #endregion
 
-         #region 指令
 
-         #endregion
 
-         /// <summary>
 
-         /// 构造函数
 
-         /// </summary>
 
-         public TransporterViewModel()
 
-         {
 
-             LoaderPositionList = new List<string>();
 
-             ProcessPositionList = new List<string>();
 
-         }
 
-         /// <summary>
 
-         /// 加载数据
 
-         /// </summary>
 
-         public void LoadData(string system)
 
-         {
 
-             LoadLayout();
 
-             LoadLoaderTransferPositionList();
 
-             LoadProcessTransferPositionList();
 
-             if (_timer == null)
 
-             {
 
-                 _timer = new DispatcherTimer();
 
-                 _timer.Interval = TimeSpan.FromMilliseconds(200);
 
-                 _timer.Tick += Timer_Tick; ;
 
-             }
 
-             InitialKeys();
 
-             _timer.Start();
 
-         }
 
-         private void Timer_Tick(object sender, EventArgs e)
 
-         {
 
-             if (_rtDataKeys.Count != 0)
 
-             {
 
-                 _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
 
-                 if (_rtDataValueDic != null)
 
-                 {
 
-                     LoaderTransporterData = CommonFunction.GetValue<TransporterData>(_rtDataValueDic, $"{ModuleName.Transporter2}.{TRANSPORTER_DATA}");
 
-                     LoaderGantryMotorOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Gantry.{IS_SWITCH_ON}");
 
-                     LoaderGantryHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Gantry.{IS_HOMED}");
 
-                     LoaderElevatorMotorOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Elevator.{IS_SWITCH_ON}");
 
-                     LoaderElevatorHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Elevator.{IS_HOMED}");
 
-                     LoaderGantryMoving = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Gantry.{IS_MOVING}");
 
-                     LoaderElevatorMoving = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.Elevator.{IS_MOVING}");
 
-                     LoaderTransporterIsHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter2}.{IS_HOMED}");
 
-                     LoaderBarcode = CommonFunction.GetValue<string>(_rtDataValueDic, $"{LoaderBarcodeReaderDeviceName}.BarcodeValue");
 
-                     ProcessTransporterData = CommonFunction.GetValue<TransporterData>(_rtDataValueDic, $"{ModuleName.Transporter1}.{TRANSPORTER_DATA}");
 
-                     ProcessGantryMotorOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Gantry.{IS_SWITCH_ON}");
 
-                     ProcessGantryHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Gantry.{IS_HOMED}");
 
-                     ProcessElevatorMotorOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Elevator.{IS_SWITCH_ON}");
 
-                     ProcessElevatorHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Elevator.{IS_HOMED}");
 
-                     ProcessGantryMoving = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Gantry.{IS_MOVING}");
 
-                     ProcessElevatorMoving = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.Elevator.{IS_MOVING}");
 
-                     ProcessTransporterIsHomed = CommonFunction.GetValue<bool>(_rtDataValueDic, $"{ModuleName.Transporter1}.{IS_HOMED}");
 
-                     ProcessBarcode = CommonFunction.GetValue<string>(_rtDataValueDic, $"{ProcessBarcodeReaderDeviceName}.BarcodeValue");
 
-                     string loaderElevatorStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue<string>(_rtDataValueDic, $"{ModuleName.Transporter2}.Elevator.CurrentStation"), $"{ModuleName.Transporter2}.Elevator");
 
-                     LoaderElevatorIsInUpPlace = "UP".Equals(loaderElevatorStation) ? true : false;
 
-                     string processElevatorStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue<string>(_rtDataValueDic, $"{ModuleName.Transporter1}.Elevator.CurrentStation"), $"{ModuleName.Transporter1}.Elevator");
 
-                     ProcessElevatorIsInUpPlace = "UP".Equals(processElevatorStation) ? true : false;
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 隐藏
 
-         /// </summary>
 
-         public void Hide()
 
-         {
 
-             if (_timer != null)
 
-             {
 
-                 _timer.Stop();
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 加载Layout
 
-         /// </summary>
 
-         private void LoadLayout()
 
-         {
 
-             _rtDataKeys.Clear();
 
-             _rtDataKeys.Add("System.Layout");
 
-             _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
 
-             if (_rtDataValueDic != null)
 
-             {
 
-                 _processLayout = CommonFunction.GetValue<ProcessLayout>(_rtDataValueDic, "System.Layout");
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 加载Loader Transfer位置集合
 
-         /// </summary>
 
-         private void LoadLoaderTransferPositionList()
 
-         {
 
-             int startCellId = (int)QueryDataClient.Instance.Service.GetConfig($"Transporter.{ModuleName.Transporter2}.StartCellId");
 
-             int endCellId = (int)QueryDataClient.Instance.Service.GetConfig($"Transporter.{ModuleName.Transporter2}.EndCellId");
 
-             if (_processLayout != null && LoaderPositionList.Count == 0)
 
-             {
 
-                 List<string> lst=GetCellItemsByRange(startCellId, endCellId,_processLayout.Items);
 
-                 LoaderPositionList.AddRange(lst);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 加载Process Transfer位置集合
 
-         /// </summary>
 
-         private void LoadProcessTransferPositionList()
 
-         {
 
-             int startCellId = (int)QueryDataClient.Instance.Service.GetConfig($"Transporter.{ModuleName.Transporter1}.StartCellId");
 
-             int endCellId = (int)QueryDataClient.Instance.Service.GetConfig($"Transporter.{ModuleName.Transporter1}.EndCellId");
 
-             if (_processLayout != null && ProcessPositionList.Count == 0)
 
-             {
 
-                 List<string> lst = GetCellItemsByRange(startCellId, endCellId, _processLayout.Items);
 
-                 ProcessPositionList.AddRange(lst);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 获取指定范围的单元项集合
 
-         /// </summary>
 
-         /// <param name="startCellId"></param>
 
-         /// <param name="endCellId"></param>
 
-         /// <param name="items"></param>
 
-         /// <returns></returns>
 
-         private List<string> GetCellItemsByRange(int startCellId,int endCellId,List<ProcessLayoutCellItem> items)
 
-         {
 
-             List<string> lst = new List<string>();
 
-             foreach(ProcessLayoutCellItem item in items)
 
-             {
 
-                 if(item.CellId>=startCellId&&item.CellId<=endCellId)
 
-                 {
 
-                     if (!string.IsNullOrEmpty(item.ModuleName))
 
-                     {
 
-                         lst.Add(item.ModuleName);
 
-                     }
 
-                 }
 
-             }
 
-             return lst;
 
-         }
 
-         /// <summary>
 
-         /// 初始化Keys
 
-         /// </summary>
 
-         private void InitialKeys()
 
-         {
 
-             _rtDataKeys.Clear();
 
-             List<string> lst = new List<string>();
 
-             lst.Add($"{ModuleName.Transporter1}.BarcodeReader");
 
-             lst.Add($"{ModuleName.Transporter2}.BarcodeReader");
 
-             _rtDataValueDic = QueryDataClient.Instance.Service.PollData(lst);
 
-             if (_rtDataValueDic != null)
 
-             {
 
-                 LoaderBarcodeReaderDeviceName = CommonFunction.GetValue<string>(_rtDataValueDic, $"{ModuleName.Transporter2}.BarcodeReader");
 
-                 ProcessBarcodeReaderDeviceName = CommonFunction.GetValue<string>(_rtDataValueDic, $"{ModuleName.Transporter1}.BarcodeReader");
 
-                 if (!string.IsNullOrEmpty(LoaderBarcodeReaderDeviceName))
 
-                 {
 
-                     _rtDataKeys.Add($"{LoaderBarcodeReaderDeviceName}.BarcodeValue");
 
-                 }
 
-                 if (!string.IsNullOrEmpty(ProcessBarcodeReaderDeviceName))
 
-                 {
 
-                     _rtDataKeys.Add($"{ProcessBarcodeReaderDeviceName}.BarcodeValue");
 
-                 }
 
-             }
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.{TRANSPORTER_DATA}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Gantry.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Elevator.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Elevator.CurrentStation");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Gantry.{IS_SWITCH_ON}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Elevator.{IS_SWITCH_ON}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Gantry.{IS_MOVING}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter1}.Elevator.{IS_MOVING}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.{TRANSPORTER_DATA}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Gantry.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Elevator.{IS_HOMED}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Gantry.{IS_SWITCH_ON}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Elevator.{IS_SWITCH_ON}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Elevator.CurrentStation");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Gantry.{IS_MOVING}");
 
-             _rtDataKeys.Add($"{ModuleName.Transporter2}.Elevator.{IS_MOVING}");
 
-         }
 
-     }
 
- }
 
 
  |