상속: WorkareaGraphBase
예제 #1
2
    protected void Page_Load(object sender, EventArgs e)
    {
        WorkareaGraphBase graph;

        string tmp = Request.QueryString["type"];
        if (tmp == "pie")
        {
            graph = new CircleGraph();
        }
        else if (tmp == "time")
        {
            graph = new TimeGraph();
        }
        else
        {
            graph = new BarGraph();
        }

        graph.Init(this);
    }
예제 #2
0
파일: AppLogic.cs 프로젝트: free302/EcgDev
        void onNewData(double[][][] timeData)
        {
            //concate data to new buffer
            var numData = timeData.Length;
            var numCh   = timeData[0].Length;

            if (numCh < 3)
            {
                numCh++;
            }

            var freqBuffer = new double[numCh][];
            var timeBuffer = new double[numCh][];

            for (int c = 0; c < numCh; c++)
            {
                timeBuffer[c] = new double[mTimingParam.NumDpFft];
                freqBuffer[c] = new double[mTimingParam.NumDpFftFreq];
                for (int d = 0; d < numData; d++)
                {
                    if (c != numCh - 1)
                    {
                        timeData[d][c].CopyTo(timeBuffer[c], d * mTimingParam.NumDp);
                    }
                    else
                    {
                        var tmp = timeData[d][0].Zip(timeData[d][1], (x, y) => x - y).ToArray();
                        tmp.CopyTo(timeBuffer[c], d * mTimingParam.NumDp);
                    }
                }
                //Filter.RemoveDc(timeBuffer[c]);
            }

            //apply filter
            var rate = mTimingParam.Rate;

            if (FilterParam.F1)
            {
                var fc = FilterParam.PassFrequency;
                for (int i = 0; i < timeBuffer.Length; i++)
                {
                    mDicFilter1[FilterParam.LowHigh](ref freqBuffer[i], ref timeBuffer[i], timeBuffer[i], rate, fc);
                }
            }

            //
            if (FilterParam.F2)
            {
                var f1 = FilterParam.LowerFrequency;
                var f2 = FilterParam.UpperFrequency;
                for (int i = 0; i < timeBuffer.Length; i++)
                {
                    mDicFilter2[FilterParam.StopPass](ref freqBuffer[i], ref timeBuffer[i], timeBuffer[i], rate, f1, f2);
                }
            }

            //store data
            mData.StoreTime(timeBuffer);
            if (!FilterParam.F1 && !FilterParam.F2)
            {
                for (int c = 0; c < timeBuffer.Length; c++)
                {
                    Filter.Fft_Abs(ref freqBuffer[c], timeBuffer[c], rate);
                }
            }
            mData.StoreFrequency(freqBuffer);

            //plot
            TimeGraph?.UpdateGraph(mData.TimeData, 0, mTimingParam.DeltaT);
            TransGraph?.UpdateGraph(mData.TransData, 0, mTimingParam.DeltaF);

            //calc BPM
            var ch      = timeBuffer.Length - 1;
            var freqBpm = mBpm.CalcFreqBpm(mData.TransData[ch], mTimingParam.DeltaF);
            var timeBpm = mBpm.CalcTimeBpm(mData.TimeData[ch], mTimingParam.DeltaT).Average();

            //OnBpmUpdate?.Invoke(freqBpm);
            OnBpmUpdate?.Invoke(timeBpm);

            //update coord graph
            if (DoUpdateCoord)
            {
                updateCoordGraph(timeBuffer);
            }
        }
예제 #3
0
 /// <summary>
 /// Konstruktor pro graf
 /// </summary>
 /// <param name="ownerGraph"></param>
 public TimeGraphLinkArray(TimeGraph ownerGraph)
     : this()
 {
     this._OwnerGraph = ownerGraph;
 }