Electric Tiger DAQ  1.0.0
Data Acquisition Software for the Electric Tiger Experiment
spectrumanalyzer.h
1 #ifndef SPECTRUMANALYZER_H
2 #define SPECTRUMANALYZER_H
3 
4 //C System-Headers
5 #include <cxxabi.h> //abi::__cxa_demangle
6 //C++ System headers
7 #include <typeinfo> //typeid(T).name()
8 //OpenCL Headers
9 //
10 //Boost Headers
11 //
12 //Qt Headers
13 #include <QtWidgets/QApplication>
14 #include <QtWidgets/QMainWindow>
15 #include <QtCharts/QChartView>
16 #include <QtCharts/QLineSeries>
17 #include <QtCore/QDateTime>
18 #include <QtCharts/QSplineSeries>
19 #include <QtCore/QFile>
20 #include <QtCore/QTextStream>
21 #include <QtCore/QDebug>
22 #include <QtCharts/QValueAxis>
23 #include <QMainWindow>
24 #include <QTimer>
25 //Project specific headers
26 #include "../JASPL/jPlot/jplot.h"
27 #include "../JASPL/jTypeTraits/jtypetraits.h"
28 #include "../JASPL/jFFT/jfft.h"
29 #include "../JASPL/jAlgorithm/jalgorithm.h"
30 
31 QT_CHARTS_USE_NAMESPACE
32 
33 class SpectrumAnalyzer : public QChartView {
34 
35  Q_OBJECT
36 
37  public:
38  explicit SpectrumAnalyzer(QWidget *parent = 0);
40 
41  void PlotAutoScale( const std::vector<float>& y_signal_elements , float x_frequency_range);
42  void Plot( const std::vector<float>& y_signal_elements , float x_frequency_range);
43 
44 // void UpdateSignal( const std::vector<float>& time_series , uint sample_rate );
45 
46  private:
47 
48  void (SpectrumAnalyzer::*unit_conversion)( float& ) = NULL;
49  void (SpectrumAnalyzer::*plot_function)( const std::vector<float>&signal, float freq_range ) = NULL;
50 
51  void volt_sqr_to_dbm( float& volt_sqr );
52  void identity( float& val );
53 
54  QLineSeries *spectrum_series;
55  QValueAxis *x_axis;
56  QValueAxis *y_axis;
57 
58  QTimer *auto_timer;
59  QChart *chart;
60 
61  QString title = "Spectrum Analyzer";
62 
63  jaspl::JFFT< std::vector< float > > fft_er;
64  const uint fft_points = 1024;
65 
66  public slots:
67  void UpdateSignal( std::vector<float> time_series , uint sample_rate );
68 // void UpdateAndAverage( std::vector<float> time_series , uint sample_rate );
69 
70  void SetFrequencyMin( double min_frequency );
71  void SetPowerMin( double min_power );
72  void SetFrequencyMax( double max_frequency );
73  void SetPowerMax( double max_power );
74 
75  void ChangeToVolts();
76  void ChangeTodBm();
77 
78  void AutoScaleOn();
79  void AutoScaleOff();
80 
81  signals:
82  void SignalChanged();
83 };
84 
85 //#include "spectrumanalyzer.tpp"
86 
87 #endif // SPECTRUMANALYZER_H
Definition: spectrumanalyzer.h:33