예제 #1
0
        public ReadTagResult GetReadTagResult(CCTag tag)
        {
            ReadTagResult rtr   = new ReadTagResult(tag.Name);
            object        value = this.ReadTag(tag.Name);

            rtr.Value      = value;
            rtr.UpdateTime = DateTime.Now;
            return(rtr);
        }
예제 #2
0
        /// <summary>
        /// 添加变量监视
        /// </summary>
        /// <param name="tagObserver"></param>
        /// <param name="tag"></param>
        public static void AddTagRx(CControl tagObserver, CCTag tag)
        {
            if (!HotTags.ContainsKey(tag.Name))
            {
                Subject <ReadTagResult> tagSubject = new Subject <ReadTagResult>();

                IObservable <long> tagTimer = GetOrCreateTimer(tag.AcquisitionCycle);

                TagObserver tagTimerObser          = new TagObserver(ref tagObserver, tag, tagSubject);
                IObservable <ReadTagResult> hotTag = tagTimerObser.Publish().RefCount();
                HotTags[tag.Name]            = hotTag;
                TagObservers[tag.Name]       = tagTimerObser;
                TagTimerObservsers[tag.Name] = tagTimer.Subscribe(tagTimerObser);
            }
            else
            {
                TagObserver tagTimerObser = TagObservers[tag.Name];
                tagTimerObser.changeCC(ref tagObserver);
            }
        }
예제 #3
0
 public TagObserver(ref CControl cc, CCTag tag, Subject <ReadTagResult> subject)
 {
     CC      = cc;
     Tag     = tag;
     Subject = subject;
 }