GetBytes() public method

public GetBytes ( ) : byte[]
return byte[]
示例#1
0
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();
            res.Add((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_CONFIRMED_SERVICE_REQUEST);
            res.Add((byte)84);
            res.Add(BacNetDevice.Instance.InvokeId);
            res.Add((byte)BacNetEnums.BACNET_CONFIRMED_SERVICE.SERVICE_CONFIRMED_CREATE_OBJECT);

            BacNetTag openingTag = new BacNetTag { Class = true, Length = 6, Number = 0 };
            res.AddRange(openingTag.GetBytes());

            BacNetTag objectTag = new BacNetTag { Class = true, Length = 4, Number = 1 };
            res.AddRange(objectTag.GetBytes());
            res.AddRange(NewObject.GetObjectBytes());

            BacNetTag closingTag = new BacNetTag { Class = true, Length = 7, Number = 0 };
            res.AddRange(closingTag.GetBytes());

            objectTag.Class = false;
            objectTag.Number = 0;

            openingTag.Number = 1;
            res.AddRange(openingTag.GetBytes());

            openingTag.Number = 2;
            closingTag.Number = 2;

            foreach (BacNetProperty property in NewObject.Properties)
            {
                BacNetTag propertyIdTag = new BacNetTag { Class = true, Length = (byte)property.PropertyId.GetLength(), Number = 0 };
                res.AddRange(propertyIdTag.GetBytes());
                res.AddRange(property.PropertyId.GetBytes());

                res.AddRange(openingTag.GetBytes());

                BacNetTag metaTag = new BacNetTag();
                foreach (var value in property.Values)
                {
                    int type;
                    byte[] valueBytes = ByteConverter.GetPropertyValueBytes(value, out type);
                    metaTag = new BacNetTag { Class = false, Length = (byte)valueBytes.Length, Number = (byte)type, LongTag = true };
                    res.AddRange(metaTag.GetBytes());
                    res.AddRange(valueBytes);
                }

                res.AddRange(closingTag.GetBytes());
            }

            closingTag.Number = 1;
            res.AddRange(closingTag.GetBytes());

            return (byte[])res.ToArray(typeof(byte));
        }
示例#2
0
文件: WhoIs.cs 项目: kib357/BACsharp
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();

            res.Add((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST);
            res.Add((byte)BacNetEnums.BACNET_UNCONFIRMED_SERVICE.SERVICE_UNCONFIRMED_WHO_IS);

            if (LowLimit != null && HighLimit != null)
            {
                //Low limit
                BacNetTag lowLimitTag = new BacNetTag { Class = true, Length = (byte)LowLimit.GetLength(), Number = 0 };
                res.AddRange(lowLimitTag.GetBytes());
                res.AddRange(LowLimit.GetBytes());

                //High limit
                BacNetTag highLimitTag = new BacNetTag { Class = true, Length = (byte)HighLimit.GetLength(), Number = 1 };
                res.AddRange(highLimitTag.GetBytes());
                res.AddRange(HighLimit.GetBytes());
            }

            return (byte[]) res.ToArray(typeof (byte));
        }
示例#3
0
        /// <summary>
        /// todo: реализовать выбор свойства для отправки
        /// </summary>
        /// <returns></returns>
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();

            res.Add((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_COMPLEX_ACK);
            res.Add(InvokeId);
            res.Add((byte)BacNetEnums.BACNET_CONFIRMED_SERVICE.SERVICE_CONFIRMED_READ_PROPERTY);

            //Object ID
            BacNetTag objectTag = new BacNetTag { Class = true, Length = 4, Number = 0 };
            res.AddRange(objectTag.GetBytes());
            res.AddRange(Obj.GetObjectBytes());

            //Max APDU
            BacNetTag propertyIdTag = new BacNetTag { Class = true, Length = (byte)Obj.Properties[0].PropertyId.GetLength(), Number = 1 };
            res.AddRange(propertyIdTag.GetBytes());
            res.AddRange(Obj.Properties[0].PropertyId.GetBytes());

            /*if (ArrayIndex != null)
            {
                BacNetTag arrayIndexTag = new BacNetTag { Class = true, Length = (byte)ArrayIndex.GetLength(), Number = 2 };
                res.AddRange(arrayIndexTag.GetBytes());
                res.AddRange(ArrayIndex.GetBytes());
            }*/

            return (byte[])res.ToArray(typeof(byte));
        }
