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); }
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); } }
/// <summary> /// Konstruktor pro graf /// </summary> /// <param name="ownerGraph"></param> public TimeGraphLinkArray(TimeGraph ownerGraph) : this() { this._OwnerGraph = ownerGraph; }