Example #1
0
        public DataTransmitClientService() : base()
        {
            _cache          = new Manager <string, Tag>();
            _transmits      = new ConcurrentDictionary <TransmitClient, IList <TagConfig> >();
            _channelManager = new ChannelManager();
            _connDictionary = new ConcurrentDictionary <string, SocketAsyncEventArgs>();
            _transmitTasks  = new List <Thread>();

            using (TransmitClientService tcs = TransmitClientService.Instance)
            {
                IList <TransmitClient> tcList = tcs.GetAllTransmitClient();
                if (tcList.Count > 0)
                {
                    using (PublicTagService pts = PublicTagService.Instance)
                    {
                        foreach (TransmitClient tc in tcList)
                        {
                            IList <TagConfig> tagConfigs = pts.GetPublicTagsOfService(tc.Id);

                            foreach (TagConfig tag in tagConfigs)
                            {
                                if (TagConfigs.FirstOrDefault(t => t.Id == tag.Id) == null)
                                {
                                    TagConfigs.Add(tag);
                                }
                            }

                            _transmits.TryAdd(tc, tagConfigs);
                        }
                    }
                }
            }
        }
Example #2
0
 public override int GetHashCode()
 {
     unchecked
     {
         return(((TagConfigs != null ? TagConfigs.GetHashCode() : 0) * 397) ^ (ScrollConfigs != null ? ScrollConfigs.GetHashCode() : 0));
     }
 }
        public DataTransmitServerService() : base()
        {
            _cache = new Manager <string, Tag>();

            try
            {
                using (TransmitServerConnectService tscs = TransmitServerConnectService.Instance)
                {
                    tscs.DeleteAllTransmitServerConnect();
                }

                using (TransmitServerService tss = TransmitServerService.Instance)
                {
                    _transmitServer = tss.GetTransmitServer();
                    if (_transmitServer != null)
                    {
                        using (PublicTagService ptc = PublicTagService.Instance)
                        {
                            IList <TagConfig> publicTags = ptc.GetPublicTagsOfService(_transmitServer.Id);
                            foreach (TagConfig tc in publicTags)
                            {
                                TagConfigs.Add(tc);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                OnServiceLog(ex.Message);
            }
        }
Example #4
0
 public OPCServerService() : base()
 {
     try
     {
         using (PublicOpcServerService poss = PublicOpcServerService.Instance)
         {
             _posModel = poss.GetPublicOpcServer();
             if (_posModel != null)
             {
                 using (PublicTagService ptc = PublicTagService.Instance)
                 {
                     IList <TagConfig> publicTags = ptc.GetPublicTagsOfService(_posModel.Id);
                     foreach (TagConfig tc in publicTags)
                     {
                         TagConfigs.Add(tc);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         OnServiceLog(ex.Message);
     }
 }
Example #5
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);
                            }
                        }
                    }
                }
            }
        }
Example #6
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);
                        }
                    }
                }
            }
        }