/// <summary> /// Get a reading from the sensor and set the Temperature and Humidity properties. /// </summary> public void Update() { var data = sht31d.WriteRead(new byte[] { 0x2c, 0x06 }, 6); Conditions.Humidity = (100 * (float)((data[3] << 8) + data[4])) / 65535; Conditions.Temperature = ((175 * (float)((data[0] << 8) + data[1])) / 65535) - 45; }
protected void Initialize() { si7021.WriteByte(SOFT_RESET); Thread.Sleep(100); // // Get the device ID. // SerialNumber = 0; Span <byte> tx = stackalloc byte[2]; Span <byte> rx = stackalloc byte[8]; Span <byte> rx2 = stackalloc byte[6]; tx[0] = READ_ID_PART1; tx[1] = READ_ID_PART2; si7021.WriteRead(tx, rx); for (var index = 0; index < 4; index++) { SerialNumber <<= 8; SerialNumber += rx[index * 2]; } tx[0] = READ_2ND_ID_PART1; tx[1] = READ_2ND_ID_PART2; si7021.WriteRead(tx, rx2); SerialNumber <<= 8; SerialNumber += rx2[0]; SerialNumber <<= 8; SerialNumber += rx2[1]; SerialNumber <<= 8; SerialNumber += rx2[3]; SerialNumber <<= 8; SerialNumber += rx2[4]; if ((rx2[0] == 0) || (rx2[0] == 0xff)) { SensorType = DeviceType.EngineeringSample; } else { SensorType = (DeviceType)rx2[0]; } SetResolution(SensorResolution.TEMP11_HUM11); }
protected void Initialize() { si7021.WriteByte(SOFT_RESET); Thread.Sleep(100); // // Get the device ID. // var part1 = si7021.WriteRead(new[] { READ_ID_PART1, READ_ID_PART2 }, 8); var part2 = si7021.WriteRead(new[] { READ_2ND_ID_PART1, READ_2ND_ID_PART2 }, 6); SerialNumber = 0; for (var index = 0; index < 4; index++) { SerialNumber <<= 8; SerialNumber += part1[index * 2]; } SerialNumber <<= 8; SerialNumber += part2[0]; SerialNumber <<= 8; SerialNumber += part2[1]; SerialNumber <<= 8; SerialNumber += part2[3]; SerialNumber <<= 8; SerialNumber += part2[4]; if ((part2[0] == 0) || (part2[0] == 0xff)) { SensorType = DeviceType.EngineeringSample; } else { SensorType = (DeviceType)part2[0]; } SetResolution(SensorResolution.TEMP11_HUM11); }