using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.PMR.Diagnostics; using Tango.PMR.Hardware; namespace Tango.PPC.Maintenance.Commands { public abstract class HomingMotorCommand : MaintenanceCommand { public HardwareMotorType Motor { get; set; } public MotorDirection Direction { get; set; } public double Speed { get; set; } public String HomingMessage { get; set; } public String ErrorMessage { get; set; } public String SuccessMessage { get; set; } public HomingMotorCommand(HardwareMotorType motor, MotorDirection direction, double speed, string homingMessage, string errorMessage, string successMessage) { Motor = motor; Direction = direction; Speed = speed; HomingMessage = homingMessage; ErrorMessage = errorMessage; SuccessMessage = successMessage; } protected override void OnExecute() { IsEnabled = false; try { NotificationProvider.SetGlobalBusyMessage(HomingMessage); MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest() { Direction = Direction, MotorType = Motor, Speed = Speed, }).Subscribe((response) => { //Next }, (ex) => { //Error IsEnabled = true; NotificationProvider.ReleaseGlobalBusyMessage(); LogManager.Log(ex, ErrorMessage); NotificationProvider.ShowError(ex.FlattenMessage()); }, () => { //Complete IsEnabled = true; NotificationProvider.ReleaseGlobalBusyMessage(); NotificationProvider.ShowSuccess(SuccessMessage); }); } catch (Exception ex) { LogManager.Log(ex, ErrorMessage); NotificationProvider.ReleaseGlobalBusyMessage(); NotificationProvider.ShowError(ex.FlattenMessage()); IsEnabled = true; } } } }