Exemple #1
0
        public static Memory <byte> TranslateToMemory(S7CommSetupDatagram datagram)
        {
            var result = S7HeaderDatagram.TranslateToMemory(datagram.Header);

            S7CommSetupParameterDatagram.TranslateToMemory(datagram.Parameter, result.Slice(datagram.Header.GetHeaderSize()));
            return(result);
        }
        public static IMemoryOwner <byte> TranslateToMemory(S7CommSetupDatagram datagram, out int memoryLength)
        {
            var result = S7HeaderDatagram.TranslateToMemory(datagram.Header, out memoryLength);
            var take   = memoryLength - datagram.Header.GetHeaderSize();

            S7CommSetupParameterDatagram.TranslateToMemory(datagram.Parameter, result.Memory.Slice(datagram.Header.GetHeaderSize(), take));
            return(result);
        }
        public static S7CommSetupDatagram TranslateFromMemory(Memory <byte> data)
        {
            var result = new S7CommSetupDatagram
            {
                Header = S7HeaderDatagram.TranslateFromMemory(data)
            };

            result.Parameter = S7CommSetupParameterDatagram.TranslateFromMemory(data.Slice(result.Header.GetHeaderSize()));
            return(result);
        }
        public bool Correlate(S7CommSetupDatagram o1, S7CommSetupAckDataDatagram o2)
        {
            //Test ack
            if (o1.Header.RedundancyIdentification == o2.Header.Header.RedundancyIdentification)
            {
                return(true);
            }

            return(false);
        }
Exemple #5
0
        public static S7CommSetupDatagram Build(SiemensPlcProtocolContext context)
        {
            //TODO we need a parameter for the UnitId
            var result = new S7CommSetupDatagram
            {
                Parameter = new S7CommSetupParameterDatagram
                {
                    MaxAmQCalling = context.MaxParallelJobs,
                    MaxAmQCalled  = context.MaxParallelJobs,
                    PduLength     = context.PduSize
                }
            };

            return(result);
        }
        public static S7CommSetupDatagram Build(SiemensPlcProtocolContext context, int id)
        {
            //TODO we need a parameter for the UnitId
            var result = new S7CommSetupDatagram
            {
                Parameter = new S7CommSetupParameterDatagram
                {
                    MaxAmQCalling = context.MaxAmQCalling,
                    MaxAmQCalled  = context.MaxAmQCalled,
                    PduLength     = context.PduSize
                }
            };

            result.Header.ProtocolDataUnitReference = (ushort)id;
            return(result);
        }
        public static S7CommSetupAckDataDatagram BuildFrom(SiemensPlcProtocolContext context, S7CommSetupDatagram incoming, int id)
        {
            context.MaxAmQCalling = Math.Min(incoming.Parameter.MaxAmQCalling, context.MaxAmQCalling);
            context.MaxAmQCalled  = Math.Min(incoming.Parameter.MaxAmQCalled, context.MaxAmQCalled);
            context.PduSize       = Math.Min(incoming.Parameter.PduLength, context.PduSize);


            //TODO we need a parameter for the UnitId
            var result = new S7CommSetupAckDataDatagram
            {
                Parameter = new S7CommSetupParameterDatagram
                {
                    MaxAmQCalling = context.MaxAmQCalling,
                    MaxAmQCalled  = context.MaxAmQCalled,
                    PduLength     = context.PduSize
                }
            };

            result.Header.Header.ProtocolDataUnitReference = (ushort)id;
            result.Header.Header.ParamLength = 8;
            return(result);
        }