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); }
/// <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); } }
public TagObserver(ref CControl cc, CCTag tag, Subject <ReadTagResult> subject) { CC = cc; Tag = tag; Subject = subject; }