Esempio n. 1
0
        /// <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);
        }
Esempio n. 4
0
 public static string ToFormattedString(ScalarSpan measurement, bool includeUnit = false)
 {
     return(ToFormattedString(measurement.magnitude, measurement.unit, includeUnit));
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }