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)); }
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)); }
/// <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)); }
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)); }
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)); }