Beispiel #1
0
        public OpcGroup AddGroup(string groupName)
        {
            OpcGroup _group = new OpcGroup {
                IsActive = true, Name = groupName, UpdateRate = new TimeSpan(0, 0, 0, 0, _options.DefaultMonitorInterval)
            };
            var subItem = new OpcDa.SubscriptionState
            {
                Name       = (++_sub).ToString(CultureInfo.InvariantCulture),
                Active     = true,
                UpdateRate = DefaultMonitorInterval
            };

            var    sub         = _server.CreateSubscription(subItem);
            Action unsubscribe = () => new Thread(o =>
                                                  _server.CancelSubscription(sub)).Start();

            dic.Add(groupName, sub);
            sub.DataChanged += (subscriptionHandle, requestHandle, values) =>
            {
                List <OpcItemValue> items = new List <OpcItemValue>();
                foreach (OpcDa.ItemValueResult value in values)
                {
                    OpcItemValue item = new OpcItemValue {
                        GroupName = groupName, Value = value.Value, ItemId = value.ItemName, Quality = value.Quality.ToString(), Timestamp = value.Timestamp
                    };
                    items.Add(item);
                }
                _group.SendValue(items);
            };
            return(_group);
        }