public static Memory <byte> TranslateToMemory(S7WriteJobAckDatagram datagram) { var result = S7AckDataDatagram.TranslateToMemory(datagram.Header); var span = result.Span; var offset = datagram.Header.Header.GetHeaderSize(); span[offset++] = datagram.Function; span[offset++] = datagram.ItemCount; foreach (var item in datagram.Data) { S7DataItemWriteResult.TranslateToMemory(item, result.Slice(offset)); offset += item.GetSpecificationLength(); } return(result); }
public static IMemoryOwner <byte> TranslateToMemory(S7WriteJobAckDatagram datagram, out int memoryLength) { var result = S7AckDataDatagram.TranslateToMemory(datagram.Header, out memoryLength); var take = memoryLength - datagram.Header.GetParameterOffset(); var mem = result.Memory.Slice(datagram.Header.GetParameterOffset(), take); var span = mem.Span; var offset = 0; span[offset++] = datagram.Function; span[offset++] = datagram.ItemCount; foreach (var item in datagram.Data) { S7DataItemWriteResult.TranslateToMemory(item, mem.Slice(offset)); offset += item.GetSpecificationLength(); } return(result); }