using Aitex.Core.Util; using Caliburn.Micro.Core; using Caliburn.Micro; using FurnaceUI.Models; using FurnaceUI.Views.Operations; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.OperationCenter; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; namespace FurnaceUI.Views.Maintenances { public class BoatRobotViewModel : FurnaceUIViewModelBase { [Subscription("Rt.Status")] public string RtStatus { get; set; } [Subscription("PM1.IsProcessing")] public bool IsProcessing { get; set; } [Subscription("PM1.RunningMode")] public bool RunningModeIsDebug { get; set; } public bool IsSystemStaus => (RtStatus != "AutoRunning"); #region ZAxis Data [Subscription("PM1.BoatElevatorServo.CurrentPosition")] public float BoatZAxisCurrentPosition { get; set; } [Subscription("PM1.BoatElevatorServo.CurrentSpeed")] public float BoatZAxisCurrentSpeed { get; set; } [Subscription("PM1.BoatElevatorServo.TargetPosition")] public float BoatZAxisTargetPosition { get; set; } [Subscription("PM1.BoatElevatorServo.IsReady")] public bool BoatZAxisIsReady { get; set; } [Subscription("PM1.AlarmSignaBoatZAxisWarning.Value")] public bool BoatZAxisIsWarning { get; set; } [Subscription("PM1.AlarmSignaBoatZAxisAlarm.Value")] public bool BoatZAxisIsAlarm { get; set; } [Subscription("PM1.BoatElevatorServo.AtPosition1")] public bool BoatZAxisAtPosition1 { get; set; } [Subscription("PM1.BoatElevatorServo.AtPosition2")] public bool BoatZAxisAtPosition2 { get; set; } [Subscription("PM1.BoatElevatorServo.AtPosition3")] public bool BoatZAxisAtPosition3 { get; set; } [Subscription("PM1.BoatElevatorServo.AtHomePosition")] public bool BoatZAxisAtHomePosition { get; set; } [Subscription("PM1.BoatElevatorServo.IsServoOn")] public bool BoatZAxisIsServoOn { get; set; } [Subscription("PM1.BoatElevatorServo.ErrorCode")] public string BoatZAxisErrorCode { get; set; } [Subscription("PM1.BoatElevatorServo.Status")] public string BoatZAxisStatus { get; set; } [Subscription("PM1.BoatElevatorServo.IsActionEnable")] public bool BoatZAxisIsActionEnable { get; set; } [Subscription("PM1.BoatElevatorServo.IsMoving")] public bool BoatZAxisIsMoving { get; set; } public double ZAxisProcessPosition { get; set; } public double ZAxisPosition5 { get; set; } public double ZAxisPosition4 { get; set; } public double ZAxisPosition3 { get; set; } public double ZAxisPosition2 { get; set; } public double ZAxisPosition1 { get; set; } public double ZAxisHomePosition { get; set; } public double ZAxisPositiveLimit { get; set; } public double ZAxisNegativeLimit { get; set; } public double ZAxisMoveSpeed { get; set; } public double ZAxisAcc { get; set; } public double ZAxisDec { get; set; } public double ZAxisJogSpeed { get; set; } public double ZAxisAccTime { get; set; } public double ZAxisDecTime { get; set; } /// /// 修改对应位置转换,Position1->在2位置,Position2->在1位置 /// private Dictionary zPositionTranslate = new Dictionary() {{"Position1","Position2" }, {"Position2","Position1" },{"Position3","Position3" }}; #endregion #region RAxis Data [Subscription("PM1.BoatRotationServo.CurrentPosition")] public float BoatRAxisCurrentPosition { get; set; } [Subscription("PM1.BoatRotationServo.CurrentSpeed")] public float BoatRAxisCurrentSpeed { get; set; } [Subscription("PM1.BoatRotationServo.TargetPosition")] public float BoatRAxisTargetPosition { get; set; } [Subscription("PM1.BoatRotationServo.IsReady")] public bool BoatRAxisIsReady { get; set; } [Subscription("PM1.BoatRotationServo.IsMoving")] public bool BoatRAxisIsMoving { get; set; } [Subscription("PM1.BoatRotationServo.IsInitDone")] public bool BoatRAxisIsInitDone { get; set; } [Subscription("PM1.BoatRotationServo.IsHomeDone")] public bool BoatRAxisIsHomeDone { get; set; } [Subscription("PM1.BoatRotationServo.IsHoming")] public bool BoatRAxisIsHoming { get; set; } [Subscription("PM1.BoatRotationServo.IsInitializing")] public bool BoatRAxisIsInitializing { get; set; } [Subscription("PM1.AlarmSignaBoatRAxisWarning.Value")] public bool BoatRAxisIsWarning { get; set; } [Subscription("PM1.AlarmSignaBoatRAxisAlarm.Value")] public bool BoatRAxisIsAlarm { get; set; } [Subscription("PM1.BoatRotationServo.IsServoOn")] public bool BoatRAxisIsServoOn { get; set; } [Subscription("PM1.BoatRotationServo.ErrorCode")] public string BoatRAxisErrorCode { get; set; } [Subscription("PM1.BoatRotationServo.Status")] public string BoatRAxisStatus { get; set; } [Subscription("PM1.BoatRotationServo.Direction")] public string BoatRAxisDirection { get; set; } [Subscription("PM1.BoatRotationServo.IsActionEnable")] public bool BoatRAxisIsActionEnable { get; set; } [Subscription("PM1.BoatRotationServo.IsMotorRun")] public bool BoatRAxisIsMotorRun { get; set; } public double RAxisLoadPosition { get; set; } public double RAxisPosition180 { get; set; } public double RAxisPosition90 { get; set; } public double RAxisPosition45 { get; set; } public double RAxisHomePosition { get; set; } public double RAxisPositiveLimit { get; set; } public double RAxisNegativeLimit { get; set; } public double RAxisMoveSpeed { get; set; } public double RAxisJogSpeed { get; set; } public double RAxisAccTime { get; set; } public double RAxisDecTime { get; set; } #endregion #region Shutter Data [Subscription("PM1.Shutter.OpenCloseStatus")] public string AutoDoorOpenCloseStatus { get; set; } #endregion [Subscription("Boat.BoatTestCycledCount")] public int BoatTestCycledCount { get; set; } private int _boatCycleCountSetPoint; public string BoatCycleDisplay => $" {BoatTestCycledCount} / {_boatCycleCountSetPoint}"; [Subscription("Boat.ShutterCycledCount")] public int ShutterCycledCount { get; set; } private int _ShutterCycleCountSetPoint; public string ShutterCycleDisplay => $" {ShutterCycledCount} / {_ShutterCycleCountSetPoint}"; private List _ZPositions; public List ZPositions { get { return _ZPositions; } set { _ZPositions = value; NotifyOfPropertyChange("ZPositions"); } } private List _RPositions; public List RPositions { get { return _RPositions; } set { _RPositions = value; NotifyOfPropertyChange("RPositions"); } } public string ZAxisTestStartPosition { get; set; } public string ZAxisTestEndPosition { get; set; } public string RAxisTestDirection { get; set; } //public bool IsPermission { get => this.Permission >= 3 && ClientApp.Instance.UserContext.RoleName == "Service"; } public bool IsPermission { get => this.Permission >= 3; } public BoatRobotViewModel() { _ZPositions = new List() { "Position1", "Position2", "Position3", }; RPositions = new List() { "CW", "CCW", }; } public void BoatModify() { var windowManager = IoC.Get(); BoatModifyViewModel boatModifyViewModel = new BoatModifyViewModel(ModuleName.PM1.ToString()); (windowManager as WindowManager)?.ShowDialogWithTitle(boatModifyViewModel, null, "Boat Wafer"); } protected override void InvokeAfterUpdateProperty(Dictionary data) { InitData(); } private void InitData() { ZAxisPosition1 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position1"); ZAxisPosition2 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position2"); ZAxisHomePosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position6"); ZAxisProcessPosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position7"); ZAxisPositiveLimit = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position8"); ZAxisNegativeLimit = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position9"); ZAxisMoveSpeed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.MoveSpeed"); ZAxisAcc = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Acc"); ZAxisDec = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Dec"); _boatCycleCountSetPoint = (int)QueryDataClient.Instance.Service.GetConfig($"Boat.CycleCount"); _ShutterCycleCountSetPoint = (int)QueryDataClient.Instance.Service.GetConfig($"Boat.AutoShutter.CycleCount"); RAxisPosition45 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position1"); RAxisPosition90 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position2"); RAxisPosition180 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position3"); RAxisLoadPosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position4"); RAxisMoveSpeed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.MoveSpeed"); } public void BoatZSaveValue(object obj, object tb) { switch (obj) { case "Position1": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position2": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position3": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position4": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position5": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position6": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position7": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position8": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "Position9": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; case "MoveSpeed": case "Acc": case "Dec": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text); break; } } public void BoatRSaveValue(object obj, object tb) { switch (obj) { case "Position1": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text); break; case "Position2": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text); break; case "Position3": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text); break; case "Position4": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text); break; case "MoveSpeed": InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text); break; } } public void MoveTo(object targetPosition) { switch (targetPosition) { case "Position1": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position2": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position3": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position4": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position5": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position6": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; case "Position7": InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition); break; } } public void RAxisMoveTo(object targetPosition) { switch (targetPosition) { case "Position1": InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition); break; case "Position2": InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition); break; case "Position3": InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition); break; case "Position4": InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition); break; default: InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition); break; } } public void BoatZServoTest() { if (string.IsNullOrEmpty(ZAxisTestStartPosition)) { return; } if (zPositionTranslate.Keys.Contains(ZAxisTestStartPosition) && zPositionTranslate.Keys.Contains(ZAxisTestStartPosition)) { InvokeClient.Instance.Service.DoOperation($"Boat.ZAxisMovingTest", zPositionTranslate[ZAxisTestStartPosition], zPositionTranslate[ZAxisTestEndPosition]); } else { InvokeClient.Instance.Service.DoOperation($"Boat.ZAxisMovingTest", ZAxisTestStartPosition, ZAxisTestEndPosition); } } public void BoatRotationServoTest(object targetPosition) { InvokeClient.Instance.Service.DoOperation($"Boat.RAxisMovingTest", targetPosition); } public void BoatTestStart() { if (zPositionTranslate.Keys.Contains(ZAxisTestStartPosition) && zPositionTranslate.Keys.Contains(ZAxisTestStartPosition)) { InvokeClient.Instance.Service.DoOperation($"Boat.MovingTest", zPositionTranslate[ZAxisTestStartPosition], zPositionTranslate[ZAxisTestEndPosition], RAxisTestDirection); } else { InvokeClient.Instance.Service.DoOperation($"Boat.MovingTest", ZAxisTestStartPosition, ZAxisTestEndPosition, RAxisTestDirection); } } public void BoatTestStop() { InvokeClient.Instance.Service.DoOperation($"Boat.Abort"); } public void ShutterTestStart() { InvokeClient.Instance.Service.DoOperation($"Boat.ShutterCycleTest"); } public void ShutterTestStop() { InvokeClient.Instance.Service.DoOperation($"Boat.Abort"); } public void BoatRotationServoStopTest() { InvokeClient.Instance.Service.DoOperation($"Boat.Abort"); } public void Home(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.ServoHome"); } public void SetServoOn(object target, object isOn) { InvokeClient.Instance.Service.DoOperation($"{target}", $"{isOn}"); } public void Continue(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.Continue"); } public void Stop(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.ServoStop"); } public void Reset(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.ServoResetAlarm"); } public void SetOpen(object target, bool open) { // IsAutoDoorEnableManualOperation InvokeClient.Instance.Service.DoOperation($"{target}", open); } } }