mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-29 13:46:37 +00:00
Added returning of modbus error codes to TCP client
https://github.com/arendst/Tasmota/issues/9586#issuecomment-1225437630
This commit is contained in:
parent
5f86569a9f
commit
2926a66fe0
@ -240,13 +240,6 @@ void ModbusBridgeHandle(void)
|
|||||||
buffer = (uint8_t *)malloc(9 + (modbusBridge.dataCount * 2)); // Addres(1), Function(1), Length(1), Data(1..n), CRC(2)
|
buffer = (uint8_t *)malloc(9 + (modbusBridge.dataCount * 2)); // Addres(1), Function(1), Length(1), Data(1..n), CRC(2)
|
||||||
uint32_t error = tasmotaModbus->ReceiveBuffer(buffer, modbusBridge.dataCount);
|
uint32_t error = tasmotaModbus->ReceiveBuffer(buffer, modbusBridge.dataCount);
|
||||||
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
AddLog(LOG_LEVEL_DEBUG, PSTR("MBS: MBR Driver receive error %d"), error);
|
|
||||||
free(buffer);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_MODBUS_BRIDGE_TCP
|
#ifdef USE_MODBUS_BRIDGE_TCP
|
||||||
for (uint32_t i = 0; i < nitems(modbusBridgeTCP.client_tcp); i++)
|
for (uint32_t i = 0; i < nitems(modbusBridgeTCP.client_tcp); i++)
|
||||||
{
|
{
|
||||||
@ -261,7 +254,15 @@ void ModbusBridgeHandle(void)
|
|||||||
header[3] = 0;
|
header[3] = 0;
|
||||||
header[6] = buffer[0]; // Send slave address
|
header[6] = buffer[0]; // Send slave address
|
||||||
header[7] = buffer[1]; // Send function code
|
header[7] = buffer[1]; // Send function code
|
||||||
if (buffer[1] <= 4)
|
if (error)
|
||||||
|
{
|
||||||
|
header[4] = 0; // Message Length Hi-Byte
|
||||||
|
header[5] = 3; // Message Length Low-Byte
|
||||||
|
header[8] = error;
|
||||||
|
nrOfBytes += 1;
|
||||||
|
client.write(header, 9);
|
||||||
|
}
|
||||||
|
else if (buffer[1] <= 4)
|
||||||
{
|
{
|
||||||
header[4] = ((modbusBridge.dataCount * 2) + 3) >> 8;
|
header[4] = ((modbusBridge.dataCount * 2) + 3) >> 8;
|
||||||
header[5] = (modbusBridge.dataCount * 2) + 3;
|
header[5] = (modbusBridge.dataCount * 2) + 3;
|
||||||
@ -285,6 +286,13 @@ void ModbusBridgeHandle(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
AddLog(LOG_LEVEL_DEBUG, PSTR("MBS: MBR Driver receive error %d"), error);
|
||||||
|
free(buffer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ModbusBridgeError errorcode = ModbusBridgeError::noerror;
|
ModbusBridgeError errorcode = ModbusBridgeError::noerror;
|
||||||
if (modbusBridge.deviceAddress == 0)
|
if (modbusBridge.deviceAddress == 0)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user