public static S7ReadJobAckDatagram TranslateFromMemory(Memory <byte> data) { var span = data.Span; var result = new S7ReadJobAckDatagram { Header = S7AckDataDatagram.TranslateFromMemory(data), }; var offset = result.Header.GetParameterOffset(); result.Function = span[offset++]; result.ItemCount = span[offset++]; for (var i = 0; i < result.ItemCount; i++) { var res = S7DataItemSpecification.TranslateFromMemory(data.Slice(offset)); result.Data.Add(res); offset += res.GetSpecificationLength(); if (offset % 2 != 0) { offset++; } } return(result); }
public static S7WriteJobDatagram TranslateFromMemory(Memory <byte> data) { var span = data.Span; var result = new S7WriteJobDatagram { Header = S7HeaderDatagram.TranslateFromMemory(data), }; var offset = result.Header.GetHeaderSize(); result.Function = span[offset++]; result.ItemCount = span[offset++]; for (var i = 0; i < result.ItemCount; i++) { var res = S7AddressItemSpecificationDatagram.TranslateFromMemory(data.Slice(offset)); result.Items.Add(res); offset += res.GetSpecificationLength(); } for (var i = 0; i < result.ItemCount; i++) { var res = S7DataItemSpecification.TranslateFromMemory(data.Slice(offset)); result.Data.Add(res); offset += res.GetSpecificationLength(); } return(result); }