From a1b09493235511bd02d8053c15e9309d17f4b646 Mon Sep 17 00:00:00 2001 From: Bjorn Van Tilt Date: Tue, 9 May 2023 08:55:23 +0200 Subject: [PATCH] RX Buffer was being cleared with correct data in it. --- EasyModbus/ModbusClient.cs | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/EasyModbus/ModbusClient.cs b/EasyModbus/ModbusClient.cs index b9e0285..68729de 100644 --- a/EasyModbus/ModbusClient.cs +++ b/EasyModbus/ModbusClient.cs @@ -922,7 +922,7 @@ public bool[] ReadDiscreteInputs(int startingAddress, int quantity) bytesToRead = 5 + quantity / 8; else bytesToRead = 6 + quantity / 8; - // serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -937,8 +937,6 @@ public bool[] ReadDiscreteInputs(int startingAddress, int quantity) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -1118,7 +1116,7 @@ public bool[] ReadCoils(int startingAddress, int quantity) bytesToRead = 5 + quantity/8; else bytesToRead = 6 + quantity/8; - // serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -1133,8 +1131,6 @@ public bool[] ReadCoils(int startingAddress, int quantity) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -1311,7 +1307,7 @@ public int[] ReadHoldingRegisters(int startingAddress, int quantity) { dataReceived = false; bytesToRead = 5 + 2 * quantity; -// serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -1326,9 +1322,6 @@ public int[] ReadHoldingRegisters(int startingAddress, int quantity) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; - DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -1515,9 +1508,7 @@ public int[] ReadInputRegisters(int startingAddress, int quantity) { dataReceived = false; bytesToRead = 5 + 2 * quantity; - - - // serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -1532,8 +1523,6 @@ public int[] ReadInputRegisters(int startingAddress, int quantity) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -1720,7 +1709,7 @@ public void WriteSingleCoil(int startingAddress, bool value) { dataReceived = false; bytesToRead = 8; - // serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -1735,8 +1724,6 @@ public void WriteSingleCoil(int startingAddress, bool value) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -1902,7 +1889,7 @@ public void WriteSingleRegister(int startingAddress, int value) { dataReceived = false; bytesToRead = 8; -// serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, 8); if (debug) { @@ -1917,8 +1904,6 @@ public void WriteSingleRegister(int startingAddress, int value) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -2101,7 +2086,7 @@ public void WriteMultipleCoils(int startingAddress, bool[] values) { dataReceived = false; bytesToRead = 8; - // serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, data.Length - 6); if (debug) { @@ -2116,8 +2101,6 @@ public void WriteMultipleCoils(int startingAddress, bool[] values) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -2288,7 +2271,7 @@ public void WriteMultipleRegisters(int startingAddress, int[] values) { dataReceived = false; bytesToRead = 8; -// serialport.ReceivedBytesThreshold = bytesToRead; + readBuffer = new byte[256]; serialport.Write(data, 6, data.Length - 6); if (debug) @@ -2304,8 +2287,6 @@ public void WriteMultipleRegisters(int startingAddress, int[] values) SendDataChanged(this); } - data = new byte[2100]; - readBuffer = new byte[256]; DateTime dateTimeSend = DateTime.Now; byte receivedUnitIdentifier = 0xFF; @@ -2495,8 +2476,8 @@ public int[] ReadWriteMultipleRegisters(int startingAddressRead, int quantityRea if (serialport != null) { dataReceived = false; + readBuffer = new byte[256]; bytesToRead = 5 + 2*quantityRead; - // serialport.ReceivedBytesThreshold = bytesToRead; serialport.Write(data, 6, data.Length - 6); if (debug) {