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); } } }
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); }
public void Connect() { Send(Tpkt.WrapHeader(TpduCr.WrapHeader(CreateCotpParams()))); }