Exemplo n.º 1
0
        public void Input(object sender, SNetTdSignalEventArg e)
        {
            if (!this.IsEnalbed)
            {
                return;
            }
            var ea = e as SNetTdSignalSecSetF8EventArg;

            if (ea == null)
            {
                throw new SNetException("尚未無法處理此類資料: " + e.GetType().FullName);
            }


            var key  = ea.Time;
            var list = ea.TSignalSource.GetOrCreate(key.Value);

            this.TSignalAvg.Set(ea.Time.Value, list.Average());
            this.TSignalMax.Set(ea.Time.Value, list.Max());
            this.TSignalMin.Set(ea.Time.Value, list.Min());


            this.Purge();

            this.OnDataChange(ea);

            ea.InvokeResult = this.disposed ? SNetTdEnumInvokeResult.IsDisposed : SNetTdEnumInvokeResult.None;
        }
Exemplo n.º 2
0
 protected void OnDataChange(SNetTdSignalEventArg ea)
 {
     if (this.EhDataChange == null)
     {
         return;
     }
     this.EhDataChange(this, ea);
 }
Exemplo n.º 3
0
        public void Input(object sender, SNetTdSignalEventArg e)
        {
            if (!this.IsEnalbed)
            {
                return;
            }
            var ea = e as SNetTdSignalSecF8EventArg;

            if (ea == null)
            {
                throw new SNetException("尚無法處理此類資料: " + e.GetType().FullName);
            }

            ea.InvokeResult = this.disposed ? SNetTdEnumInvokeResult.IsDisposed : SNetTdEnumInvokeResult.None;
        }
Exemplo n.º 4
0
        /// <summary>
        /// 基底類別, 自動判定
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="ea"></param>
        public void TgInput(object sender, SNetTdSignalEventArg ea)
        {
            //父類別進入, 先判斷有沒有支援
            var eaSingle = ea as SNetTdSignalSecF8EventArg;

            if (eaSingle != null)
            {
                this.TgInput(sender, eaSingle);
                return;
            }

            var eaSet = ea as SNetTdSignalSecSetF8EventArg;

            if (eaSet != null)
            {
                this.TgInput(sender, eaSet);
                return;
            }
        }
Exemplo n.º 5
0
        public void Input(object sender, SNetTdSignalEventArg e)
        {
            if (!this.IsEnalbed)
            {
                return;
            }
            var tsSetSecondEa = e as SNetTdSignalSecSetF8EventArg;

            if (tsSetSecondEa == null)
            {
                throw new SNetException("尚未無法處理此類資料: " + e.GetType().FullName);
            }


            if (!tsSetSecondEa.PrevTime.HasValue)
            {
                return;
            }
            if (tsSetSecondEa.Time == tsSetSecondEa.PrevTime.Value)
            {
                return;
            }
            var t = tsSetSecondEa.PrevTime.Value;

            //取得時間變更前的時間資料
            IList <double> signalData = tsSetSecondEa.TSignalSource.GetOrCreate(t);


            if (this.FilterArgs.Mode != CtkEnumPassFilterMode.None)
            {
                this.PassFilter.SetFilter(this.FilterArgs);
                signalData = CtkNumUtil.InterpolationCanOneOrZero(signalData, (int)this.FilterArgs.SampleRate);
                signalData = this.PassFilter.ProcessSamples(signalData);
            }

            this.ProcAndPushData(this.TSignal, new SNetTSignalSecF8(t, signalData));
            e.InvokeResult = this.disposed ? SNetTdEnumInvokeResult.IsDisposed : SNetTdEnumInvokeResult.None;
        }