diff --git a/S7.Net/PLCHelpers.cs b/S7.Net/PLCHelpers.cs index b701863..1668e08 100644 --- a/S7.Net/PLCHelpers.cs +++ b/S7.Net/PLCHelpers.cs @@ -1,4 +1,5 @@ using S7.Net.Helper; +using S7.Net.Protocol.S7; using S7.Net.Types; using System; using System.Collections.Generic; @@ -243,7 +244,7 @@ namespace S7.Net } } - private static byte[] BuildReadRequestPackage(IList dataItems) + private static byte[] BuildReadRequestPackage(IList dataItems) { int packageSize = 19 + (dataItems.Count * 12); var package = new System.IO.MemoryStream(packageSize); diff --git a/S7.Net/PlcAsynchronous.cs b/S7.Net/PlcAsynchronous.cs index 9bd57de..b6b49c6 100644 --- a/S7.Net/PlcAsynchronous.cs +++ b/S7.Net/PlcAsynchronous.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using S7.Net.Protocol; using System.IO; using System.Threading; +using S7.Net.Protocol.S7; namespace S7.Net { @@ -262,7 +263,7 @@ namespace S7.Net try { - var dataToSend = BuildReadRequestPackage(dataItems.Select(d=> new DataRequestItem(d)).ToList()); + var dataToSend = BuildReadRequestPackage(dataItems.Select(d => DataItem.GetDataItemAddress(d)).ToList()); await stream.WriteAsync(dataToSend, 0, dataToSend.Length); var s7data = await COTP.TSDU.ReadAsync(stream, cancellationToken); @@ -435,7 +436,7 @@ namespace S7.Net { var stream = GetStreamIfAvailable(); - var dataToSend = BuildReadRequestPackage(new [] { new DataRequestItem(dataType, db, startByteAdr, count)}); + var dataToSend = BuildReadRequestPackage(new [] { new DataItemAddress(dataType, db, startByteAdr, count)}); await stream.WriteAsync(dataToSend, 0, dataToSend.Length, cancellationToken); var s7data = await COTP.TSDU.ReadAsync(stream, cancellationToken); diff --git a/S7.Net/DataRequestItem.cs b/S7.Net/Protocol/S7/DataItemAddress.cs similarity index 69% rename from S7.Net/DataRequestItem.cs rename to S7.Net/Protocol/S7/DataItemAddress.cs index 6b27c85..cf37382 100644 --- a/S7.Net/DataRequestItem.cs +++ b/S7.Net/Protocol/S7/DataItemAddress.cs @@ -1,11 +1,11 @@ - -using S7.Net.Types; - -namespace S7.Net +namespace S7.Net.Protocol.S7 { - internal class DataRequestItem + /// + /// Represents an area of memory in the PLC + /// + internal class DataItemAddress { - public DataRequestItem(DataType dataType, int db, int startByteAddress, int byteLength) + public DataItemAddress(DataType dataType, int db, int startByteAddress, int byteLength) { DataType = dataType; DB = db; @@ -13,11 +13,6 @@ namespace S7.Net ByteLength = byteLength; } - public DataRequestItem(DataItem dataItem) - : this(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, Plc.VarTypeToByteLength(dataItem.VarType, dataItem.Count)) - { - - } /// /// Memory area to read diff --git a/S7.Net/Types/DataItem.cs b/S7.Net/Types/DataItem.cs index c944ffa..254eab3 100644 --- a/S7.Net/Types/DataItem.cs +++ b/S7.Net/Types/DataItem.cs @@ -1,4 +1,5 @@ -using System; +using S7.Net.Protocol.S7; +using System; namespace S7.Net.Types { @@ -94,5 +95,10 @@ namespace S7.Net.Types return dataItem; } + + internal static DataItemAddress GetDataItemAddress(DataItem dataItem) + { + return new DataItemAddress(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, Plc.VarTypeToByteLength(dataItem.VarType, dataItem.Count)); + } } }