public async void TestR22() { var f = await fm.GetFluidAsync("R22"); var pt = PTChart.New(ion, Fluid.EState.Bubble, f); TestAllPressure(pt, Units.Pressure.PSIG, new double[] { // Pressure, Temperature 0, -41, 5, -30, 10, -20, 25, 1, 50, 53, 100, 59, 150, 83, 200, 101, 250, 117, 305, 132, 400, 154, }); TestAllTemperature(pt, Units.Temperature.FAHRENHEIT, new double[] { -41, 0, -30, 5, -20, 10, 1, 25, 53, 50, 59, 100, 83, 150, 101, 200, 117, 250, 132, 305, 154, 400, }); }
private void TestAllTemperature(PTChart pt, Unit inUnit, double[] pressAndExpected) { for (int i = 0; i < pressAndExpected.Length; i += 2) { var temp = pt.GetTemperature(inUnit.OfScalar(pressAndExpected[i])); Assert.AreEqual(pressAndExpected[i + 1], temp.amount, 0.25); } }
/// <summary> /// Called when a fluid is selected for the view controller. /// </summary> /// <param name="fluid">Fluid.</param> private void OnFluidSelected(Fluid fluid) { ptChart = new PTChart(ptChart.state, fluid, this.ptChart.elevation); }
public override void ViewDidLoad() { base.ViewDidLoad(); buttonPressureUnit.SetBackgroundImage(UIImage.FromBundle("ButtonGold").AsNinePatch(), UIControlState.Normal); buttonPressureUnit.TouchUpInside += (object sender, EventArgs e) => { if (pressureSensor.isEditable) { var dialog = CommonDialogs.CreateUnitPicker(Strings.Measure.PICK_UNIT, pressureSensor.GetSupportedUnits(), (obj, unit) => { pressureUnit = unit; }); PresentViewController(dialog, true, null); } }; buttonMeasTempUnit.SetBackgroundImage(UIImage.FromBundle("ButtonGold").AsNinePatch(), UIControlState.Normal); buttonMeasTempUnit.TouchUpInside += (object sender, EventArgs e) => { if (temperatureSensor.isEditable) { var dialog = CommonDialogs.CreateUnitPicker(Strings.Measure.PICK_UNIT, temperatureSensor.GetSupportedUnits(), (obj, unit) => { temperatureUnit = unit; }); PresentViewController(dialog, true, null); } }; switchDewBubble.ValueChanged += (object sender, EventArgs e) => { switch ((int)switchDewBubble.SelectedSegment) { case SECTION_DEW: ptChart = new PTChart(Fluid.State.Dew, ptChart.fluid, ptChart.elevation); labelFluidState.BackgroundColor = new UIColor(Colors.BLUE); break; case SECTION_BUBBLE: ptChart = new PTChart(Fluid.State.Bubble, ptChart.fluid, ptChart.elevation); labelFluidState.BackgroundColor = new UIColor(Colors.RED); break; } }; switchDewBubble.SelectedSegment = SECTION_DEW; ion = AppState.context; ptChart = new PTChart(Fluid.State.Dew, ion.fluidManager.lastUsedFluid); pressureSensor = new Sensor(ESensorType.Pressure, Units.Pressure.PSIG.OfScalar(0), true); temperatureSensor = new Sensor(ESensorType.Temperature, Units.Temperature.FAHRENHEIT.OfScalar(0), false); NavigationItem.Title = Strings.Fluid.PT_CALCULATOR; NavigationItem.RightBarButtonItem = new UIBarButtonItem(Strings.HELP, UIBarButtonItemStyle.Plain, delegate { var dialog = new UIAlertView(Strings.HELP, Strings.Fluid.STATE_HELP, null, Strings.OK); dialog.Show(); }); View.AddGestureRecognizer(new UITapGestureRecognizer(() => { editPressure.ResignFirstResponder(); editMeasTemp.ResignFirstResponder(); })); viewFluidPicker.AddGestureRecognizer(new UITapGestureRecognizer(() => { var sb = InflateViewController <FluidManagerViewController>("fluidManagerViewController"); sb.onFluidSelectedDelegate = OnFluidSelected; NavigationController.PushViewController(sb, true); })); viewPressureSensorPicker.AddGestureRecognizer(new UITapGestureRecognizer(() => { var dm = InflateViewController <DeviceManagerViewController>("deviceManagerViewController"); dm.displayFilter = new SensorTypeFilter(ESensorType.Pressure); dm.onSensorReturnDelegate = (GaugeDeviceSensor sensor) => { pressureSensor = sensor; }; NavigationController.PushViewController(dm, true); })); viewPressureSensorPicker.AddGestureRecognizer(new UILongPressGestureRecognizer(() => { pressureSensor = null; ClearPressureInput(); })); editPressure.AddTarget((object obj, EventArgs args) => { try { if (pressureSensor.isEditable) { var measurement = pressureUnit.OfScalar(double.Parse(editPressure.Text)); pressureSensor.measurement = measurement; } } catch (Exception e) { Log.E(this, "Failed to UpdatePressure: invalid string " + editPressure.Text, e); ClearPressureInput(); } }, UIControlEvent.EditingChanged); viewMeasTempSensorPicker.AddGestureRecognizer(new UITapGestureRecognizer(() => { var dm = InflateViewController <DeviceManagerViewController>("deviceManagerViewController"); dm.displayFilter = new SensorTypeFilter(ESensorType.Temperature); dm.onSensorReturnDelegate = (GaugeDeviceSensor sensor) => { temperatureSensor = sensor; }; NavigationController.PushViewController(dm, true); })); viewMeasTempSensorPicker.AddGestureRecognizer(new UILongPressGestureRecognizer(() => { temperatureSensor = null; ClearTemperatureInput(); })); editMeasTemp.AddTarget((object obj, EventArgs args) => { try { if (temperatureSensor.isEditable) { var measurement = temperatureUnit.OfScalar(double.Parse(editMeasTemp.Text)); temperatureSensor.measurement = measurement; } } catch (Exception e) { Log.E(this, "Failed to UpdateTemperature: invalid string " + editMeasTemp.Text + ".", e); ClearTemperatureInput(); } }, UIControlEvent.EditingChanged); }
/// <summary> /// Updates the state of the calculation measurement. /// </summary> private void UpdateCalculationMeasurements() { if (pressureSensor == null || temperatureSensor == null) { deltaView.Visibility = ViewStates.Gone; } if (pressureSensor == null) { saturatedTemperatureTextView.Text = ""; return; } var tu = temperatureUnit; var satTemp = ptChart.GetTemperature(pressureSensor.measurement, pressureSensor.isRelative); satTemp = satTemp.ConvertTo(tu); saturatedTemperatureTextView.Text = SensorUtils.ToFormattedString(satTemp); saturatedTemperatureUnitView.Text = temperatureUnit.ToString(); switch (ptChart.state) { case Fluid.EState.Bubble: fluidStateTextView.Text = GetString(Resource.String.fluid_sc); fluidStateTextView.SetBackgroundColor(Resource.Color.red.AsResourceColor(this)); break; case Fluid.EState.Dew: fluidStateTextView.Text = GetString(Resource.String.fluid_sh); fluidStateTextView.SetBackgroundColor(Resource.Color.blue.AsResourceColor(this)); break; } if (temperatureSensor == null) { return; } deltaView.Visibility = ViewStates.Visible; ScalarSpan delta; if (pressureSensor.isRelative) { delta = ptChart.CalculateTemperatureDeltaRelative(pressureSensor.measurement, temperatureSensor.measurement); } else { delta = ptChart.CalculateTemperatureDeltaAbsolute(pressureSensor.measurement, temperatureSensor.measurement); } delta = delta.ConvertTo(temperatureUnit); if (ptChart.fluid.mixture && delta.magnitude < 0) { warning.Visibility = ViewStates.Visible; } else { warning.Visibility = ViewStates.Gone; } if (!ptChart.fluid.mixture) { if (delta.magnitude < 0) { // dew __ptChart = ptChart.fluid.GetPtChart(Fluid.EState.Dew); } else { // bubble __ptChart = ptChart.fluid.GetPtChart(Fluid.EState.Bubble); } calculationTextView.Text = SensorUtils.ToFormattedString(ESensorType.Temperature, delta.Abs(), true); } else { calculationTextView.Text = SensorUtils.ToFormattedString(ESensorType.Temperature, delta, true); } }