/// <summary> /// RETURNS THE BUFFER VALUE FOR THE GRAPH BASED ON THE UNIT A USER HAS CHOSEN /// </summary> /// <returns>THE GRAPH TOP AND BOTTOM BUFFER</returns> /// <param name="type">TYPE OF SENSOR</param> /// <param name="gaugeUnit">SPECIFIC UNIT CHOSEN BY USER FOR THE SENSOR TYPE</param> public double getUnitBuffer(ESensorType type, Unit gaugeUnit) { switch (type) { case ESensorType.Pressure: double psig = 10; var pressureBuffer = new ScalarSpan(Units.Pressure.PSIG, psig); var pressureConvert = pressureBuffer.ConvertTo(gaugeUnit); return(pressureConvert.magnitude); case ESensorType.Temperature: double fahrenheit = 10; var temperatureBuffer = new ScalarSpan(Units.Temperature.FAHRENHEIT, fahrenheit); var temperatureConvert = temperatureBuffer.ConvertTo(gaugeUnit); return(temperatureConvert.magnitude); case ESensorType.Vacuum: double micron = 2000; var vacuumBuffer = new ScalarSpan(Units.Vacuum.MICRON, micron); var vacuumConvert = vacuumBuffer.ConvertTo(gaugeUnit); return(vacuumConvert.magnitude); default: var defaultBuffer = new ScalarSpan(Units.Pressure.PSIG, 10); var defaultConvert = defaultBuffer.ConvertTo(gaugeUnit); return(defaultConvert.magnitude); } }
private void RegisterPoint() { Trim(); var gds = sensor as GaugeDeviceSensor; var su = gds.unit.standardUnit; if (gds != null && gds.device.isConnected && (DateTime.Now - lastRocRecord) >= TimeSpan.FromMilliseconds(100)) { var meas = gds.measurement; if (!rocBuffer.isEmpty && !rocBuffer.first.measurement.DEquals(meas.ConvertTo(su).amount)) { lastRocChange = DateTime.Now; } rocBuffer.Add(new PlotPoint(meas.ConvertTo(sensor.unit.standardUnit).amount)); lastRocRecord = DateTime.Now; this.primaryRateOfChange = GetPrimaryAverageRateOfChange(); } if (DateTime.Now - lastRecord >= interval) { primarySensorBuffer.Add(new PlotPoint(sensor.measurement.ConvertTo(sensor.unit.standardUnit).amount)); //if (manifold.secondarySensor != null) { if (sensor.linkedSensor != null) { //var ss = manifold.secondarySensor; var ss = sensor.linkedSensor; secondarySensorBuffer.Add(new PlotPoint(ss.measurement.ConvertTo(ss.unit.standardUnit).amount)); } lastRecord = DateTime.Now; } }
// [Obsolete("Don't call this constructor. It is only used for the analyzer (and remote) in iOS and needs to be removed")] // public RateOfChangeSensorProperty(Sensor sensor) : this(new Manifold(sensor)) { // } // public RateOfChangeSensorProperty(Manifold manifold) : this(manifold, GRAPH_INTERVAL) { // } //public RateOfChangeSensorProperty(Manifold manifold, TimeSpan interval) : base(manifold){ //public RateOfChangeSensorProperty(Sensor sensor, TimeSpan interval) : base(manifold){ public RateOfChangeSensorProperty(Sensor sensor, TimeSpan interval) : base(sensor) { this.interval = interval; window = TimeSpan.FromMilliseconds(interval.TotalMilliseconds * POINT_LIMIT); flags = EFlags.ShowAll; var size = POINT_LIMIT; rocBuffer = new RingBuffer <PlotPoint>((int)(ROC_WINDOW.TotalMilliseconds / ROC_INTERVAL.TotalMilliseconds)); primarySensorBuffer = new RingBuffer <PlotPoint>(size); secondarySensorBuffer = new RingBuffer <PlotPoint>(size); buffer = new PlotPoint[size]; AppState.context.preferences.onPreferencesChanged += OnPreferencesChanged; primaryRateOfChange = sensor.unit.OfSpan(0); }
public static string ToFormattedString(ScalarSpan measurement, bool includeUnit = false) { return(ToFormattedString(measurement.magnitude, measurement.unit, includeUnit)); }
public static string ToFormattedString(ESensorType sensorType, ScalarSpan measurement, bool includeUnit = false) { var unit = measurement.unit; var amount = measurement.magnitude; string ret = ""; if (double.IsNaN(amount)) { ret = "---"; } else { // PRESSURE UNITS if (Units.Pressure.PASCAL.Equals(unit)) { ret = amount.ToString("0"); } else if (Units.Pressure.KILOPASCAL.Equals(unit)) { if (ESensorType.Vacuum == sensorType) { ret = amount.ToString("0.0000"); } else { ret = amount.ToString("0"); } } else if (Units.Pressure.MEGAPASCAL.Equals(unit)) { ret = amount.ToString("0.000"); } else if (Units.Pressure.MILLIBAR.Equals(unit)) { ret = amount.ToString("0.000"); } else if (Units.Pressure.PSIG.Equals(unit)) { ret = amount.ToString("0.0"); } else if (Units.Pressure.PSIA.Equals(unit)) { ret = amount.ToString("0.0000"); } else if (Units.Pressure.IN_HG.Equals(unit)) { if (ESensorType.Vacuum == sensorType) { ret = amount.ToString("0.000"); } else { ret = amount.ToString("0.00"); } } // VACUUM PRESSURE else if (Units.Vacuum.MICRON.Equals(unit)) { ret = amount.ToString("###,##0"); } else if (Units.Vacuum.MILLITORR.Equals(unit)) { ret = amount.ToString("###,##0"); } // DEFAULT else { ret = amount.ToString("0.00"); } } if (includeUnit) { ret += " " + unit.ToString(); } return(ret); }
public void makeEvents(lowHighSensor lhSensor, CGRect tableRect) { cellHeader = new UILabel(new CGRect(0, 0, 1.006 * tableRect.Width, .5 * lhSensor.cellHeight)); cellHeader = lhSensor.shFluidState; //lhSensor.shFluidState = cellHeader; cellHeader.TextColor = UIColor.White; cellHeader.BackgroundColor = UIColor.Black; cellHeader.Font = UIFont.FromName("Helvetica-Bold", 21f); cellHeader.TextAlignment = UITextAlignment.Center; cellHeader.AdjustsFontSizeToFitWidth = true; fluidType = lhSensor.shFluidType; fluidType.Text = ion.fluidManager.lastUsedFluid.name; fluidType.BackgroundColor = CGExtensions.FromARGB8888(lhSensor.ion.fluidManager.GetFluidColor(ion.fluidManager.lastUsedFluid.name)); if (lhSensor.currentSensor.fluidState.Equals(Fluid.EState.Dew)) { cellHeader.Text = Util.Strings.Analyzer.SC; } else if (lhSensor.currentSensor.fluidState.Equals(Fluid.EState.Bubble)) { cellHeader.Text = Util.Strings.Analyzer.SH; } fluidType.TextAlignment = UITextAlignment.Center; fluidType.Font = UIFont.FromName("Helvetica", 18f); fluidType.AdjustsFontSizeToFitWidth = true; fluidType.Layer.BorderColor = UIColor.Black.CGColor; fluidType.Layer.BorderWidth = 1f; tempReading = lhSensor.shReading; if (lhSensor.currentSensor.linkedSensor != null) { var stateCheck = new ScalarSpan(); if (lhSensor.currentSensor.type == ESensorType.Pressure) { var calculation = ion.fluidManager.lastUsedFluid.CalculateTemperatureDelta(lhSensor.currentSensor.fluidState, lhSensor.currentSensor.measurement, lhSensor.currentSensor.linkedSensor.measurement, ion.locationManager.lastKnownLocation.altitude); stateCheck = calculation; if (!ion.fluidManager.lastUsedFluid.mixture && calculation < 0) { calculation = calculation * -1; } cellHeader.Text = lhSensor.shFluidState.Text; tempReading.Text = calculation.magnitude.ToString("N") + " " + calculation.unit.ToString(); } else { var calculation = ion.fluidManager.lastUsedFluid.CalculateTemperatureDelta(lhSensor.currentSensor.fluidState, lhSensor.currentSensor.linkedSensor.measurement, lhSensor.currentSensor.measurement, ion.locationManager.lastKnownLocation.altitude); stateCheck = calculation; if (!ion.fluidManager.lastUsedFluid.mixture && calculation < 0) { calculation = calculation * -1; } cellHeader.Text = lhSensor.shFluidState.Text; tempReading.Text = calculation.magnitude.ToString("N") + " " + calculation.unit.ToString(); } var ptAmount = stateCheck.magnitude; if (!ion.fluidManager.lastUsedFluid.mixture) { if (ptAmount < 0) { lhSensor.shFluidState.Text = Util.Strings.Analyzer.SC; } else { lhSensor.shFluidState.Text = Util.Strings.Analyzer.SH; } } else if (lhSensor.currentSensor.fluidState.Equals(Fluid.EState.Bubble)) { lhSensor.shFluidState.Text = Util.Strings.Analyzer.SC; } else if (lhSensor.currentSensor.fluidState.Equals(Fluid.EState.Dew)) { lhSensor.shFluidState.Text = Util.Strings.Analyzer.SH; } } else { tempReading.Text = Util.Strings.Analyzer.SETUP; } tempReading.AdjustsFontSizeToFitWidth = true; tempReading.TextAlignment = UITextAlignment.Center; this.AddSubview(cellHeader); this.AddSubview(lhSensor.shFluidType); this.AddSubview(tempReading); this.AddSubview(lhSensor.changeFluid); }