aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs72
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);
+ }
});
});