コード例 #1
0
        public override byte[] GetData()
        {
            var nameAsBytes = Encoding.UTF8.GetBytes(Name);

            var data = new byte[16 + 16 + Address.Length + nameAsBytes.Length];

            Buffer.BlockCopy(Id.ToOrderByteArray(), 0, data, 0, 16);
            Buffer.BlockCopy(CommunityId.ToOrderByteArray(), 0, data, 16, 16);
            Buffer.BlockCopy(Address, 0, data, 32, Address.Length);
            Buffer.BlockCopy(nameAsBytes, 0, data, 32 + Address.Length, nameAsBytes.Length);

            return(data);
        }
コード例 #2
0
        public override byte[] GetData()
        {
            var choices = new List <byte[]>();

            foreach (var choice in Choices ?? Array.Empty <Choice>())
            {
                choices.Add(choice.GetData());
            }

            var nameAsBytes = Encoding.UTF8.GetBytes(Name);

            var data   = new byte[16 + 16 + nameAsBytes.Length + 1 + 8 + 8 + choices.Sum(c => c.Length)];
            var offset = 0;

            Buffer.BlockCopy(Id.ToOrderByteArray(), 0, data, offset, 16);
            offset += 16;
            Buffer.BlockCopy(CommunityId.ToOrderByteArray(), 0, data, offset, 16);
            offset += 16;
            Buffer.BlockCopy(nameAsBytes, 0, data, offset, nameAsBytes.Length);
            offset += nameAsBytes.Length;

            data[offset] = Type;
            offset      += 1;

            var time = BitConverter.GetBytes(EndTime);

            Array.Reverse(time);
            Buffer.BlockCopy(time, 0, data, offset, 8);
            offset += 8;

            foreach (var choice in choices)
            {
                Buffer.BlockCopy(choice, 0, data, offset, choice.Length);
                offset += choice.Length;
            }

            return(data);
        }