From ee9d086abacbec1d9d0d4d5850212661ad0656e3 Mon Sep 17 00:00:00 2001 From: Jeroen Date: Wed, 26 Apr 2023 22:27:53 +0200 Subject: [PATCH] Solved: ModbusBridge reading int16 returns uint16 (#18524) https://github.com/arendst/Tasmota/issues/18522 Co-authored-by: JeroenSt --- tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino index f75217fd1..570cf7049 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino @@ -485,7 +485,7 @@ void ModbusBridgeHandle(void) ((uint8_t *)&value)[0] = modbusBridge.buffer[dataOffset + 3 + (count * 4)]; } if (modbusBridge.type == ModbusBridgeType::mb_int32) - snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", value); + snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", (int32_t)value); else snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%u", value); } @@ -506,7 +506,7 @@ void ModbusBridgeHandle(void) ((uint8_t *)&value)[0] = modbusBridge.buffer[dataOffset + 1 + (count * 2)]; } if (modbusBridge.type == ModbusBridgeType::mb_int16) - snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", value); + snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", (int16_t)value); else snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%u", value); } @@ -515,7 +515,7 @@ void ModbusBridgeHandle(void) { uint8_t value = modbusBridge.buffer[dataOffset + (count * 1)]; if (modbusBridge.type == ModbusBridgeType::mb_int8) - snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", value); + snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%d", (int8_t)value); else snprintf(svalue, MBR_MAX_VALUE_LENGTH, "%u", value); }