Example #1
0
        public async Task TestRampingDown()
        {
            var operationService  = new AsyncOperationService();
            var targetTemperature = new Value <Unit.Temperature>(3.0, Unit.Temperature.TemperatureInDegC);
            var rampRate          = new Value <Unit.TemperatureRate>(2.5, Unit.TemperatureRate.TemperatureRateInDegCPerMinute);
            var minBand           = new Value <Unit.Temperature>(targetTemperature.Number - 1, Unit.Temperature.TemperatureInDegC);
            var maxBand           = new Value <Unit.Temperature>(targetTemperature.Number + 1, Unit.Temperature.TemperatureInDegC);
            var band = new ReadOnlyRange <Unit.Temperature>(minBand, maxBand);
            var time = TimeSpan.FromMinutes(5);
            await operationService.RampingDownAsync(targetTemperature, rampRate, band, time);

            var currentTemp = operationService.GetCurrentTemperature().Number;

            Assert.AreEqual(3.0, currentTemp);
        }
Example #2
0
        public void TestCancelRamp()
        {
            var operationService  = new AsyncOperationService();
            var targetTemperature = new Value <Unit.Temperature>(69.56, Unit.Temperature.TemperatureInDegC);
            var rampRate          = new Value <Unit.TemperatureRate>(2.5, Unit.TemperatureRate.TemperatureRateInDegCPerMinute);
            var minBand           = new Value <Unit.Temperature>(targetTemperature.Number - 3, Unit.Temperature.TemperatureInDegC);
            var maxBand           = new Value <Unit.Temperature>(targetTemperature.Number + 3, Unit.Temperature.TemperatureInDegC);
            var band = new ReadOnlyRange <Unit.Temperature>(minBand, maxBand);
            var time = TimeSpan.FromMinutes(5);

            Task.Run(async() =>
            {
                await operationService.RampingDownAsync(targetTemperature, rampRate, band, time);
            });
            operationService.CancelOperation();
            Assert.IsFalse(operationService.GetOperationStatus());
            Assert.AreNotEqual(69.56, operationService.GetCurrentTemperature());
        }
        public ActionResult StartRamping([FromBody] string targetTemp, string rampRate, string settlingBand,
                                         string settlingTime)
        {
            var result = "";

            try
            {
                var rate = new Value <Unit.TemperatureRate>(Convert.ToDouble(rampRate),
                                                            Unit.TemperatureRate.TemperatureRateInDegCPerMinute);
                if ((rate.Number < RampRateRange.Min) || (rate.Number > RampRateRange.Max))
                {
                    result = "Ramp rate is out of range";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                var target = new Value <Unit.Temperature>(Convert.ToDouble(targetTemp),
                                                          Unit.Temperature.TemperatureInDegC);
                if ((target < TargetTemperatureRange.Min) || (target > TargetTemperatureRange.Max))
                {
                    result = "Target temperature is out of range";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                var bandNumber = Convert.ToDouble(settlingBand);
                var minBand    = new Value <Unit.Temperature>(target.Number - bandNumber, Unit.Temperature.TemperatureInDegC);
                var maxBand    = new Value <Unit.Temperature>(target.Number + bandNumber, Unit.Temperature.TemperatureInDegC);
                var band       = new ReadOnlyRange <Unit.Temperature>(minBand, maxBand);
                var time       = TimeSpan.FromMinutes(Convert.ToDouble(settlingTime));
                var operation  = BeginRampToTemperature(target, rate, band, time);
                result = !operation.GetOperationStatus()
                    ? "Ramping request accept"
                    : "Request reject, another operation has not finished";
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                result = e.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
 public IAsyncOperationContext BeginRampToTemperature(Value <Unit.Temperature> targetTemperature,
                                                      Value <Unit.TemperatureRate> rampRateAbs, ReadOnlyRange <Unit.Temperature> settlingBand,
                                                      TimeSpan settlingTime)
 {
     if (_operationService.GetOperationStatus())
     {
         return(_operationService);
     }
     if (_operationService.GetCurrentTemperature() < targetTemperature)
     {
         var task = _operationService.RampingUpAsync(targetTemperature, rampRateAbs, settlingBand, settlingTime);
         try
         {
             task.ConfigureAwait(false);
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
         }
     }
     else if (_operationService.GetCurrentTemperature() > targetTemperature)
     {
         var task = _operationService.RampingDownAsync(targetTemperature, rampRateAbs, settlingBand, settlingTime);
         try
         {
             task.ConfigureAwait(false);
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
         }
     }
     return(_operationService);
 }