public static object GetAppTagValue(byte[] apdu, int startIndex, BacNetTag metaTag, ref int len) { object res = null; switch (metaTag.Number) { case 1: //UNSIGNED_INT var boolValue = new BacNetBool(metaTag); res = boolValue; break; case 2: //UNSIGNED_INT var uIntValue = new BacNetUInt(apdu, len, metaTag.Length, ref len); res = uIntValue; break; case 3: //SIGNED_INT var intValue = new BacNetInt(apdu, len, metaTag.Length, ref len); res = intValue; break; case 4: //REAL var realValue = new BacNetReal(apdu, len, metaTag.Length, ref len); res = realValue; break; case 5: //DOUBLE var doubleValue = new BacNetDouble(apdu, len, metaTag.Length, ref len); res = doubleValue; break; case 7: //CHARACTER STRING var str = new BacNetString(apdu, len, metaTag.Length, ref len); res = str; break; case 9: //ENUMERATION var enumValue = new BacNetEnumeration(apdu, len, metaTag.Length, ref len); res = enumValue; break; case 11: //TIME var time = new BacNetTime(apdu, len, ref len); res = time; break; case 12: //OBJECT IDENTIFIER var obj = new BacNetObject(apdu, len, ref len); res = obj; break; } return(res); }
private void StartGroup() { ArrayList values = new ArrayList(); values.Add(new BacNetReal { Value = 1 }); while (true) { if (!go) { return; } values[0] = new BacNetReal { Value = 100 }; for (int i = 0; i < _addresses.Count; i++) { Thread.Sleep(1000); string[] tmpAddr = _addresses[i].Split('.'); if (tmpAddr.Length == 2) { ushort dev = Convert.ToUInt16(tmpAddr[0]); uint num = Convert.ToUInt32(tmpAddr[1]); _device.Services.Confirmed.WriteProperty(dev, new BacNetObject { ObjectId = num, ObjectType = BacNetEnums.BACNET_OBJECT_TYPE.OBJECT_ANALOG_OUTPUT }, BacNetEnums.BACNET_PROPERTY_ID.PROP_PRESENT_VALUE, values); } } values[0] = new BacNetReal { Value = 1 }; Thread.Sleep(1000); for (int i = (_addresses.Count - 1); i >= 0; i--) { Thread.Sleep(1000); string[] tmpAddr = _addresses[i].Split('.'); if (tmpAddr.Length == 2) { ushort dev = Convert.ToUInt16(tmpAddr[0]); uint num = Convert.ToUInt32(tmpAddr[1]); _device.Services.Confirmed.WriteProperty(dev, new BacNetObject { ObjectId = num, ObjectType = BacNetEnums.BACNET_OBJECT_TYPE.OBJECT_ANALOG_OUTPUT }, BacNetEnums.BACNET_PROPERTY_ID.PROP_PRESENT_VALUE, values); } } Thread.Sleep(1000); } }