Exemple #1
0
        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
                    }
                }
            }
        }
Exemple #3
0
        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);
            }
        }