forked from amkovkov/GranuSightSoftware2
feat: минорые изменения после тестирования
This commit is contained in:
@@ -9,8 +9,8 @@ public class TemperatureHumidityService : IDisposable
|
||||
{
|
||||
public static TemperatureHumidityServiceConfiguration Default => new TemperatureHumidityServiceConfiguration
|
||||
{
|
||||
Bus = 0,
|
||||
Address = 0x44
|
||||
Bus = 6,
|
||||
Address = 0x45
|
||||
};
|
||||
|
||||
public int Bus { get; set; }
|
||||
@@ -54,7 +54,7 @@ public class TemperatureHumidityService : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(double temperature, double relativeHumidity)> MeasureAsync(int measurementsCount = 1, CancellationToken cancellationToken = default)
|
||||
public (double temperature, double relativeHumidity) Measure(int measurementsCount = 1, bool checkCrc = true, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// В соответствии с даташитом на SHT45-AD1B-R2 псевдокод измерения с высокой точностью следующий:
|
||||
// i2c_write(i2c_addr=0x44, tx_bytes=[0xFD])
|
||||
@@ -90,19 +90,19 @@ public class TemperatureHumidityService : IDisposable
|
||||
// Отправляем команду
|
||||
_sensor.Write(command);
|
||||
// 10 мс ожидания
|
||||
await Task.Delay(10, cancellationToken);
|
||||
Task.Delay(10, cancellationToken);
|
||||
// Читаем данные
|
||||
_sensor.Read(data);
|
||||
|
||||
// Распаковываем данные [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
|
||||
ushort temperatureTicks = BitConverter.ToUInt16(data.ToArray(), 0);
|
||||
byte temperatureChecksum = data[2];
|
||||
int relativeHumidityTicks = BitConverter.ToUInt16(data.ToArray(), 3);
|
||||
byte relativeHumidityChecksum = data[5];
|
||||
ushort temperatureTicks = BitConverter.ToUInt16(data.Slice(0, 2));
|
||||
int relativeHumidityTicks = BitConverter.ToUInt16(data.Slice(3, 2));
|
||||
|
||||
// Проверка по CRC
|
||||
if (!CheckCrc(data.Slice(0, 2), temperatureChecksum) ||
|
||||
!CheckCrc(data.Slice(3, 2), relativeHumidityChecksum))
|
||||
if (checkCrc && (!CheckCrc(data.Slice(0, 2), temperatureChecksum) ||
|
||||
!CheckCrc(data.Slice(3, 2), relativeHumidityChecksum)))
|
||||
{
|
||||
_logger.LogWarning("Temperature and humidity sensor CRC error");
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user