/// <summary> /// 音频数据更新 /// </summary> /// <param name="args"></param> private void AudioInput_DataGenerated(DataGeneratedEventArgs args) { double[][] samples = args.Samples; if (samples.Length == 0) { return; } //源波 double[] souceWave = samples[0]; List <double> sampledData = new List <double>(); //采样后的信号 double[] sampledWave = new double[souceWave.Count()]; int impact = (int)(_samplingFrequency / Param.secSamplingFrequency); for (int i = 0; i < souceWave.Count(); i++) { if (i % impact == 0) { sampledWave[i] = souceWave[i]; sampledData.Add(souceWave[i]); } else { sampledWave[i] = 0.0; } } //为示波器输入数据 if (m_WaveformMonitor != null) { double[][] waveData = new double[_seriesNames.Count()][]; waveData[0] = souceWave; waveData[1] = sampledWave; m_WaveformMonitor.FeedData(waveData); } List <double> pcmCode = new List <double>(); foreach (var item in sampledData) { int[] codes = PCMCaculator.PCM_Encode(item); foreach (var code in codes) { pcmCode.Add(code); } } //为示波器输入数据 if (m_CodeMonitor != null) { double[][] Data = new double[1][]; Data[0] = pcmCode.ToArray(); m_CodeMonitor.FeedData(Data); } }
private void TextChange_InputVal(object sender, TextChangedEventArgs e) { TextBox tb = sender as TextBox; if (tb.Text == null) { return; } try { //填写 double val = double.Parse(tb.Text); int[] codes = PCMCaculator.PCM_Encode(val); string ans = "|"; foreach (var code in codes) { ans = ans + " " + code.ToString() + " |"; } EncodeStrTextBlock.Text = ans; //更新PCM显示器数据 SeriesPoint[] points = new SeriesPoint[codes.Length + 1]; for (int i = 0; i < codes.Length; i++) { points[i].X = i; points[i].Y = codes[i]; } points[codes.Length].X = codes.Length; points[codes.Length].Y = codes[codes.Length - 1]; _chart.ViewXY.PointLineSeries[0].Points = points; } catch (Exception ex) { Console.WriteLine(ex); return; } }