mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-27 06:38:44 -05:00
Adjustable start frequency for waterfall.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3502 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
88c73582a0
commit
18f1119b1a
16
in.dat
16
in.dat
@ -1,16 +0,0 @@
|
|||||||
35 36 22 8 31 11 14 55 20 36 55 13 24 15 56 38 16 28 61 58
|
|
||||||
15 26 45 8 41 53 37 57 59 60 29 29 41 46 44 35 52 61 24 26
|
|
||||||
16 20 53 35 2 6 9 27 47 28 57 6 15 9 16 10 56 9 63 46
|
|
||||||
9 15 3
|
|
||||||
74 61 44 233 29 245 254 64 119 64 250 111 38 145 53 29 140 194 119 99
|
|
||||||
55 86 48 110 142 95 48 120 61 66 252 252 245 88 62 41 124 249 246 68
|
|
||||||
250 249 65 64 140 142 88 190 237 90 240 52 79 216 55 31 112 135 66 44
|
|
||||||
99 57 68
|
|
||||||
54 61 26 5 13 60 3 56 30 58 57 4 16 43 28 43 6 61 13 19
|
|
||||||
56 8 4 9 45 32 9 7 14 52 4 38 40 27 3 26 51 54 40 29
|
|
||||||
36 63 34 43 3 48 36 49 46 30 8 20 40 59 29 28 17 11 8 19
|
|
||||||
11 63 5
|
|
||||||
38 25 35 8 28 0 0 60 60 25 0 31 28 52 14 24 9 30 18 54
|
|
||||||
49 55 48 15 27 54 26 22 30 27 1 1 4 31 35 29 23 2 2 27
|
|
||||||
0 1 25 32 21 84 28 19 5 60 2 27 15 9 39 23 42 12 29 17
|
|
||||||
16 50 49
|
|
@ -35,7 +35,7 @@ QTextEdit* pShortcuts;
|
|||||||
QTcpSocket* commanderSocket = new QTcpSocket(0);
|
QTcpSocket* commanderSocket = new QTcpSocket(0);
|
||||||
|
|
||||||
QString rev="$Rev$";
|
QString rev="$Rev$";
|
||||||
QString Program_Title_Version=" WSJT-X v1.1, r" + rev.mid(6,4) +
|
QString Program_Title_Version=" WSJT-X v1.1.1, r" + rev.mid(6,4) +
|
||||||
" by K1JT";
|
" by K1JT";
|
||||||
|
|
||||||
//-------------------------------------------------- MainWindow constructor
|
//-------------------------------------------------- MainWindow constructor
|
||||||
|
25
plotter.cpp
25
plotter.cpp
@ -15,7 +15,7 @@ CPlotter::CPlotter(QWidget *parent) : //CPlotter Constructor
|
|||||||
setAttribute(Qt::WA_OpaquePaintEvent, false);
|
setAttribute(Qt::WA_OpaquePaintEvent, false);
|
||||||
setAttribute(Qt::WA_NoSystemBackground, true);
|
setAttribute(Qt::WA_NoSystemBackground, true);
|
||||||
|
|
||||||
m_StartFreq = 0;
|
m_startFreq = 0;
|
||||||
m_nSpan=2; //used for FFT bins/pixel
|
m_nSpan=2; //used for FFT bins/pixel
|
||||||
m_fSpan=(float)m_nSpan;
|
m_fSpan=(float)m_nSpan;
|
||||||
m_hdivs = HORZ_DIVS;
|
m_hdivs = HORZ_DIVS;
|
||||||
@ -83,12 +83,11 @@ void CPlotter::paintEvent(QPaintEvent *) // paintEvent()
|
|||||||
m_paintEventBusy=false;
|
m_paintEventBusy=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlotter::draw(float swide[], int i0) //draw()
|
void CPlotter::draw(float swide[]) //draw()
|
||||||
{
|
{
|
||||||
int j,y2;
|
int j,y2;
|
||||||
float y;
|
float y;
|
||||||
|
|
||||||
m_i0=i0;
|
|
||||||
double gain = pow(10.0,0.05*(m_plotGain+7));
|
double gain = pow(10.0,0.05*(m_plotGain+7));
|
||||||
|
|
||||||
//move current data down one line (must do this before attaching a QPainter object)
|
//move current data down one line (must do this before attaching a QPainter object)
|
||||||
@ -306,16 +305,15 @@ void CPlotter::MakeFrequencyStrs() //MakeFrequencyStrs
|
|||||||
{
|
{
|
||||||
float freq;
|
float freq;
|
||||||
for(int i=0; i<=m_hdivs; i++) {
|
for(int i=0; i<=m_hdivs; i++) {
|
||||||
freq = m_StartFreq + i*m_freqPerDiv;
|
freq = m_startFreq + i*m_freqPerDiv;
|
||||||
m_HDivText[i].setNum((int)freq);
|
m_HDivText[i].setNum((int)freq);
|
||||||
// StartFreq += m_freqPerDiv;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int CPlotter::XfromFreq(float f) //XfromFreq()
|
int CPlotter::XfromFreq(float f) //XfromFreq()
|
||||||
{
|
{
|
||||||
// float w = m_WaterfallPixmap.width();
|
// float w = m_WaterfallPixmap.width();
|
||||||
int x = int(m_w * (f - m_StartFreq)/m_fSpan + 0.5);
|
int x = int(m_w * (f - m_startFreq)/m_fSpan + 0.5);
|
||||||
if(x<0 ) return 0;
|
if(x<0 ) return 0;
|
||||||
if(x>m_w) return m_w;
|
if(x>m_w) return m_w;
|
||||||
return x;
|
return x;
|
||||||
@ -323,8 +321,7 @@ int CPlotter::XfromFreq(float f) //XfromFreq()
|
|||||||
|
|
||||||
float CPlotter::FreqfromX(int x) //FreqfromX()
|
float CPlotter::FreqfromX(int x) //FreqfromX()
|
||||||
{
|
{
|
||||||
// return float(1000.0 + x*m_binsPerPixel*m_fftBinWidth);
|
return float(m_startFreq + x*m_binsPerPixel*m_fftBinWidth);
|
||||||
return float(x*m_binsPerPixel*m_fftBinWidth);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlotter::SetRunningState(bool running) //SetRunningState()
|
void CPlotter::SetRunningState(bool running) //SetRunningState()
|
||||||
@ -352,16 +349,16 @@ int CPlotter::getPlotGain() //getPlotGain()
|
|||||||
return m_plotGain;
|
return m_plotGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlotter::SetStartFreq(quint64 f) //SetStartFreq()
|
void CPlotter::setStartFreq(int f) //SetStartFreq()
|
||||||
{
|
{
|
||||||
m_StartFreq=f;
|
m_startFreq=f;
|
||||||
// resizeEvent(NULL);
|
resizeEvent(NULL);
|
||||||
DrawOverlay();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 CPlotter::startFreq() //startFreq()
|
int CPlotter::startFreq() //startFreq()
|
||||||
{
|
{
|
||||||
return m_StartFreq;
|
return m_startFreq;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CPlotter::plotWidth(){return m_WaterfallPixmap.width();}
|
int CPlotter::plotWidth(){return m_WaterfallPixmap.width();}
|
||||||
|
11
plotter.h
11
plotter.h
@ -43,14 +43,14 @@ public:
|
|||||||
qint32 m_binsPerPixel;
|
qint32 m_binsPerPixel;
|
||||||
qint32 m_w;
|
qint32 m_w;
|
||||||
|
|
||||||
void draw(float sw[], int i0); //Update the waterfall
|
void draw(float sw[]); //Update the waterfall
|
||||||
void SetRunningState(bool running);
|
void SetRunningState(bool running);
|
||||||
void setPlotZero(int plotZero);
|
void setPlotZero(int plotZero);
|
||||||
int getPlotZero();
|
int getPlotZero();
|
||||||
void setPlotGain(int plotGain);
|
void setPlotGain(int plotGain);
|
||||||
int getPlotGain();
|
int getPlotGain();
|
||||||
void SetStartFreq(quint64 f);
|
void setStartFreq(int f);
|
||||||
qint64 startFreq();
|
int startFreq();
|
||||||
int plotWidth();
|
int plotWidth();
|
||||||
void setNSpan(int n);
|
void setNSpan(int n);
|
||||||
void UpdateOverlay();
|
void UpdateOverlay();
|
||||||
@ -87,7 +87,6 @@ private:
|
|||||||
void UTCstr();
|
void UTCstr();
|
||||||
int XfromFreq(float f);
|
int XfromFreq(float f);
|
||||||
float FreqfromX(int x);
|
float FreqfromX(int x);
|
||||||
qint64 RoundFreq(qint64 freq, int resolution);
|
|
||||||
|
|
||||||
QPixmap m_WaterfallPixmap;
|
QPixmap m_WaterfallPixmap;
|
||||||
QPixmap m_2DPixmap;
|
QPixmap m_2DPixmap;
|
||||||
@ -108,14 +107,11 @@ private:
|
|||||||
double m_fftBinWidth;
|
double m_fftBinWidth;
|
||||||
double m_dialFreq;
|
double m_dialFreq;
|
||||||
|
|
||||||
qint64 m_StartFreq;
|
|
||||||
|
|
||||||
qint32 m_dBStepSize;
|
qint32 m_dBStepSize;
|
||||||
qint32 m_FreqUnits;
|
qint32 m_FreqUnits;
|
||||||
qint32 m_hdivs;
|
qint32 m_hdivs;
|
||||||
qint32 m_line;
|
qint32 m_line;
|
||||||
qint32 m_fSample;
|
qint32 m_fSample;
|
||||||
qint32 m_i0;
|
|
||||||
qint32 m_xClick;
|
qint32 m_xClick;
|
||||||
qint32 m_freqPerDiv;
|
qint32 m_freqPerDiv;
|
||||||
qint32 m_nsps;
|
qint32 m_nsps;
|
||||||
@ -128,6 +124,7 @@ private:
|
|||||||
qint32 m_txFreq;
|
qint32 m_txFreq;
|
||||||
qint32 m_fMin;
|
qint32 m_fMin;
|
||||||
qint32 m_fMax;
|
qint32 m_fMax;
|
||||||
|
qint32 m_startFreq;
|
||||||
|
|
||||||
char m_sutc[6];
|
char m_sutc[6];
|
||||||
|
|
||||||
|
@ -5,22 +5,23 @@ F3 Display keyboard shortcuts
|
|||||||
F4 Clear Dx Call and Dx Grid entries
|
F4 Clear Dx Call and Dx Grid entries
|
||||||
Alt+F4 Exit program
|
Alt+F4 Exit program
|
||||||
F5 Display special mouse commands
|
F5 Display special mouse commands
|
||||||
F6 Open next in directory
|
F6 Open next file in directory
|
||||||
|
Shift+F6 Decode all remaining files in directrory
|
||||||
F11 Move Rx frequency down 1 Hz
|
F11 Move Rx frequency down 1 Hz
|
||||||
Ctrl+F11 Move Rx and Tx frequencies down 1 Hz
|
Ctrl+F11 Move Rx and Tx frequencies down 1 Hz
|
||||||
F12 Move Rx frequency up 1 Hz
|
F12 Move Rx frequency up 1 Hz
|
||||||
Ctrl+F12 Move Rx and Tx frequencies up 1 Hz
|
Ctrl+F12 Move Rx and Tx frequencies up 1 Hz
|
||||||
Shift+F6 Decode remaining files in directory
|
Alt+1-6 Set next transmission to this number on Tab 1
|
||||||
Alt+D Decode again at QSO frequency
|
Alt+D Decode again at QSO frequency
|
||||||
Shift+D Full-bandwidth decode (both windows)
|
Shift+D Full decode (both windows)
|
||||||
Alt+E Erase()
|
Alt+E Erase
|
||||||
Ctrl+F Edit the free text message box
|
Ctrl+F Edit the free text message box
|
||||||
Alt+G Generate standard messages
|
Alt+G Generate standard messages
|
||||||
Alt+H Halt Tx()
|
Alt+H Halt Tx
|
||||||
Ctrl+L Lookup callsign in database, generate standard messages
|
Ctrl+L Lookup callsign in database, generate standard messages
|
||||||
Alt M Monitor()
|
Alt M Monitor
|
||||||
Alt+N Enable Tx()
|
Alt+N Enable Tx
|
||||||
Alt+Q Log QSO()
|
Alt+Q Log QSO
|
||||||
Alt+S Stop()
|
Alt+S Stop monitoring
|
||||||
Alt+T Tune
|
Alt+T Tune
|
||||||
Alt+V Save the most recently completed *.wav file
|
Alt+V Save the most recently completed *.wav file
|
||||||
|
@ -49,6 +49,8 @@ WideGraph::WideGraph(QWidget *parent) :
|
|||||||
ui->widePlot->setBinsPerPixel(nbpp);
|
ui->widePlot->setBinsPerPixel(nbpp);
|
||||||
m_slope=settings.value("Slope",0.0).toDouble();
|
m_slope=settings.value("Slope",0.0).toDouble();
|
||||||
ui->slopeSpinBox->setValue(m_slope);
|
ui->slopeSpinBox->setValue(m_slope);
|
||||||
|
ui->widePlot->setStartFreq(settings.value("StartFreq",0).toInt());
|
||||||
|
ui->fStartSpinBox->setValue(ui->widePlot->startFreq());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,6 +77,7 @@ void WideGraph::saveSettings()
|
|||||||
settings.setValue("Cumulative",ui->widePlot->m_bCumulative);
|
settings.setValue("Cumulative",ui->widePlot->m_bCumulative);
|
||||||
settings.setValue("BinsPerPixel",ui->widePlot->binsPerPixel());
|
settings.setValue("BinsPerPixel",ui->widePlot->binsPerPixel());
|
||||||
settings.setValue("Slope",m_slope);
|
settings.setValue("Slope",m_slope);
|
||||||
|
settings.setValue("StartFreq",ui->widePlot->startFreq());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,16 +103,12 @@ void WideGraph::dataSink2(float s[], float df3, int ihsym,
|
|||||||
for (int i=0; i<NSMAX; i++)
|
for (int i=0; i<NSMAX; i++)
|
||||||
splot[i] /= n; //Normalize the average
|
splot[i] /= n; //Normalize the average
|
||||||
n=0;
|
n=0;
|
||||||
|
int i=int(ui->widePlot->startFreq()/df3 + 0.5);
|
||||||
// int w=ui->widePlot->plotWidth();
|
|
||||||
int i0=-1; //###
|
|
||||||
int i=i0;
|
|
||||||
int jz=5000.0/(nbpp*df3);
|
int jz=5000.0/(nbpp*df3);
|
||||||
for (int j=0; j<jz; j++) {
|
for (int j=0; j<jz; j++) {
|
||||||
float sum=0;
|
float sum=0;
|
||||||
for (int k=0; k<nbpp; k++) {
|
for (int k=0; k<nbpp; k++) {
|
||||||
i++;
|
sum += splot[i++];
|
||||||
sum += splot[i];
|
|
||||||
}
|
}
|
||||||
swide[j]=sum;
|
swide[j]=sum;
|
||||||
}
|
}
|
||||||
@ -123,7 +122,7 @@ void WideGraph::dataSink2(float s[], float df3, int ihsym,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_ntr0=ntr;
|
m_ntr0=ntr;
|
||||||
ui->widePlot->draw(swide,i0);
|
ui->widePlot->draw(swide);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,3 +311,8 @@ void WideGraph::setDialFreq(double d)
|
|||||||
m_dialFreq=d;
|
m_dialFreq=d;
|
||||||
ui->widePlot->setDialFreq(d);
|
ui->widePlot->setDialFreq(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WideGraph::on_fStartSpinBox_valueChanged(int n)
|
||||||
|
{
|
||||||
|
ui->widePlot->setStartFreq(n);
|
||||||
|
}
|
||||||
|
@ -61,6 +61,7 @@ private slots:
|
|||||||
void on_spec2dComboBox_currentIndexChanged(const QString &arg1);
|
void on_spec2dComboBox_currentIndexChanged(const QString &arg1);
|
||||||
void on_fMinSpinBox_valueChanged(int n);
|
void on_fMinSpinBox_valueChanged(int n);
|
||||||
void on_slopeSpinBox_valueChanged(double d);
|
void on_slopeSpinBox_valueChanged(double d);
|
||||||
|
void on_fStartSpinBox_valueChanged(int n);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double m_slope;
|
double m_slope;
|
||||||
|
46
widegraph.ui
46
widegraph.ui
@ -68,6 +68,50 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="fStartSpinBox">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>80</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> Hz</string>
|
||||||
|
</property>
|
||||||
|
<property name="prefix">
|
||||||
|
<string>Start </string>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>5000</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Minimum</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>8</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="freqSpanSpinBox">
|
<widget class="QSpinBox" name="freqSpanSpinBox">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -256,7 +300,7 @@
|
|||||||
<widget class="QDoubleSpinBox" name="slopeSpinBox">
|
<widget class="QDoubleSpinBox" name="slopeSpinBox">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>60</width>
|
<width>80</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
@ -11,9 +11,11 @@ CONFIG += thread
|
|||||||
|
|
||||||
TARGET = wsjtx
|
TARGET = wsjtx
|
||||||
DESTDIR = ../wsjtx_install
|
DESTDIR = ../wsjtx_install
|
||||||
|
#DESTDIR = ../qt5_install
|
||||||
VERSION = 1.1
|
VERSION = 1.1
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
DEFINES = QT4
|
DEFINES = QT4
|
||||||
|
#DEFINES = QT5
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
DEFINES += WIN32
|
DEFINES += WIN32
|
||||||
|
Loading…
Reference in New Issue
Block a user