Esempio n. 1
0
        /// <summary>
        /// Part of interface TFDataSink - initalize plugin
        /// </summary>
        /// <returns>signal success with true</returns>
        public override bool Init()
        {
            LcdConfig.Instance.ShowConfig();

            if (PerformConnect() && CollectBrickletInformations())
            {
                // interval at which timer elapses (in ms)
                int delay = CommonUtils.DefaultDelay;

                // buffer the timer actively waits (in ms)
                // this exists to make sure we don't accidentally skip an interval at which
                // the timestamp could have been written to the lcd display
                int delayBuffer = 100;

                TimeStampDisplayTimer          = new System.Timers.Timer(CommonUtils.DefaultDelay);
                TimeStampDisplayTimer.Elapsed += (o, args) =>
                {
                    CommonUtils.WaitForCleanTimestamp(delay / 1000, delayBuffer);

                    lock (WriteLock)
                    {
                        // Display timestamp
                        Bricklet.WriteLine(0, 0, DateTime.Now.ToString(LcdConfig.Instance.TimestampFormat));
                    }
                };

                // CommonUtils.WaitForCleanTimestamp(delay / 1000, delayBuffer);
                TimeStampDisplayTimer.Start();
                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        /// <summary>
        /// Cleanup Lcd
        /// </summary>
        public override void Shutdown()
        {
            TimeStampDisplayTimer.Stop();
            TimeStampDisplayTimer.Close();

            if (Bricklet != null)
            {
                Bricklet.ClearDisplay();
                Bricklet.BacklightOff();
            }
        }
        /// <summary>
        /// Read value from sensor and prepare real value
        /// </summary>
        /// <returns>Air pressure or 0.0</returns>
        protected override List <MeasurementValue> RawValues()
        {
            var result             = new List <MeasurementValue>();
            MeasurementValue value = new MeasurementValue(Name, "", Unit, AirPressureConfig.Instance.SortOrder);

            if (Bricklet != null)
            {
                int airPressureRaw = Bricklet.GetAirPressure();
                value.Value = airPressureRaw / 1000.0;
                result.Add(value);
            }

            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// Read value from sensor and prepare real value
        /// </summary>
        /// <returns>Humidity or 0.0</returns>
        protected override List <MeasurementValue> RawValues()
        {
            var result             = new List <MeasurementValue>();
            MeasurementValue value = new MeasurementValue(Name, "", Unit, HumidityConfig.Instance.SortOrder);

            if (Bricklet != null)
            {
                int humidityRaw = Bricklet.GetHumidity();
                value.Value = humidityRaw / 10.0;
                result.Add(value);
            }

            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Read value from sensor and prepare real value
        /// </summary>
        /// <returns>Illuminance or 0.0</returns>
        protected override List <MeasurementValue> RawValues()
        {
            var result             = new List <MeasurementValue>();
            MeasurementValue value = new MeasurementValue(Name, "", Unit, AmbientLightConfig.Instance.SortOrder);

            if (Bricklet != null)
            {
                int rawIlluminance = Bricklet.GetIlluminance();
                value.Value = rawIlluminance / 10.0;
                result.Add(value);
            }

            return(result);
        }
Esempio n. 6
0
        /// <summary>
        /// Part of interface TFDataSink - perform action with given data
        /// </summary>
        /// <param name="SensorValue"></param>
        public override void HandleValue(MeasurementValue SensorValue)
        {
            if (Bricklet == null)
            {
                return;
            }

            if (SensorValue.SortOrder == LcdConfig.Instance.SkipIndex)
            {
                return;
            }

            // Calculation of position in dependency of the sort order
            byte   posX = (byte)((SensorValue.SortOrder % 2) * 10);
            byte   posY = (byte)((SensorValue.SortOrder / 2) + 1);
            string MeasurementValueData = string.Format("{0,7:####.00} {1}", SensorValue.Value, SensorValue.Unit);

            lock (WriteLock)
            {
                Bricklet.WriteLine(posY, posX, MeasurementValueData);
            }
        }