Beispiel #1
0
        public void ReadProperties(Device device, List <Property> properties)
        {
            Property property = new Property();

            property.Tag = BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_ENUMERATED;
            if (!BACStack.SendReadProperty(
                    device,
                    device.Instance,
                    0, // Array[0] is Object Count
                    BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_DEVICE,
                    BACnetEnums.BACNET_PROPERTY_ID.PROP_OBJECT_LIST,
                    property))
            {
                return;
            }

            if (property.Tag != BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_UNSIGNED_INT)
            {
                return;
            }

            int  i, tries;
            uint total = property.ValueUInt;

            properties.Clear();
            if (total > 0)
            {
                for (i = 1; i <= total; i++)
                {
                    // Read through Array[x] up to Object Count
                    // Need to try the read again if it times out
                    tries = 0;
                    while (tries < 5)
                    {
                        Console.WriteLine("Device : {0} , Property : {1}", device.ServerEP.Address.ToString(), i);

                        tries++;
                        if (BACStack.SendReadProperty(
                                device,
                                device.Instance,
                                i, // each array index
                                BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_DEVICE,
                                BACnetEnums.BACNET_PROPERTY_ID.PROP_OBJECT_LIST,
                                property))
                        {
                            tries = 5; // Next object
                            if (property.Tag != BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_OBJECT_ID)
                            {
                                tries = 5; // continue;
                            }
                            properties.Add(property);

                            Console.WriteLine(property.ValueObjectInstance);
                        }
                    }
                }
            }
        }
Beispiel #2
0
        private void GetObjectsBtn_Click(object sender, EventArgs e)
        {
            // Read the Device Array
            ObjectListLabel.Text = "";
            Property property = new Property();

            property.Tag = BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_ENUMERATED;
            if (!BACStack.SendReadProperty(
                    BACnetData.DeviceIndex,
                    BACnetData.Devices[BACnetData.DeviceIndex].Instance,
                    0, // Array[0] is Object Count
                    BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_DEVICE,
                    BACnetEnums.BACNET_PROPERTY_ID.PROP_OBJECT_LIST,
                    property))
            {
                ObjectListLabel.Text = "Read Property Object List Error (1)";
                return;
            }

            if (property.Tag != BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_UNSIGNED_INT)
            {
                ObjectListLabel.Text = "Read Property Object List Error (2)";
                return;
            }

            ObjectListLabel.Text = property.ValueUInt.ToString() + " objects found";

            int  i, tries;
            uint total = property.ValueUInt;

            ObjectList.Items.Clear();
            if (total > 0)
            {
                for (i = 1; i <= total; i++)
                {
                    // Read through Array[x] up to Object Count
                    // Need to try the read again if it times out
                    tries = 0;
                    while (tries < 5)
                    {
                        tries++;
                        if (BACStack.SendReadProperty(
                                BACnetData.DeviceIndex,
                                BACnetData.Devices[BACnetData.DeviceIndex].Instance,
                                i, // each array index
                                BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_DEVICE,
                                BACnetEnums.BACNET_PROPERTY_ID.PROP_OBJECT_LIST,
                                property))
                        {
                            tries = 5; // Next object
                            string s;
                            if (property.Tag != BACnetEnums.BACNET_APPLICATION_TAG.BACNET_APPLICATION_TAG_OBJECT_ID)
                            {
                                tries = 5; // continue;
                            }
                            switch (property.ValueObjectType)
                            {
                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_DEVICE: s = "Device"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_ANALOG_INPUT: s = "Analog Input"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_ANALOG_OUTPUT: s = "Analog Output"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_ANALOG_VALUE: s = "Analog value"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_BINARY_INPUT: s = "Binary Input"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_BINARY_OUTPUT: s = "Binary Output"; break;

                            case BACnetEnums.BACNET_OBJECT_TYPE.OBJECT_BINARY_VALUE: s = "Binary value"; break;

                            default: s = "Other"; break;
                            }
                            s = s + "  " + property.ValueObjectInstance.ToString();
                            ObjectList.Items.Add(s);
                        }
                    }
                }
            }
        }