From 3e877cad7c3f7a3c3ec141b84173cf2c7e2bc085 Mon Sep 17 00:00:00 2001 From: Marcos Pereira Date: Wed, 9 Mar 2016 14:30:20 +0000 Subject: [PATCH] Read structs recursively on get struct size and build struct from bytes. --- S7.Net.Common/Types/Struct.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/S7.Net.Common/Types/Struct.cs b/S7.Net.Common/Types/Struct.cs index 9ecf2bf..15214b2 100644 --- a/S7.Net.Common/Types/Struct.cs +++ b/S7.Net.Common/Types/Struct.cs @@ -49,6 +49,9 @@ namespace S7.Net.Types numBytes++; numBytes += 4; break; + default: + numBytes += GetStructSize(info.FieldType); + break; } } return (int)numBytes; @@ -146,6 +149,14 @@ namespace S7.Net.Types bytes[(int)numBytes + 3] })); numBytes += 4; break; + default: + var buffer = new byte[GetStructSize(info.FieldType)]; + if (buffer.Length == 0) + continue; + Buffer.BlockCopy(bytes, (int)Math.Ceiling(numBytes), buffer, 0, buffer.Length); + info.SetValue(structValue, FromBytes(info.FieldType, buffer)); + numBytes += buffer.Length; + break; } } return structValue;