Opc.Ua.Com.Client.ComDaGroup.CreateItem C# (CSharp) Method

CreateItem() public method

Creates the item.
public CreateItem ( string itemId, int samplingInterval, float deadband, bool active ) : GroupItem
itemId string The item id.
samplingInterval int The sampling interval.
deadband float The deadband.
active bool if set to true [active].
return GroupItem
        public GroupItem CreateItem(string itemId, int samplingInterval, float deadband, bool active)
        {
            // set the group parameters if this is the first item.
            if (m_items.Count == 0)
            {
                m_samplingInterval = samplingInterval;
                m_deadband = deadband;
            }

            // check if the item can be added to the group.
            if (m_samplingInterval != samplingInterval || m_deadband != deadband)
            {
                return null;
            }

            // create the item.
            GroupItem item = new GroupItem();

            item.ItemId = itemId;
            item.ClientHandle = Utils.IncrementIdentifier(ref m_itemCounter);
            item.ServerHandle = 0;
            item.Active = active;
            item.ActiveChanged = false;
            item.Deleted = false;
            item.Created = false;
            item.ErrorId = 0;

            lock (Lock)
            {
                m_items.Add(item);
            }

            return item;
        }

Usage Example

Ejemplo n.º 1
0
        /// <summary>
        /// Reads the item values and stores the results in the request object.
        /// </summary>
        /// <param name="requests">The requests.</param>
        private void Da20ReadItemValues(List<ReadRequest> requests)
        {
            // lock (m_groupLock)
            {
                // if (m_group == null)
                //{                
                    ComDaGroup m_group = new ComDaGroup(this, false);
                //}

                try
                {
                    int count1 = 0;
                    GroupItem[] items = new GroupItem[requests.Count];
                    ReadRequest[] addItemRequests = new ReadRequest[requests.Count];

                    // create the items in the temporary group.
                    for (int ii = 0; ii < requests.Count; ii++)
                    {
                        ReadRequest request = requests[ii];

                        if (request == null)
                        {
                            continue;
                        }

                        if (!request.ValueRequired)
                        {
                            continue;
                        }

                        // add the item.
                        items[count1] = m_group.CreateItem(request.ItemId, 0, 0, true);
                        addItemRequests[count1] = request;
                        count1++;
                    }

                    // create the items on the server.
                    m_group.ApplyChanges();

                    // build the list of values to write.
                    int count2 = 0;
                    int[] serverHandles = new int[count1];
                    ReadRequest[] readRequests = new ReadRequest[count1];

                    for (int ii = 0; ii < count1; ii++)
                    {
                        // check for error on create.
                        GroupItem item = items[ii];
                        ReadRequest request = addItemRequests[ii];

                        if (item.ErrorId < 0)
                        {
                            request.Value = new DaValue();
                            request.Value.Error = item.ErrorId;
                            continue;
                        }

                        serverHandles[count2] = item.ServerHandle;
                        readRequests[count2] = request;
                        count2++;
                    }

                    if (count2 > 0)
                    {
                        // write values to the server.
                        DaValue[] values = m_group.SyncRead(serverHandles, count2);

                        // read the values.
                        for (int ii = 0; ii < count2; ii++)
                        {
                            if (values != null && values.Length > ii)
                            {
                                readRequests[ii].Value = values[ii];
                            }
                            else
                            {
                                readRequests[ii].Value = new DaValue() { Error = ResultIds.E_FAIL, Timestamp = DateTime.UtcNow };
                            }
                        }

                        // delete the items.
                        for (int ii = 0; ii < count1; ii++)
                        {
                            GroupItem item = items[ii];

                            if (item.ErrorId >= 0)
                            {
                                m_group.RemoveItem(item);
                            }
                        }

                        m_group.ApplyChanges();
                    }
                }
                finally
                {
                    // delete the group and items.
                   m_group.Delete();
                }
            }
        }
All Usage Examples Of Opc.Ua.Com.Client.ComDaGroup::CreateItem