diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 83a836c2f..05026791d 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -92,6 +92,16 @@ namespace Tango.Integration.Operation public static SessionFileLogger SessionLogger { get; set; } public static String CachedJobOperationFile { get; set; } + #region Classes + + private class RequiredLiquid + { + public IdsPack IdsPack { get; set; } + public int Quantity { get; set; } + } + + #endregion + #region Constructors /// <summary> @@ -2006,11 +2016,12 @@ namespace Tango.Integration.Operation }); } - private void ValidateJobLiquidQuantity(Job job, ProcessParametersTable processParameters, Configuration configuration) + private List<RequiredLiquid> ValidateJobLiquidQuantity(Job job, ProcessParametersTable processParameters, Configuration configuration) { LogManager.Log("Validating job liquid quantities..."); Dictionary<int, double> liquidQuantities = new Dictionary<int, double>(); + List<RequiredLiquid> requiredLiquids = new List<RequiredLiquid>(); foreach (var pack in configuration.NoneEmptyIdsPacks.OrderBy(x => x.PackIndex)) { @@ -2091,6 +2102,12 @@ namespace Tango.Integration.Operation Maximum = MAX_DISPENSER_NANOLITER, }; + requiredLiquids.Add(new RequiredLiquid() + { + IdsPack = idsPack, + Quantity = (int)liquidQuantities[index] + }); + LogManager.Log($"Required {idsLevel.IdsPack.LiquidType.Type}: {idsLevel.Required}, Current: {idsLevel.Current}"); if (idsLevel.Required > idsLevel.Current) @@ -2132,6 +2149,8 @@ namespace Tango.Integration.Operation { LogManager.Log("Could not validate required liquid quantity for job. No machine status received", LogCategory.Warning); } + + return requiredLiquids; } /// <summary> @@ -2584,10 +2603,12 @@ namespace Tango.Integration.Operation } } + List<RequiredLiquid> requiredLiquids = null; + //Validate liquid quantities.. if (EnableJobLiquidQuantityValidation) { - ValidateJobLiquidQuantity(job, processParameters, job.Machine.Configuration); + requiredLiquids = ValidateJobLiquidQuantity(job, processParameters, job.Machine.Configuration); } else { @@ -2746,7 +2767,7 @@ namespace Tango.Integration.Operation Message = "Preparing Job...", }); - foreach (var segment in originalJob.OrderedSegments) + foreach (var segment in segments) { try { @@ -2835,6 +2856,36 @@ namespace Tango.Integration.Operation var oldKeepAlive = UseKeepAlive; + if (requiredLiquids != null) + { + JobPrepareRequest prepareRequest = new JobPrepareRequest(); + prepareRequest.ProcessParameters = ticket.ProcessParameters; + + foreach (var requiredLiquid in requiredLiquids) + { + JobPrepareDispenser prepareDispenser = new JobPrepareDispenser(); + prepareDispenser.DispenserLiquidType = (DispenserLiquidType)requiredLiquid.IdsPack.LiquidType.Type; + prepareDispenser.Index = requiredLiquid.IdsPack.PackIndex; + prepareDispenser.TotalNanoliter = requiredLiquid.Quantity; + prepareDispenser.Active = requiredLiquid.Quantity > 0; + + prepareRequest.Dispensers.Add(prepareDispenser); + } + + try + { + var response = await SendRequest<JobPrepareRequest, JobPrepareResponse>(prepareRequest, new TransportRequestConfig() + { + ShouldLog = true, + Timeout = TimeSpan.FromSeconds(10) + }); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error sending job preparation request."); + } + } + if (JobUploadStrategy == JobUploadStrategy.JobDescriptionFile) { LogManager.Log("Generating job description file..."); |
