示例#1
0
        protected override void OnCharacteristicValueChanged(GattCharacteristic sender, GattValueChangedEventArgs eventArgs)
        {
            if (sender.Uuid == HumidityCharacteristicUuid)
            {
                if (_humidityValueChanged != null)
                {
                    uint dataLength = eventArgs.CharacteristicValue.Length;
                    using (DataReader reader = DataReader.FromBuffer(eventArgs.CharacteristicValue))
                    {
                        if (dataLength == 4)
                        {
                            ushort temp     = ReadBigEndianU16bit(reader);
                            ushort humidity = ReadBigEndianU16bit(reader);

                            var measurement = new HumidityMeasurement();

                            if (Version == 1)
                            {
                                // calculate temperature [deg C]
                                measurement.Temperature = -46.85 + (175.72 * (double)temp) / 65536.0;

                                humidity            &= 0xFFFC;                                      // clear bits [1..0] (status bits)
                                measurement.Humidity = -6.0 + (125.0 * (double)humidity) / 65536.0; // RH= -6 + 125 * SRH/2^16
                            }
                            else
                            {
                                measurement.Temperature = ((double)temp / 65536.0) * 165 - 40;
                                measurement.Humidity    = ((double)humidity / 65536.0) * 100;
                            }

                            measurement.SetRawHumidity(humidity);

                            OnHumidityMeasurementValueChanged(new HumidityMeasurementEventArgs(measurement, eventArgs.Timestamp));
                        }
                    }
                }
            }
        }
示例#2
0
 public HumidityMeasurementEventArgs(HumidityMeasurement measurement, DateTimeOffset timestamp)
 {
     Measurement = measurement;
     Timestamp   = timestamp;
 }