Exemple #1
0
        /// <summary>
        ///构造
        /// </summary>
        public Chart_AM()
        {
            m_aSpectrograms2D_source = null;
            m_aSpectrograms2D_signal = null;
            m_AreaSpectrum_signal    = null;
            m_AreaSpectrum_souce     = null;
            m_aWaveformMonitors      = null;
            m_iFFTCalcIntervalMs     = 20;
            m_iFFTWindowLength       = 1024 * 4;
            m_iHighFreq        = 2000;
            _samplingFrequency = 0;
            Param        = new Param_AM(1000);
            _seriesNames = new string[]
            {
                "音频",
                "载波",
                "调制",
                "检波"
            };

            InitializeComponent();

            //销毁时释放资源
            Dispatcher.ShutdownStarted += (object sender, EventArgs e) =>
            {
                Dispose();
            };
        }
Exemple #2
0
        private void InitSpectrograms()
        {
            DisposeSpectrograms();

            int resolution = m_iFFTWindowLength;

            if (m_iHighFreq < _samplingFrequency / 2)
            {
                resolution = (int)Math.Round((double)m_iHighFreq /
                                             (double)(_samplingFrequency / 2) * m_iFFTWindowLength);
            }

            string strTitle = "P(f)";

            m_aSpectrograms2D_source = new SpectrogramViewXYIntensity(
                gridChart,
                true,
                resolution,
                m_iFFTCalcIntervalMs,
                5,
                0,
                m_iHighFreq,
                strTitle,
                DefaultColors.SeriesForBlackBackgroundWpf[0]);
            m_aSpectrograms2D_source.Chart.ChartName = "频谱仪(热力/源)";

            m_aSpectrograms2D_signal = new SpectrogramViewXYIntensity(
                gridChart,
                true,
                resolution,
                m_iFFTCalcIntervalMs,
                5,
                0,
                m_iHighFreq,
                strTitle,
                DefaultColors.SeriesForBlackBackgroundWpf[0]);
            m_aSpectrograms2D_signal.Chart.ChartName = "频谱仪(热力/信号)";

            m_AreaSpectrum_souce = new AreaSpectrumMonitor(
                gridChart, resolution, m_iHighFreq,
                strTitle, DefaultColors.SeriesForBlackBackgroundWpf[0]
                );
            m_AreaSpectrum_souce.Chart.ChartName = "频谱仪(源)";

            m_AreaSpectrum_signal = new AreaSpectrumMonitor(
                gridChart, resolution, m_iHighFreq,
                strTitle, DefaultColors.SeriesForBlackBackgroundWpf[1]
                );
            m_AreaSpectrum_signal.Chart.ChartName = "频谱仪(信号)";

            ArrangeMonitors();
        }
Exemple #3
0
        /// <summary>
        /// 初始化频谱仪
        /// </summary>
        private void InitSpectrograms()
        {
            DisposeSpectrograms();

            int resolution = m_iFFTWindowLength;

            if (m_iHighFreq < _samplingFrequency / 2)
            {
                resolution = (int)Math.Round((double)m_iHighFreq / (double)(_samplingFrequency / 2) * m_iFFTWindowLength);
            }

            m_aSpectrograms2D = new SpectrogramViewXYIntensity[_channelCount];
            for (int channelIndex = 0; channelIndex < _channelCount; channelIndex++)
            {
                string strTitle = "P(f)\n - Channel " + (channelIndex + 1).ToString();
                if (_channelCount == 2)
                {
                    if (channelIndex == 0)
                    {
                        strTitle = "P(f) - Left";
                    }
                    else
                    {
                        strTitle = "P(f) - Right";
                    }
                }

                SpectrogramViewXYIntensity svi =
                    new SpectrogramViewXYIntensity(
                        gridChart,
                        true,
                        resolution,
                        m_iFFTCalcIntervalMs,
                        5,
                        0,
                        m_iHighFreq,
                        strTitle,
                        DefaultColors.SeriesForBlackBackgroundWpf[channelIndex % DefaultColors.SeriesForBlackBackgroundWpf.Length]
                        );
                svi.Chart.ChartName = "Spectrogram Chart " + (channelIndex + 1).ToString();

                m_aSpectrograms2D[channelIndex] = svi;
            }

            ArrangeMonitors();
        }
Exemple #4
0
        /// <summary>
        /// 释放频谱仪资源
        /// </summary>
        private void DisposeSpectrograms()
        {
            if (m_aSpectrograms2D_source != null)
            {
                m_aSpectrograms2D_source.Dispose();
                m_aSpectrograms2D_source = null;
            }
            if (m_aSpectrograms2D_signal != null)
            {
                m_aSpectrograms2D_signal.Dispose();
                m_aSpectrograms2D_signal = null;
            }

            if (m_AreaSpectrum_souce != null)
            {
                m_AreaSpectrum_souce.Dispose();
                m_AreaSpectrum_souce = null;
            }
            if (m_AreaSpectrum_signal != null)
            {
                m_AreaSpectrum_signal.Dispose();
                m_AreaSpectrum_signal = null;
            }
        }