mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-04-10 21:39:34 -04:00
First attempt at a useful total-power plotter.
This commit is contained in:
parent
32a823afa7
commit
b73120dd48
@ -1531,7 +1531,7 @@ void MainWindow::dataSink(qint64 frames)
|
||||
if(m_ihsym <=0) return;
|
||||
if(ui) ui->signal_meter_widget->setValue(m_px,m_pxmax); // Update thermometer
|
||||
if(m_monitoring || m_diskData) {
|
||||
m_wideGraph->dataSink2(s,m_df3,m_ihsym,m_diskData);
|
||||
m_wideGraph->dataSink2(s,m_df3,m_ihsym,m_diskData,m_px);
|
||||
}
|
||||
if(m_mode=="MSK144") return;
|
||||
|
||||
@ -3166,6 +3166,7 @@ void MainWindow::on_ClrAvgButton_clicked()
|
||||
if(m_mode=="Echo") {
|
||||
echocom_.nsum=0;
|
||||
m_echoGraph->clearAvg();
|
||||
m_wideGraph->restartTotalPower();
|
||||
} else {
|
||||
if(m_msgAvgWidget != NULL) {
|
||||
if(m_msgAvgWidget->isVisible()) m_msgAvgWidget->displayAvg("");
|
||||
|
@ -167,6 +167,8 @@ void CPlotter::draw(float swide[], bool bScroll, bool bRed)
|
||||
static QPoint LineBuf[MAX_SCREENSIZE];
|
||||
static QPoint LineBuf2[MAX_SCREENSIZE];
|
||||
static QPoint LineBuf3[MAX_SCREENSIZE];
|
||||
static QPoint LineBuf4[MAX_SCREENSIZE];
|
||||
|
||||
j=0;
|
||||
j0=int(m_startFreq/m_fftBinWidth + 0.5);
|
||||
int iz=XfromFreq(5000.0);
|
||||
@ -231,7 +233,7 @@ void CPlotter::draw(float swide[], bool bScroll, bool bRed)
|
||||
|
||||
}
|
||||
|
||||
if(i==iz-1 and !m_bQ65_Sync) {
|
||||
if(i==iz-1 and !m_bQ65_Sync and !m_bTotalPower) {
|
||||
painter2D.drawPolyline(LineBuf,j);
|
||||
}
|
||||
LineBuf[j].setX(i);
|
||||
@ -320,6 +322,17 @@ void CPlotter::draw(float swide[], bool bScroll, bool bRed)
|
||||
painter2D.drawText(m_w-100,m_h2/2,t);
|
||||
}
|
||||
}
|
||||
|
||||
if(m_bTotalPower) {
|
||||
painter2D.setPen(Qt::green);
|
||||
int yy=m_h2 - 10*(m_pdB-20);
|
||||
LineBuf4[m_x].setX(m_x);
|
||||
LineBuf4[m_x].setY(yy);
|
||||
painter2D.drawPolyline(LineBuf4,m_x);
|
||||
m_x++;
|
||||
if(m_x > m_w) m_x=0;
|
||||
}
|
||||
|
||||
update(); //trigger a new paintEvent
|
||||
m_bScaleOK=true;
|
||||
}
|
||||
@ -874,3 +887,13 @@ void CPlotter::setDiskUTC(int nutc)
|
||||
{
|
||||
m_nUTC=nutc;
|
||||
}
|
||||
|
||||
void CPlotter::drawTotalPower(float pdB)
|
||||
{
|
||||
m_pdB=pdB;
|
||||
}
|
||||
|
||||
void CPlotter::restartTotalPower()
|
||||
{
|
||||
m_x=0;
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ public:
|
||||
QSize sizeHint() const Q_DECL_OVERRIDE;
|
||||
|
||||
void draw(float swide[], bool bScroll, bool bRed); //Update the waterfall
|
||||
void drawTotalPower(float pdB);
|
||||
void replot();
|
||||
void SetRunningState(bool running);
|
||||
void setPlotZero(int plotZero);
|
||||
@ -81,12 +82,15 @@ public:
|
||||
bool Reference() const {return m_bReference;}
|
||||
void setQ65_Sync(bool b) {m_bQ65_Sync = b;}
|
||||
bool Q65_Sync() const {return m_bQ65_Sync;}
|
||||
void setTotalPower(bool b) {m_bTotalPower = b;}
|
||||
bool TotalPower() const {return m_bTotalPower;}
|
||||
void drawRed(int ia, int ib, float swide[]);
|
||||
void setVHF(bool bVHF);
|
||||
void setRedFile(QString fRed);
|
||||
void setFST4_FreqRange(int fLow,int fHigh);
|
||||
void setSingleDecode(bool b);
|
||||
void setDiskUTC(int nutc);
|
||||
void restartTotalPower();
|
||||
|
||||
bool scaleOK () const {return m_bScaleOK;}
|
||||
signals:
|
||||
@ -116,12 +120,14 @@ private:
|
||||
bool m_bReference;
|
||||
bool m_bReference0;
|
||||
bool m_bQ65_Sync;
|
||||
bool m_bTotalPower;
|
||||
bool m_bVHF;
|
||||
bool m_bSingleDecode;
|
||||
bool m_bFirst=true;
|
||||
bool m_bResized;
|
||||
|
||||
float m_fSpan;
|
||||
float m_pdB;
|
||||
|
||||
qint32 m_plotZero;
|
||||
qint32 m_plotGain;
|
||||
@ -137,6 +143,7 @@ private:
|
||||
qint32 m_nfa;
|
||||
qint32 m_nfb;
|
||||
qint32 m_nUTC;
|
||||
qint32 m_x=0;
|
||||
|
||||
QPixmap m_WaterfallPixmap;
|
||||
QPixmap m_2DPixmap;
|
||||
|
@ -71,11 +71,13 @@ WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
|
||||
ui->widePlot->setLinearAvg(m_settings->value("LinearAvg",false).toBool());
|
||||
ui->widePlot->setReference(m_settings->value("Reference",false).toBool());
|
||||
ui->widePlot->setQ65_Sync(m_settings->value("Q65_Sync",false).toBool());
|
||||
ui->widePlot->setTotalPower(m_settings->value("TotalPower",false).toBool());
|
||||
if(ui->widePlot->current()) ui->spec2dComboBox->setCurrentIndex(0);
|
||||
if(ui->widePlot->cumulative()) ui->spec2dComboBox->setCurrentIndex(1);
|
||||
if(ui->widePlot->linearAvg()) ui->spec2dComboBox->setCurrentIndex(2);
|
||||
if(ui->widePlot->Reference()) ui->spec2dComboBox->setCurrentIndex(3);
|
||||
if(ui->widePlot->Q65_Sync()) ui->spec2dComboBox->setCurrentIndex(4);
|
||||
if(ui->widePlot->TotalPower()) ui->spec2dComboBox->setCurrentIndex(5);
|
||||
int nbpp=m_settings->value("BinsPerPixel",2).toInt();
|
||||
ui->widePlot->setBinsPerPixel(nbpp);
|
||||
ui->sbPercent2dPlot->setValue(m_Percent2DScreen);
|
||||
@ -133,6 +135,7 @@ void WideGraph::saveSettings() //saveS
|
||||
m_settings->setValue ("LinearAvg", ui->widePlot->linearAvg());
|
||||
m_settings->setValue ("Reference", ui->widePlot->Reference());
|
||||
m_settings->setValue ("Q65_Sync", ui->widePlot->Q65_Sync());
|
||||
m_settings->setValue ("TotalPower", ui->widePlot->TotalPower());
|
||||
m_settings->setValue ("BinsPerPixel", ui->widePlot->binsPerPixel ());
|
||||
m_settings->setValue ("StartFreq", ui->widePlot->startFreq ());
|
||||
m_settings->setValue ("WaterfallPalette", m_waterfallPalette);
|
||||
@ -148,11 +151,12 @@ void WideGraph::drawRed(int ia, int ib)
|
||||
ui->widePlot->drawRed(ia,ib,m_swide);
|
||||
}
|
||||
|
||||
void WideGraph::dataSink2(float s[], float df3, int ihsym, int ndiskdata) //dataSink2
|
||||
void WideGraph::dataSink2(float s[], float df3, int ihsym, int ndiskdata, float pdB) //dataSink2
|
||||
{
|
||||
static float splot[NSMAX];
|
||||
int nbpp = ui->widePlot->binsPerPixel();
|
||||
|
||||
if(ui->widePlot->TotalPower()) ui->widePlot->drawTotalPower(pdB);
|
||||
//Average spectra over specified number, m_waterfallAvg
|
||||
if (m_n==0) {
|
||||
for (int i=0; i<NSMAX; i++)
|
||||
@ -313,6 +317,7 @@ void WideGraph::on_spec2dComboBox_currentIndexChanged(int index)
|
||||
ui->widePlot->setLinearAvg(false);
|
||||
ui->widePlot->setReference(false);
|
||||
ui->widePlot->setQ65_Sync(false);
|
||||
ui->widePlot->setTotalPower(false);
|
||||
ui->smoSpinBox->setEnabled(false);
|
||||
switch (index)
|
||||
{
|
||||
@ -332,7 +337,10 @@ void WideGraph::on_spec2dComboBox_currentIndexChanged(int index)
|
||||
case 4:
|
||||
ui->widePlot->setQ65_Sync(true);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
ui->widePlot->setTotalPower(true);
|
||||
break;
|
||||
}
|
||||
replot();
|
||||
}
|
||||
|
||||
@ -540,3 +548,8 @@ void WideGraph::setDiskUTC(int nutc)
|
||||
{
|
||||
ui->widePlot->setDiskUTC(nutc);
|
||||
}
|
||||
|
||||
void WideGraph::restartTotalPower()
|
||||
{
|
||||
ui->widePlot->restartTotalPower();
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
explicit WideGraph(QSettings *, QWidget *parent = 0);
|
||||
~WideGraph ();
|
||||
|
||||
void dataSink2(float s[], float df3, int ihsym, int ndiskdata);
|
||||
void dataSink2(float s[], float df3, int ihsym, int ndiskdata, float pdB);
|
||||
void setRxFreq(int n);
|
||||
int rxFreq();
|
||||
int nStartFreq();
|
||||
@ -51,6 +51,7 @@ public:
|
||||
void setFST4_FreqRange(int fLow,int fHigh);
|
||||
void setSingleDecode(bool b);
|
||||
void setDiskUTC(int nutc);
|
||||
void restartTotalPower();
|
||||
|
||||
signals:
|
||||
void freezeDecode2(int n);
|
||||
|
@ -340,6 +340,11 @@
|
||||
<string>Q65_Sync</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Total power (dB)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
|
Loading…
Reference in New Issue
Block a user