示例#1
0
        public void WriteLength(RdmBinaryWriter data)
        {
            if (messageLengthPosition < 0 || dataLengthPosition <= 0)
            {
                throw new InvalidOperationException("Packet data has not been written yet. You can not write the length until the body is written.");
            }

            MessageLength       = (byte)(data.BaseStream.Position - messageLengthPosition + 2);
            ParameterDataLength = (byte)((data.BaseStream.Position - 1) - dataLengthPosition);

            //Write Message Length
            data.BaseStream.Seek(messageLengthPosition, System.IO.SeekOrigin.Begin);
            data.Write(MessageLength);

            //Write Parameter Data Length
            data.BaseStream.Seek(dataLengthPosition, System.IO.SeekOrigin.Begin);
            data.Write(ParameterDataLength);

            //Move back to end of stream.
            data.BaseStream.Seek(0, System.IO.SeekOrigin.End);
        }
示例#2
0
        public void WriteData(RdmBinaryWriter data)
        {
            //Save position so we can write length later.
            messageLengthPosition = data.BaseStream.Position;

            data.Write(MessageLength);
            data.Write(DestinationId);
            data.Write(SourceId);
            data.Write(TransactionNumber);
            data.Write(PortOrResponseType);
            data.Write(MessageCount);
            data.WriteNetwork(SubDevice);
            data.Write((byte)Command);
            data.WriteNetwork((short)ParameterId);

            //Save position so we can write length later.
            dataLengthPosition = data.BaseStream.Position;
            data.Write(ParameterDataLength);
        }