From e51599cca64b940a76f9b3cfa258abfc8eba7242 Mon Sep 17 00:00:00 2001 From: Marcos Pereira Date: Thu, 18 Feb 2016 17:22:29 +0000 Subject: [PATCH] "fix Issue #38: now read and write bytes handles address overflow correctly. Signed-off-by: Michele Cattafesta " --- S7.Net.Core/PLC.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/S7.Net.Core/PLC.cs b/S7.Net.Core/PLC.cs index 78c8ebf..7936417 100644 --- a/S7.Net.Core/PLC.cs +++ b/S7.Net.Core/PLC.cs @@ -243,8 +243,9 @@ namespace S7.Net package.Add(Types.Word.ToByteArray((ushort) (count))); package.Add(Types.Word.ToByteArray((ushort) (DB))); package.Add((byte) dataType); - package.Add((byte) 0); - switch (dataType) + var overflow = (int)(startByteAdr * 8 / 0xffffU); // handles words with address bigger than 8191 + package.Add((byte)overflow); + switch (dataType) { case DataType.Timer: case DataType.Counter: @@ -552,7 +553,8 @@ namespace S7.Net package.Add(Types.Word.ToByteArray((ushort)varCount)); package.Add(Types.Word.ToByteArray((ushort)(db))); package.Add((byte)dataType); - package.Add((byte)0); + var overflow = (int)(startByteAdr * 8 / 0xffffU); // handles words with address bigger than 8191 + package.Add((byte)overflow); package.Add(Types.Word.ToByteArray((ushort)(startByteAdr * 8))); package.Add(new byte[] { 0, 4 }); package.Add(Types.Word.ToByteArray((ushort)(varCount * 8)));