private void CreateTimeGraph(ZedGraphControl zgc, double[] sectionBuffers) { try { DrawClass DC = DrawClass.GetInstance(); List <double[]> excel_Info = new List <double[]> { }; excel_Info = DC.DrawChart(zgc, sectionBuffers); if (SavecheckBox.Checked) { _log.Info("Start store raw data"); sd.CreateExcelFile(excel_Info[0], excel_Info[1], sectionBuffers); } } catch (Exception err) { waveformAiCtrl.Stop(); _log.Error("Time domain calculate or drawing Error message is---" + err.Message); MessageBox.Show(err.Message); waveformAiCtrl.Dispose(); SamplingTextbox.Enabled = true; DataLengthtextBox.Enabled = true; ChanneltextBox.Enabled = true; FreqrangetextBox.Enabled = true; DeviceIDtextBox.Enabled = true; FreqMintextBox.Enabled = true; FreqMaxtextBox.Enabled = true; StartAcquisitionBtn.Enabled = true; StopAcquisitionBtn.Enabled = false; } }
/// <summary> /// 关闭模拟输入模式 /// </summary> public void StopAiMode() { queueAiData.Clear(); timerAi.Enabled = false; ErrorCode err = waveformAiCtrlUsb4704.Stop(); if (err != ErrorCode.Success) { Console.WriteLine("关闭模拟输入失败:" + err); return; } }
private void CreateFreqMaxGraph(ZedGraphControl zgc, double[] sectionBuffers) { zgc.GraphPane.CurveList.Clear(); int FreqMin = int.Parse(FreqMintextBox.Text); int FreqMax = int.Parse(FreqMaxtextBox.Text); convertClkRate = int.Parse(SamplingTextbox.Text); sectionLength = int.Parse(DataLengthtextBox.Text); Freqrange = int.Parse(FreqrangetextBox.Text); Complex[] fftsamples = new Complex[sectionLength]; xMaxchartxaxis[0] = xMaxchartxaxis[0] + 1 * sectionLength / convertClkRate; for (int i = 0; i < sectionLength; i++) { fftsamples[i] = sectionBuffers[i]; } Fourier.Forward(fftsamples, FourierOptions.NoScaling); double[] mag = new double[sectionBuffers.Length]; double[] fftmax = new double[1]; for (int i = FreqMin; i < FreqMax; i++) { mag[i] = (2.0 / sectionLength) * (Math.Abs(Math.Sqrt(Math.Pow(fftsamples[i].Real, 2) + Math.Pow(fftsamples[i].Imaginary, 2)))); } fftmax[0] = mag.Max(); GraphPane myPane = zgc.GraphPane; // Set the titles and axis labels double[] y = sectionBuffers; LineItem myCurve; if (LongTermcheckBox.Checked) { list.Add(xMaxchartxaxis, fftmax); // Generate a blue curve with circle symbols, and "My Curve 2" in the legend myCurve = myPane.AddCurve("Channel 0", list, Color.DarkGreen, SymbolType.Square); myCurve.Line.Width = 3.0f; zgc.AxisChange(); zgc.Refresh(); StreamcheckBox.Checked = false; } else if (StreamcheckBox.Checked) { list.Add(xMaxchartxaxis, fftmax); // Generate a blue curve with circle symbols, and "My Curve 2" in the legend myCurve = myPane.AddCurve("Channel 0", list, Color.DarkGreen, SymbolType.Square); myCurve.Line.Width = 3.0f; zgc.AxisChange(); zgc.Refresh(); if (list.Count >= 20) { list.RemoveAt(0); } LongTermcheckBox.Checked = false; } else { MessageBox.Show("chart attribute is null"); errorCode = waveformAiCtrl.Stop(); if (BioFailed(errorCode)) { throw new Exception(); } waveformAiCtrl.Dispose(); SamplingTextbox.Enabled = true; DataLengthtextBox.Enabled = true; ChanneltextBox.Enabled = true; FreqrangetextBox.Enabled = true; DeviceIDtextBox.Enabled = true; FreqMintextBox.Enabled = true; FreqMaxtextBox.Enabled = true; button2.Enabled = true; button3.Enabled = false; } }