示例#1
0
        //Для 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);
        }
示例#2
0
        //Добавить сигнал
        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]);
        }
示例#3
0
        //Добавить сигнал
        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]);
        }