Esempio n. 1
0
        /// <summary>
        /// Adds a new subscription item to the configuration.
        /// </summary>
        private void AddItemToSubscription(ServerNodeTag serverNodeTag)
        {
            // create new monitored item
            ItemConfig itemConfig = new()
            {
                NodeID      = serverNodeTag.NodeIdStr,
                DisplayName = serverNodeTag.DisplayName,
                TagCode     = GetTagCode(serverNodeTag),
                Tag         = new ItemConfigTag(0)
            };

            if (GetDataTypeName(serverNodeTag.NodeId, out string dataTypeName))
            {
                itemConfig.DataTypeName = dataTypeName;
            }

            // find subscription
            TreeNode deviceNode       = tvDevice.SelectedNode;
            TreeNode subscriptionNode = deviceNode?.FindClosest(typeof(SubscriptionConfig)) ??
                                        subscriptionsNode.LastNode;
            SubscriptionConfig subscriptionConfig;

            // add new subscription
            if (subscriptionNode == null)
            {
                subscriptionConfig = new SubscriptionConfig();
                subscriptionNode   = CreateSubscriptionNode(subscriptionConfig);
                tvDevice.Insert(subscriptionsNode, subscriptionNode,
                                deviceConfig.Subscriptions, subscriptionConfig);
            }
            else
            {
                subscriptionConfig = (SubscriptionConfig)subscriptionNode.Tag;
            }

            // add monitored item
            TreeNode itemNode = CreateItemNode(itemConfig);

            tvDevice.Insert(subscriptionNode, itemNode, subscriptionConfig.Items, itemConfig);
            UpdateTagNums(itemNode);
            Modified = true;
        }
Esempio n. 2
0
        /// <summary>
        /// Fills the device tree.
        /// </summary>
        private void FillDeviceTree()
        {
            try
            {
                tvDevice.BeginUpdate();
                tvDevice.Nodes.Clear();

                subscriptionsNode = TreeViewUtils.CreateNode(KpPhrases.SubscriptionsNode, FolderClosedImageKey);
                commandsNode      = TreeViewUtils.CreateNode(KpPhrases.CommandsNode, FolderClosedImageKey);
                int signal = 1;

                foreach (SubscriptionConfig subscriptionConfig in deviceConfig.Subscriptions)
                {
                    TreeNode subscriptionNode = CreateSubscriptionNode(subscriptionConfig);
                    subscriptionsNode.Nodes.Add(subscriptionNode);

                    foreach (ItemConfig itemConfig in subscriptionConfig.Items)
                    {
                        subscriptionNode.Nodes.Add(CreateItemNode(itemConfig));

                        ItemConfigTag tag = new ItemConfigTag(signal, itemConfig.IsArray, itemConfig.ArrayLen);
                        signal        += tag.Length;
                        itemConfig.Tag = tag;
                    }
                }

                foreach (CommandConfig commandConfig in deviceConfig.Commands)
                {
                    commandsNode.Nodes.Add(CreateCommandNode(commandConfig));
                }

                tvDevice.Nodes.Add(subscriptionsNode);
                tvDevice.Nodes.Add(commandsNode);
                subscriptionsNode.Expand();
                commandsNode.Expand();
            }
            finally
            {
                tvDevice.EndUpdate();
            }
        }