В чем разница между типами данных CloudTemperature, CloudTemperatureSensor и Float?
У меня есть датчик SHT30 для Wemos, и я учусь использовать Arduino IOT Cloud.
Я использую тип данных float для переменной temperature
, но вижу еще два типа данных:
Температура облака
Датчик температуры облака
В чем разница? Не следует использовать с плавающей запятой?
@Roby Sottini, 👍0
1 ответ
Из технической справки по Arduino Cloud на arduino.cc:
Для вашего удобства IoT Cloud предоставляет специализированные типы, которые представляют собой просто оболочки базовых типов, но с более явным объявлением семантики переменных. Это обеспечивает более эффективную интеграцию со сторонними службами (например, Alexa) и лучшую визуализацию виджетов на информационных панелях.
Их можно использовать так же, как и обычные переменные обернутого типа, поскольку они поддерживают операторы присваивания и сравнения.
Эти типы на самом деле являются классами-оболочками, которые добавляют некоторые функции для лучшей интеграции в облачные службы. Вы можете использовать их так же, как и обычные типы данных.
Вы даже можете посмотреть, как они определяются. Рассмотрим, например, CloudTemperature
. Все файлы можно найти в репозитории ArduinoIoTCloud на github.
Типы определены в файле PropertyContainer.h:
< pre>...
#include "types/CloudFloat.h"
...
typedef CloudFloat CloudTemperature;
...
Поэтому CloudTemperature
на самом деле просто CloudFloat
, который включается из соответствующего заголовочного файла. Когда мы смотрим на файл CloudFloat.h, мы находим:
...
#include "types/CloudFloat.h"
...
typedef CloudFloat CloudTemperature;
...
Поэтому внутренне CloudFloat
— это просто значение с плавающей запятой с дополнительными функциями. И вы можете использовать его как любое другое число с плавающей запятой, так как ниже той части, которую я показал здесь, все операторы (такие как /
, *
, +
, ...) перезаписываются (чтобы класс знал, что делать с этими операторами).
CloudTemperatureSensor
находится по адресу CloudTemperatureSensor.h и наследуется от CloudFloat
, поэтому работает в основном одинаково (он перезаписывает только оператор присваивания; в остальном то же самое, что и CloudFloat
).
Не следует использовать число с плавающей запятой?
Я сам не пробовал. Но из документации следует, что нет никаких причин не использовать специализированные типы, поскольку они обеспечивают ту же функциональность и даже больше.
- Как получить тип данных переменной?
- Колебания показаний датчика температуры LM35 (+- 5°C) с Arduino UNO
- Неверные показания PT100 и MAX31865
- Погрешность измерения датчика температуры LMT 84
- Как инициализировать сброс на цифровом термометре sht30?
- Проблема с условием if
- Как использовать датчик температуры M117 от mysentech?
- Интерпретация значений повышения Rp и Rpu в таблице данных AM3202 (DHT22)