예제 #1
0
        /// <summary>
        /// Gets the current sensor reading from the device.
        /// </summary>
        /// <returns>Returns an ISensorReading instance that
        /// indicates current temperature and whether or not
        /// the thresholds have been exceeded.</returns>
        public Task <IDeviceSensorReading> ReadSensor()
        {
            // ***
            // *** Initialize a value to hold the device temperature
            // *** in Celsius
            // ***
            DeviceSensorReading returnValue = new DeviceSensorReading();

            // ***
            // *** The register/command for reading ambient temperature
            // *** from the device is 0x05
            // ***
            byte[] readBuffer = this.ReadFromRegister(Mcp9808Register.AmbientTemperature);

            // ***
            // *** Calculate the temperature value
            // ***
            returnValue.Temperature = RegisterConverter.ToFloat(readBuffer);

            // ***
            // *** Check the flags
            // ***
            returnValue.IsCritical            = (readBuffer[0] & 0x80) == 0x80;
            returnValue.IsAboveUpperThreshold = (readBuffer[0] & 0x40) == 0x40;
            returnValue.IsBelowLowerThreshold = (readBuffer[0] & 0x20) == 0x20;

            // ***
            // *** Return the value
            // ***
            return(Task <IDeviceSensorReading> .FromResult((IDeviceSensorReading)returnValue));
        }
예제 #2
0
		/// <summary>
		/// Gets the current sensor reading from the device.
		/// </summary>
		/// <returns>Returns an ISensorReading instance that 
		/// indicates current temperature and whether or not
		/// the thresholds have been exceeded.</returns>
		public Task<IDeviceSensorReading> ReadSensor()
		{
			// ***
			// *** Initialize a value to hold the device temperature 
			// *** in Celsius
			// ***
			DeviceSensorReading returnValue = new DeviceSensorReading();

			// ***
			// *** The register/command for reading ambient temperature
			// *** from the device is 0x05
			// ***
			byte[] readBuffer = this.ReadFromRegister(Mcp9808Register.AmbientTemperature);

			// ***
			// *** Calculate the temperature value
			// ***
			returnValue.Temperature = RegisterConverter.ToFloat(readBuffer);

			// ***
			// *** Check the flags 
			// ***
			returnValue.IsCritical = (readBuffer[0] & 0x80) == 0x80;
			returnValue.IsAboveUpperThreshold = (readBuffer[0] & 0x40) == 0x40;
			returnValue.IsBelowLowerThreshold = (readBuffer[0] & 0x20) == 0x20;

			// ***
			// *** Return the value
			// ***
			return Task<IDeviceSensorReading>.FromResult((IDeviceSensorReading)returnValue);
		}