//Для OvationSource private static bool BeginEquals(SignalOvation sig, DateTime t) { if (sig.BeginMoment == null) { return(false); } return(Math.Abs(sig.BeginMoment.Time.Subtract(t).TotalSeconds) < 0.5); }
//Добавить сигнал public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int id = 0) { var sig = new SignalOvation(signalInf, code, dataType, this, 0); if (!_objectsId.ContainsKey(sig.Id)) { _objectsId.Add(sig.Id, new ObjectOvation(sig.Id, code)); if (IsOriginal) { if (_objectsId.Count % 200 == 1) { _objectsParts.Add(new List <ObjectOvation>()); } _objectsParts[_objectsParts.Count - 1].Add(_objectsId[sig.Id]); } } var ob = _objectsId[sig.Id]; if (sig.IsState) //Слово состояния { if (ob.StateSignal == null) { _signals.Add(sig.Code, sig); } return(ob.StateSignal ?? (ob.StateSignal = sig)); } if (sig.Bit == -1)//Аналоговый или дискретный { ob.IsValue = true; if (ob.ValueSignal == null) { _signals.Add(sig.Code, sig); } return(ob.ValueSignal ?? (ob.ValueSignal = sig)); } if (!ob.BitSignals.ContainsKey(sig.Bit))//Бит упакованного { ob.IsValue = true; _signals.Add(sig.Code, sig); ob.BitSignals.Add(sig.Bit, sig); } return(ob.BitSignals[sig.Bit]); }
//Добавить сигнал public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone) { var sig = new SignalOvation(signalInf, code, dataType, this, idInClone); ObjectOvation ob; if (!_objectsId.ContainsKey(sig.Id)) { ob = new ObjectOvation(sig.Id, code); _objectsId.Add(sig.Id, ob); if (_parts.Count == 0 || _parts[_parts.Count - 1].Count == 200) { _parts.Add(new List <ProviderObject>()); } _parts[_parts.Count - 1].Add(_objectsId[sig.Id]); } ob = _objectsId[sig.Id]; if (sig.IsState) //Слово состояния { if (ob.StateSignal == null) { ProviderSignals.Add(sig.Code, sig); } return(ob.StateSignal ?? (ob.StateSignal = sig)); } if (sig.Bit == -1)//Аналоговый или дискретный { if (ob.ValueSignal == null) { ProviderSignals.Add(sig.Code, sig); } return(ob.ValueSignal ?? (ob.ValueSignal = sig)); } if (!ob.BitSignals.ContainsKey(sig.Bit))//Бит упакованного { ProviderSignals.Add(sig.Code, sig); ob.BitSignals.Add(sig.Bit, sig); } return(ob.BitSignals[sig.Bit]); }