При ошибках чтения с датчика корректно сообщаем ошибку наверх
This commit is contained in:
@@ -21,6 +21,7 @@ IPAddress subnet(MY_NET);
|
|||||||
ModbusIP mb;
|
ModbusIP mb;
|
||||||
DHT dht(DHTPIN, DHTTYPE);
|
DHT dht(DHTPIN, DHTTYPE);
|
||||||
char id[64];
|
char id[64];
|
||||||
|
bool dht_read_error = false;
|
||||||
|
|
||||||
#define REGISTER_CURRENT_TEMP 0
|
#define REGISTER_CURRENT_TEMP 0
|
||||||
#define REGISTER_CURRENT_HUM 1
|
#define REGISTER_CURRENT_HUM 1
|
||||||
@@ -35,6 +36,7 @@ unsigned long current = 0;
|
|||||||
Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data)
|
Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data)
|
||||||
{
|
{
|
||||||
last_poll = current;
|
last_poll = current;
|
||||||
|
if (dht_read_error) return Modbus::EX_ILLEGAL_VALUE;
|
||||||
return Modbus::EX_SUCCESS;
|
return Modbus::EX_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,6 +83,8 @@ void UpdateDHTData()
|
|||||||
float t = dht.readTemperature();
|
float t = dht.readTemperature();
|
||||||
cur_hum = (int)(h * 100);
|
cur_hum = (int)(h * 100);
|
||||||
cur_t = (int)(t * 100);
|
cur_t = (int)(t * 100);
|
||||||
|
if (cur_t == 2147483647 && cur_hum == 2147483647) dht_read_error = true;
|
||||||
|
else dht_read_error = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long last_read = 0;
|
unsigned long last_read = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user