コード例 #1
0
ファイル: COTP.cs プロジェクト: Arnaud0Colin/ProtocolT125
        public override ushort Read(byte[] buf, ref ushort Index)
        {
            Size = buf[++Index];
            Size++;
            PDU = (PDU_TYPE)buf[++Index];
            if (Size > 3)
            {
                Destination = (ushort)((buf[++Index] << 8) + buf[++Index]);
                Source      = (ushort)((buf[++Index] << 8) + buf[++Index]);
                Class       = buf[++Index];
            }
            else
            {
                Class = buf[++Index];
            }

            return(Index);
        }
コード例 #2
0
ファイル: Trame.cs プロジェクト: Arnaud0Colin/ProtocolT125
        public override ushort Read(byte[] buf, ref ushort Index)
        {
            _data[0] = buf[Index + 0];
            _data[1] = buf[Index + 1];
            Size     = (ushort)((buf[Index + 2] << 8) + buf[Index + 3]);

            byte count = buf[Index + 4];

            PDU = (PDU_TYPE)buf[Index + 5];


#if DEBUG
            Debug.rr2("Trame size =" + Size.ToString() + " and count = " + count + "  PDU = " + PDU.ToString());
#endif


            Index += 3;
            if (count > 6)
            {
                _ISO = new Request_COTP();
            }
            else
            {
                _ISO = new COTP();
            }
            _ISO.Read(buf, ref Index);

            switch (PDU)
            {
            case PDU_TYPE.CONNECT_CONFIRMATION:
                _Data = new ReceiveData();
                break;

            case PDU_TYPE.DATA_INDICATION:
                if (_Data == null)
                {
                    _Data = new ReceiveData();
                }
                break;

            case PDU_TYPE.DISCONNECT_REQUEST:
                _Data = null;
                break;

            default:
                _Data = null;
                break;
            }

            int Calcul = Size - _ISO.Size - OwnSize - 1 - 3;

            if (_Data != null)
            {
                //_Data.Size = (ushort)(Size - _ISO.Size - OwnSize - 1);
                _Data.Size = (ushort)Calcul;
                _Data.Read(buf, ref Index);
            }

            _End = new byte[3];

            _End[0] = buf[Index++];
            _End[1] = buf[Index++];
            _End[2] = buf[Index++];


            return(Index);
        }