From 6c0271e70c040c0bef8ebc7db693db3faa31a05a Mon Sep 17 00:00:00 2001 From: atef Date: Fri, 13 Feb 2026 09:36:49 +0100 Subject: [PATCH] update Modbus Library to achieve clear buffers regularly --- csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs | 1 + csharp/Lib/Protocols/Modbus/Slaves/ModbusDevice.cs | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs b/csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs index acb13d413..35dfe08f5 100644 --- a/csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs +++ b/csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs @@ -36,4 +36,5 @@ public abstract class ModbusClient SlaveId = slaveId; Endian = endian; } + } \ No newline at end of file diff --git a/csharp/Lib/Protocols/Modbus/Slaves/ModbusDevice.cs b/csharp/Lib/Protocols/Modbus/Slaves/ModbusDevice.cs index b8c332943..d8ba2cabc 100644 --- a/csharp/Lib/Protocols/Modbus/Slaves/ModbusDevice.cs +++ b/csharp/Lib/Protocols/Modbus/Slaves/ModbusDevice.cs @@ -8,10 +8,12 @@ namespace InnovEnergy.Lib.Protocols.Modbus.Slaves; public class ModbusDevice<[DynamicallyAccessedMembers(All)] R> where R : notnull { private readonly IReadOnlyList> _Batches; + private readonly ModbusClient _modbusClient; public ModbusDevice(ModbusClient modbusClient, Int32 addressOffset = 0) { _Batches = modbusClient.MakeBatchesFor(addressOffset); + _modbusClient = modbusClient; } public R Read() @@ -40,6 +42,7 @@ public class ModbusDevice<[DynamicallyAccessedMembers(All)] R> where R : notnull //Console.WriteLine($"Reading { _Batches.Count } Modbus batches."); foreach (var batch in _Batches) { + _modbusClient.Channel.ClearBuffers(); batch.Read(record); //Thread.Sleep(30); // this added mainly for Growatt reading } @@ -50,6 +53,7 @@ public class ModbusDevice<[DynamicallyAccessedMembers(All)] R> where R : notnull { foreach (var batch in _Batches) { + _modbusClient.Channel.ClearBuffers(); batch.Write(record); //Thread.Sleep(50); // this added mainly for Growatt reading }