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);
}
}
}