SignalSpecDomainPlot::SignalSpecDomainPlot(tPlotData *pPlotData,
, d_interval(0)
, d_timerId(-1)
, d_timerCount(0)
, mpPlotData(pPlotData)
{
d_spectrogram->setRenderThreadCount(0);
data = new QwtMatrixRasterData();
data->setInterval(Qt::ZAxis, QwtInterval(-80, 20));
data->setInterval(Qt::YAxis, QwtInterval(0, 256));
data->setInterval(Qt::XAxis, QwtInterval(0, 500));
data->setResampleMode(static_cast<QwtMatrixRasterData::ResampleMode>(1));
d_spectrogram->setData(data);
d_spectrogram->attach(this);
/*-------------------------------------------------------------------------------*
* Set axis
*-------------------------------------------------------------------------------*/
XAxisLabel.setText("Time [s]");
setAxisTitle
(QwtPlot::xBottom, XAxisLabel
);
setAxisScale
(QwtPlot::xBottom,
0,
5);
YAxisLabel.setText("Frequency[kHz]");
setAxisTitle
(QwtPlot::yLeft, YAxisLabel
);
setAxisScale
(QwtPlot::yLeft,
0,
8);
//color bar on the right axis
Y2AxisLabel.setText("Intensity[dB]");
setAxisTitle
(QwtPlot::yRight, Y2AxisLabel
);
setAxisScale
(QwtPlot::yRight,
-80,
20);
rightAxis->setColorBarEnabled(true);
enableAxis(yLeft + yRight);
setColorMap(SignalSpecDomainPlot::RGBMap);
/*-------------------------------------------------------------------------------*
* Set timer interval (in ms)
*-------------------------------------------------------------------------------*/
setTimerInterval(10.0);
}
void SignalSpecDomainPlot::setTimerInterval(double ms)
{
d_interval = qRound(ms);
if (d_timerId >= 0)
{
killTimer(d_timerId);
d_timerId = -1;
}
if (d_interval >= 0)
d_timerId = startTimer(d_interval);
}
{
if (d_timerCount == 0)
{
QVector<double> values;
for (uint i = 0; i <= 500 * 256; i++)
values += 0;
data->setInterval(Qt::XAxis, QwtInterval(0, 5));
data->setInterval(Qt::YAxis, QwtInterval(0, 8));
data->setValueMatrix(values, 500);
}
if(d_timerCount < 500)
{
d_timerCount++;
}
else
{
d_timerCount = 1;
}
for(uint j = 0; j < 256; j++)
{
data->setValue(j, d_timerCount-1, mpPlotData->pppdFreqMemory[0][0][j]);
}
if (d_timerCount % 100 == 0)
{
replot();
}
}
SignalSpecDomainPlot::SignalSpecDomainPlot(tPlotData *pPlotData,
QWidget *parent)
: QwtPlot(parent)
, d_interval(0)
, d_timerId(-1)
, d_timerCount(0)
, mpPlotData(pPlotData)
{
d_spectrogram = new QwtPlotSpectrogram();
d_spectrogram->setRenderThreadCount(0);
d_spectrogram->setCachePolicy(QwtPlotRasterItem::PaintCache);
data = new QwtMatrixRasterData();
data->setInterval(Qt::ZAxis, QwtInterval(-80, 20));
data->setInterval(Qt::YAxis, QwtInterval(0, 256));
data->setInterval(Qt::XAxis, QwtInterval(0, 500));
data->setResampleMode(static_cast<QwtMatrixRasterData::ResampleMode>(1));
d_spectrogram->setData(data);
d_spectrogram->attach(this);
/*-------------------------------------------------------------------------------*
* Set axis
*-------------------------------------------------------------------------------*/
QwtText XAxisLabel;
XAxisLabel.setText("Time [s]");
setAxisTitle(QwtPlot::xBottom, XAxisLabel);
setAxisScale(QwtPlot::xBottom, 0, 5);
QwtText YAxisLabel;
YAxisLabel.setText("Frequency[kHz]");
setAxisTitle(QwtPlot::yLeft, YAxisLabel);
setAxisScale(QwtPlot::yLeft, 0, 8);
//color bar on the right axis
QwtText Y2AxisLabel;
QwtScaleWidget *rightAxis = axisWidget(QwtPlot::yRight);
Y2AxisLabel.setText("Intensity[dB]");
setAxisTitle(QwtPlot::yRight, Y2AxisLabel);
setAxisScale(QwtPlot::yRight, -80, 20);
rightAxis->setColorBarEnabled(true);
enableAxis(yLeft + yRight);
setColorMap(SignalSpecDomainPlot::RGBMap);
/*-------------------------------------------------------------------------------*
* Set timer interval (in ms)
*-------------------------------------------------------------------------------*/
setTimerInterval(10.0);
}
void SignalSpecDomainPlot::setTimerInterval(double ms)
{
d_interval = qRound(ms);
if (d_timerId >= 0)
{
killTimer(d_timerId);
d_timerId = -1;
}
if (d_interval >= 0)
d_timerId = startTimer(d_interval);
}
void SignalSpecDomainPlot::timerEvent(QTimerEvent *)
{
if (d_timerCount == 0)
{
QVector<double> values;
for (uint i = 0; i <= 500 * 256; i++)
values += 0;
data->setInterval(Qt::XAxis, QwtInterval(0, 5));
data->setInterval(Qt::YAxis, QwtInterval(0, 8));
data->setValueMatrix(values, 500);
}
if(d_timerCount < 500)
{
d_timerCount++;
}
else
{
d_timerCount = 1;
}
for(uint j = 0; j < 256; j++)
{
data->setValue(j, d_timerCount-1, mpPlotData->pppdFreqMemory[0][0][j]);
}
if (d_timerCount % 100 == 0)
{
replot();
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks