public Pdu(byte[] recievedPdu) { int Type = recievedPdu[1]; pduHeaderLen = (Type == 2 || Type == 3) ? 12 : 10; byte[] array = new byte[pduHeaderLen]; Array.Copy(recievedPdu, 0, array, 0, pduHeaderLen); header = EndianessMarshaler.BytesToStruct <PDUHeader>(array); Param = new List <byte>(); array = new byte[header.plen]; Array.Copy(recievedPdu, pduHeaderLen, array, 0, header.plen); Param.AddRange(array); Data = new List <byte>(); array = new byte[header.dlen]; header.dlen = (ushort)Math.Min(header.dlen, recievedPdu.Length - pduHeaderLen - header.plen);//for OLD PLC: recievedPdu.Length = 400, header.dlen = 448 Array.Copy(recievedPdu, pduHeaderLen + header.plen, array, 0, header.dlen); Data.AddRange(array); UData = new List <byte>(); initUData(); }
public Pdu(byte[] recievedPdu) { int Type = recievedPdu[1]; pduHeaderLen = (Type == 2 || Type == 3) ? 12 : 10; byte[] array = new byte[pduHeaderLen]; Array.Copy(recievedPdu, 0, array, 0, pduHeaderLen); header = EndianessMarshaler.BytesToStruct <PDUHeader>(array); Param = new List <byte>(); array = new byte[header.plen]; Array.Copy(recievedPdu, pduHeaderLen, array, 0, header.plen); Param.AddRange(array); Data = new List <byte>(); array = new byte[header.dlen]; Array.Copy(recievedPdu, pduHeaderLen + header.plen, array, 0, header.dlen); Data.AddRange(array); UData = new List <byte>(); }