Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }