private Task ReceivedWriteJobAck(Memory <byte> buffer) { var data = S7WriteJobAckDatagram.TranslateFromMemory(buffer); if (_writeHandler.TryGetValue(data.Header.Header.ProtocolDataUnitReference, out var cbh)) { cbh.Event.Set(data.Data); } return(Task.CompletedTask); }
private async Task SendWriteJobAck(List <WriteResultItem> writeItems, ushort id) { using (var dgmem = S7WriteJobAckDatagram.TranslateToMemory(S7WriteJobAckDatagram.Build(_s7Context, id, writeItems), out var commemLength)) { using (var sendData = _transport.Build(dgmem.Memory.Slice(0, commemLength), out var sendLength)) { var result = await _transport.Connection.SendAsync(sendData.Memory.Slice(0, sendLength)).ConfigureAwait(false); if (result == SocketError.Success) { // ok } } } }
private void ReceivedWriteJobAck(Memory <byte> buffer) { var data = S7WriteJobAckDatagram.TranslateFromMemory(buffer); if (_writeHandler.TryGetValue(data.Header.Header.ProtocolDataUnitReference, out var cbh)) { if (data.Header.Error.ErrorClass != 0) { _logger?.LogError("Error while writing data for reference {0}. ErrorClass: {1} ErrorCode:{2}", data.Header.Header.ProtocolDataUnitReference, data.Header.Error.ErrorClass, data.Header.Error.ErrorCode); cbh.Exception = new Dacs7Exception(data.Header.Error.ErrorClass, data.Header.Error.ErrorCode); } if (data.Data == null) { _logger?.LogWarning("No data from write ack received for reference {0}", data.Header.Header.ProtocolDataUnitReference); } cbh.Event.Set(data.Data); } else { _logger?.LogWarning("No write handler found for received write ack reference {0}", data.Header.Header.ProtocolDataUnitReference); } }