예제 #1
0
        public override void TagValueSubscriber(TagValuePublishedArgs args)
        {
            if (_transmits.Count <= 0)
            {
                return;
            }

            if (TagConfigs.FirstOrDefault(t => t.TagName == args.TagName) != null)
            {
                string key = args.TagName;
                if (!_cache.ContainsKey(key))
                {
                    Tag tag = new Tag()
                    {
                        Timestamp = args.NewTimestamp,
                        TagId     = args.TagId,
                        TagName   = args.TagName,
                        TagValue  = args.NewValue
                    };
                    _cache.TryAdd(key, tag);
                }
                else
                {
                    Tag oldValue;
                    if (_cache.TryGetValue(key, out oldValue))
                    {
                        if (oldValue == null)
                        {
                            Tag tag = new Tag()
                            {
                                Timestamp = args.NewTimestamp,
                                TagId     = args.TagId,
                                TagName   = args.TagName,
                                TagValue  = args.NewValue
                            };
                            _cache.TryAdd(key, tag);
                        }
                        else
                        {
                            if (oldValue.TagValue != args.NewValue)
                            {
                                oldValue.Timestamp = args.NewTimestamp;
                                oldValue.TagId     = args.TagId;
                                oldValue.TagName   = args.TagName;
                                oldValue.TagValue  = args.NewValue;
                                //_cache.TryUpdate(key, tag, oldValue);
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        public override void TagValueSubscriber(TagValuePublishedArgs args)
        {
            if (_posModel == null || !_posModel.IsStart)
            {
                return;
            }

            if (!OPCServerInstance.IsRunning)
            {
                OnServiceLog("OPC Server 没有启动");
                return;
            }

            if (TagConfigs.FirstOrDefault(t => t.TagName == args.TagName) != null)
            {
                string key = args.TagName;
                object val = args.NewValue;
                if (!_cache.ContainsKey(key))
                {
                    _cache.TryAdd(key, val);
                    OPCServerInstance.UpdateTag(key, val);
                }
                else
                {
                    object oldValue;
                    if (_cache.TryGetValue(key, out oldValue))
                    {
                        if (val != oldValue)
                        {
                            _cache.TryUpdate(key, val, oldValue);
                            OPCServerInstance.UpdateTag(key, val);
                        }
                    }
                }
            }
        }
예제 #3
0
 public override void TagValueSubscriber(TagValuePublishedArgs args)
 {
     OnServiceLog(args.TagName + "," + args.NewValue.ToString());
 }
예제 #4
0
 public override void TagValueSubscriber(TagValuePublishedArgs args)
 {
     //throw new NotImplementedException();
 }