예제 #1
0
        public override void StartService()
        {
            if (_posModel == null)
            {
                return;
            }

            if (_posModel.IsStart)
            {
                if (!OPCServerInstance.IsRunning)
                {
                    OPCServerInstance.Initialize(_posModel.ServerName, _posModel.License);
                    OnServiceLog("启动OPC服务成功");
                }
            }
        }
예제 #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);
                        }
                    }
                }
            }
        }