Example #1
0
        public IEnumerable <byte[]> RemoveUpperProtocolFrame(byte[] rxData, int count)
        {
            var dataPackets = new List <byte[]>();

            _tpktBuffer = _tpktBuffer.Concat(rxData.Take(count)).ToArray();

            while (true)
            {
                var length = Tpkt.Length(_tpktBuffer);
                if (length <= 0)
                {
                    Thread.Sleep(1);
                    return(dataPackets);
                }

                if (_tpktBuffer.Length < length)
                {
                    return(dataPackets);
                }

                var packet = HandleTpkt(_tpktBuffer.Take(length).ToArray());
                if (packet == null)
                {
                    Thread.Sleep(1);
                }
                dataPackets.Add(packet);

                _tpktBuffer = _tpktBuffer.Skip(length).ToArray();
                if (_tpktBuffer.Length <= 0)
                {
                    return(dataPackets);
                }
            }
        }
Example #2
0
        public byte[] AddUpperProtocolFrame(byte[] txData)
        {
            var frameSize = 1 << SizeTpduSending;
            var b         = new byte[] { };

            do
            {
                // Take a frame
                var frame = txData.Take(frameSize).ToArray();
                txData = txData.Skip(frameSize).ToArray();

                b = b.Concat(Tpkt.WrapHeader((new byte[]
                {
                    0x02,   // Header Length -> sizeof DT -1
                    TpduDt.PduType,
                    (byte)(txData.Length > 0 ? 0x00 : TpdtDtEotFlag)
                }).Concat(frame).ToArray())).ToArray();
            } while (txData.Length > 0);
            return(b);
        }
Example #3
0
 public void Connect()
 {
     Send(Tpkt.WrapHeader(TpduCr.WrapHeader(CreateCotpParams())));
 }