Fixed reading discrete inputs and coils

https://github.com/arendst/Tasmota/issues/9586#issuecomment-1217574286
This commit is contained in:
JeroenSt 2022-08-17 19:55:42 +02:00
parent cc2c219aa2
commit 812fbff683

View File

@ -377,7 +377,7 @@ void ModbusBridgeHandle(void)
else if (modbusBridge.type == ModbusBridgeType::mb_bit) else if (modbusBridge.type == ModbusBridgeType::mb_bit)
{ {
uint8_t value = (uint8_t)(buffer[dataOffset + (count >> 3)]); uint8_t value = (uint8_t)(buffer[dataOffset + (count >> 3)]);
snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", ((value >> (7 - (count & 7))) & 1)); snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", ((value >> (count & 7)) & 1));
} }
else else
{ {
@ -633,7 +633,7 @@ void CmndModbusBridgeSend(void)
if (strcmp(stype, "int8") == 0) if (strcmp(stype, "int8") == 0)
{ {
modbusBridge.type = ModbusBridgeType::mb_int8; modbusBridge.type = ModbusBridgeType::mb_int8;
modbusBridge.dataCount = ((modbusBridge.count - 1) >> 1) + 1; modbusBridge.dataCount = modbusBridge.count;
} }
else if (strcmp(stype, "int16") == 0) else if (strcmp(stype, "int16") == 0)
{ {
@ -648,7 +648,7 @@ void CmndModbusBridgeSend(void)
else if ((strcmp(stype, "uint8") == 0)) else if ((strcmp(stype, "uint8") == 0))
{ {
modbusBridge.type = ModbusBridgeType::mb_uint8; modbusBridge.type = ModbusBridgeType::mb_uint8;
modbusBridge.dataCount = ((modbusBridge.count - 1) >> 1) + 1; modbusBridge.dataCount = modbusBridge.count;
} }
else if ((strcmp(stype, "uint16") == 0) || (strcmp(stype, "") == 0)) // Default is uint16 else if ((strcmp(stype, "uint16") == 0) || (strcmp(stype, "") == 0)) // Default is uint16
{ {