diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 72 |
1 files changed, 62 insertions, 10 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 0ae2086d3..57613aae2 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -74,9 +74,10 @@ namespace Tango.Integration.Operation private static RunningJobStatus _last_job_status; private bool _isPowerDownRequestInProgress; private bool _isHeadCleaningInProgress; - private List<BL.ValueObjects.JobRunLiquidQuantity> _currentJobLiquidQuantities; + private List<BL.ValueObjects.JobRunLiquidQuantity> _lastJobLiquidQuantities; private DateTime _diagnosticsTime; private MachineStatus _machineStatusBeforeJobStart; + private Configuration _machineConfiguration; private DateTime _jobStartDate; private DateTime? _jobUploadingStartDate; @@ -271,6 +272,11 @@ namespace Tango.Integration.Operation /// </summary> public event EventHandler PowerUpEnded; + /// <summary> + /// Occurs when a head cleaning job has ended. + /// </summary> + public event EventHandler<HeadCleaningEndedEventArgs> HeadCleaningEnded; + #endregion #region Properties @@ -1115,7 +1121,7 @@ namespace Tango.Integration.Operation { PrintingCompleted?.Invoke(this, new PrintingEventArgs(handler, job) { - LiquidQuantities = _currentJobLiquidQuantities.ToList(), + LiquidQuantities = _lastJobLiquidQuantities.ToList(), StartDate = _jobStartDate, UploadingStartTime = _jobUploadingStartDate, HeatingStartTime = _jobHeatingStartDate, @@ -1135,7 +1141,7 @@ namespace Tango.Integration.Operation { PrintingFailed?.Invoke(this, new PrintingFailedEventArgs(handler, job, exception) { - LiquidQuantities = _currentJobLiquidQuantities.ToList(), + LiquidQuantities = _lastJobLiquidQuantities.ToList(), StartDate = _jobStartDate, UploadingStartTime = _jobUploadingStartDate, HeatingStartTime = _jobHeatingStartDate, @@ -1153,7 +1159,7 @@ namespace Tango.Integration.Operation { PrintingAborted?.Invoke(this, new PrintingEventArgs(handler, job) { - LiquidQuantities = _currentJobLiquidQuantities.ToList(), + LiquidQuantities = _lastJobLiquidQuantities.ToList(), StartDate = _jobStartDate, UploadingStartTime = _jobUploadingStartDate, HeatingStartTime = _jobHeatingStartDate, @@ -1171,7 +1177,7 @@ namespace Tango.Integration.Operation { PrintingEnded?.Invoke(this, new PrintingEventArgs(handler, job) { - LiquidQuantities = _currentJobLiquidQuantities.ToList(), + LiquidQuantities = _lastJobLiquidQuantities.ToList(), StartDate = _jobStartDate, UploadingStartTime = _jobUploadingStartDate, HeatingStartTime = _jobHeatingStartDate, @@ -1179,6 +1185,20 @@ namespace Tango.Integration.Operation }); } + protected virtual void OnHeadCleaningEnded(HeadCleaningHandler handler, JobRunStatus status) + { + SaveLastJobLiquidQuantities(null, null, null, null); + + HeadCleaningEnded?.Invoke(this, new HeadCleaningEndedEventArgs() + { + StartDate = _jobStartDate, + Length = handler.Status.Total, + EndPosition = handler.Status.Progress, + Status = status, + LiquidQuantities = _lastJobLiquidQuantities.ToList(), + }); + } + #endregion #region Override Methods @@ -1893,9 +1913,14 @@ namespace Tango.Integration.Operation /// <param name="handler">The handler.</param> private void SaveLastJobLiquidQuantities(Job job, Configuration configuration, ProcessParametersTable processParameters, JobHandler handler) { + if (configuration == null) + { + configuration = _machineConfiguration; + } + try { - _currentJobLiquidQuantities = new List<BL.ValueObjects.JobRunLiquidQuantity>(); + _lastJobLiquidQuantities = new List<BL.ValueObjects.JobRunLiquidQuantity>(); if (JobLiquidQuantityCalculationMode == JobLiquidQuantityCalculationMode.MachineStatus) { @@ -1906,7 +1931,7 @@ namespace Tango.Integration.Operation if (packLevelAfter != null && packLevelBefore != null) { - _currentJobLiquidQuantities.Add(new BL.ValueObjects.JobRunLiquidQuantity() + _lastJobLiquidQuantities.Add(new BL.ValueObjects.JobRunLiquidQuantity() { LiquidType = pack.LiquidType.Type, Quantity = packLevelBefore.DispenserLevel - packLevelAfter.DispenserLevel, @@ -1916,7 +1941,7 @@ namespace Tango.Integration.Operation } else { - _currentJobLiquidQuantities = CreateJobRunLiquidQuantities(job, configuration, processParameters, handler.Status.Progress, handler.Status.TotalProgress); + _lastJobLiquidQuantities = CreateJobRunLiquidQuantities(job, configuration, processParameters, handler.Status.Progress, handler.Status.TotalProgress); } } catch (Exception ex) @@ -2319,7 +2344,7 @@ namespace Tango.Integration.Operation LogManager.Log($"Executing job '{job.Name}'..."); - _currentJobLiquidQuantities = new List<BL.ValueObjects.JobRunLiquidQuantity>(); + _lastJobLiquidQuantities = new List<BL.ValueObjects.JobRunLiquidQuantity>(); _jobUploadingStartDate = null; _jobHeatingStartDate = null; _jobActualStartDate = null; @@ -2906,6 +2931,8 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<UploadHardwareConfigurationResponse> UploadHardwareConfiguration(HardwareVersion hardwareVersion, Configuration configuration) { + _machineConfiguration = configuration; + try { hardwareVersion = configuration.GetHardwareConfiguration().Merge(hardwareVersion); @@ -3745,11 +3772,20 @@ namespace Tango.Integration.Operation } _isHeadCleaningInProgress = true; + bool _completed = false; - HeadCleaningHandler handler = new HeadCleaningHandler(() => + HeadCleaningHandler handler = null; + handler = new HeadCleaningHandler(() => { _isHeadCleaningInProgress = false; Thread.Sleep(1000); + + if (!_completed) + { + _completed = true; + OnHeadCleaningEnded(handler, JobRunStatus.Aborted); + } + var r = SendRequest<AbortHeadCleaningRequest, AbortHeadCleaningResponse>(new AbortHeadCleaningRequest(), new TransportRequestConfig() { ShouldLog = true }).Result; }); @@ -3757,7 +3793,11 @@ namespace Tango.Integration.Operation { Thread.Sleep(100); + _lastJobLiquidQuantities = new List<BL.ValueObjects.JobRunLiquidQuantity>(); + _machineStatusBeforeJobStart = MachineStatus.Clone(); + bool firstResponse = true; + _jobStartDate = DateTime.UtcNow; SendContinuousRequest<StartHeadCleaningRequest, StartHeadCleaningResponse>(new StartHeadCleaningRequest(), new TransportContinuousRequestConfig() { ContinuousTimeout = TimeSpan.FromSeconds(5), ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe((response) => { @@ -3775,10 +3815,22 @@ namespace Tango.Integration.Operation LogManager.Log(ex, "Head cleaning error."); handler.RaiseFailed(ex); } + + if (!_completed) + { + _completed = true; + OnHeadCleaningEnded(handler, JobRunStatus.Failed); + } }, () => { _isHeadCleaningInProgress = false; handler.RaiseCompleted(); + + if (!_completed) + { + _completed = true; + OnHeadCleaningEnded(handler, JobRunStatus.Completed); + } }); }); |