示例#4
0
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();

            res.Add((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_CONFIRMED_SERVICE_REQUEST);
            res.Add((byte)3);

            res.Add((byte)InvokeId);
            res.Add((byte)BacNetEnums.BACNET_CONFIRMED_SERVICE.SERVICE_CONFIRMED_WRITE_PROPERTY);

            //Object ID
            BacNetTag objectTag = new BacNetTag { Class = true, Length = 4, Number = 0 };
            res.AddRange(objectTag.GetBytes());
            res.AddRange(ObjectId.GetObjectBytes());

            //Property ID
            BacNetTag propertyIdTag = new BacNetTag { Class = true, Length = (byte)PropertyId.GetLength(), Number = 1 };
            res.AddRange(propertyIdTag.GetBytes());
            res.AddRange(PropertyId.GetBytes());

            if (ArrayIndex != null)
            {
                BacNetTag arrayIndexTag = new BacNetTag { Class = true, Length = (byte)ArrayIndex.GetLength(), Number = 2 };
                res.AddRange(arrayIndexTag.GetBytes());
                res.AddRange(ArrayIndex.GetBytes());
            }

            //Opening Tag
            BacNetTag openingTag = new BacNetTag { Class = true, Length = 6, Number = 3 };
            res.AddRange(openingTag.GetBytes());

            BacNetTag metaTag = new BacNetTag();
            foreach (var value in ValueList)
            {
                int type;
                byte[] valueBytes = ByteConverter.GetPropertyValueBytes(value, out type);
                if (type != 0)
                {
                    metaTag = new BacNetTag {Class = false, Length = (byte) valueBytes.Length, Number = (byte) type};
                    res.AddRange(metaTag.GetBytes());
                }
                res.AddRange(valueBytes);
            }

            //Closing Tag
            BacNetTag closingTag = new BacNetTag { Class = true, Length = 7, Number = 3 };
            res.AddRange(closingTag.GetBytes());

            BacNetTag priorityTag = new BacNetTag {Class = true, Number = 4, Length = 1};
            res.AddRange(priorityTag.GetBytes());
            res.Add((byte)0xA);

            return (byte[])res.ToArray(typeof(byte));
        }
示例#5
0
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();

            res.Add((byte)((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_CONFIRMED_SERVICE_REQUEST | (1 << 1)));
            res.Add((byte)84);

            res.Add((byte)InvokeId);
            res.Add((byte)BacNetEnums.BACNET_CONFIRMED_SERVICE.SERVICE_CONFIRMED_READ_PROP_MULTIPLE);

            //Object ID
            foreach (BacNetObject obj in ObjectList)
            {
                BacNetTag objectTag = new BacNetTag { Class = true, Length = 4, Number = 0 };
                res.AddRange(objectTag.GetBytes());
                res.AddRange(obj.GetObjectBytes());
                BacNetTag openingTag = new BacNetTag{Class = true, Length = 6, Number = 1};
                res.AddRange(openingTag.GetBytes());
                foreach (BacNetProperty property in obj.Properties)
                {
                    //Property ID
                    BacNetTag propertyIdTag = new BacNetTag { Class = true, Length = (byte)property.PropertyId.GetLength(), Number = 0 };
                    res.AddRange(propertyIdTag.GetBytes());
                    res.AddRange(property.PropertyId.GetBytes());
                }
                BacNetTag closingTag = new BacNetTag { Class = true, Length = 7, Number = 1 };
                res.AddRange(closingTag.GetBytes());
            }
            return (byte[])res.ToArray(typeof(byte));
        }