mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-08-11 02:12:25 -04:00
Merged from trunk:
------------------------------------------------------------------------ r7997 | k1jt | 2017-08-03 19:18:34 +0100 (Thu, 03 Aug 2017) | 2 lines More User Guide updates. ------------------------------------------------------------------------ r7998 | bsomervi | 2017-08-04 19:03:54 +0100 (Fri, 04 Aug 2017) | 5 lines Optimize decoded text display to limit heap usage Decoded text line now use considerably less heap memory as they accumulate. This change also limits the maximum number of decode lines saved per session to 5000. ------------------------------------------------------------------------ r7999 | k1jt | 2017-08-04 19:07:23 +0100 (Fri, 04 Aug 2017) | 1 line Text and figs for User Guide on Frequency Calibration. Still need same for Reference Spectrum and Equalization. ------------------------------------------------------------------------ r8000 | bsomervi | 2017-08-04 23:00:20 +0100 (Fri, 04 Aug 2017) | 1 line Add missing MOC generated source include ------------------------------------------------------------------------ r8001 | bsomervi | 2017-08-04 23:00:35 +0100 (Fri, 04 Aug 2017) | 1 line Remove \r and \n from process stdout so Windows looks like everthing else ------------------------------------------------------------------------ git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.8@8002 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
445882b7bc
commit
3b48f94e4d
@ -8,6 +8,8 @@
|
|||||||
#include "revision_utils.hpp"
|
#include "revision_utils.hpp"
|
||||||
#include "pimpl_impl.hpp"
|
#include "pimpl_impl.hpp"
|
||||||
|
|
||||||
|
#include "moc_SplashScreen.cpp"
|
||||||
|
|
||||||
class SplashScreen::impl
|
class SplashScreen::impl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
class SplashScreen final
|
class SplashScreen final
|
||||||
: public QSplashScreen
|
: public QSplashScreen
|
||||||
{
|
{
|
||||||
Q_OBJECT;
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SplashScreen ();
|
SplashScreen ();
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QTextCharFormat>
|
#include <QTextCharFormat>
|
||||||
#include <QFont>
|
|
||||||
#include <QTextCursor>
|
#include <QTextCursor>
|
||||||
|
#include <QTextBlock>
|
||||||
|
|
||||||
#include "qt_helpers.hpp"
|
#include "qt_helpers.hpp"
|
||||||
|
|
||||||
@ -13,25 +13,28 @@
|
|||||||
DisplayText::DisplayText(QWidget *parent) :
|
DisplayText::DisplayText(QWidget *parent) :
|
||||||
QTextEdit(parent)
|
QTextEdit(parent)
|
||||||
{
|
{
|
||||||
setReadOnly (true);
|
setReadOnly (true);
|
||||||
viewport ()->setCursor (Qt::ArrowCursor);
|
viewport ()->setCursor (Qt::ArrowCursor);
|
||||||
setWordWrapMode (QTextOption::NoWrap);
|
setWordWrapMode (QTextOption::NoWrap);
|
||||||
setStyleSheet ("");
|
document ()->setMaximumBlockCount (5000); // max lines to limit heap usage
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayText::setContentFont(QFont const& font)
|
void DisplayText::setContentFont(QFont const& font)
|
||||||
{
|
{
|
||||||
setFont (font);
|
char_font_ = font;
|
||||||
m_charFormat.setFont (font);
|
|
||||||
selectAll ();
|
selectAll ();
|
||||||
auto cursor = textCursor ();
|
auto cursor = textCursor ();
|
||||||
cursor.mergeCharFormat (m_charFormat);
|
cursor.beginEditBlock ();
|
||||||
|
auto char_format = cursor.charFormat ();
|
||||||
|
char_format.setFont (char_font_);
|
||||||
|
cursor.mergeCharFormat (char_format);
|
||||||
cursor.clearSelection ();
|
cursor.clearSelection ();
|
||||||
cursor.movePosition (QTextCursor::End);
|
cursor.movePosition (QTextCursor::End);
|
||||||
|
|
||||||
// position so viewport scrolled to left
|
// position so viewport scrolled to left
|
||||||
cursor.movePosition (QTextCursor::Up);
|
cursor.movePosition (QTextCursor::Up);
|
||||||
cursor.movePosition (QTextCursor::StartOfLine);
|
cursor.movePosition (QTextCursor::StartOfLine);
|
||||||
|
cursor.endEditBlock ();
|
||||||
|
|
||||||
setTextCursor (cursor);
|
setTextCursor (cursor);
|
||||||
ensureCursorVisible ();
|
ensureCursorVisible ();
|
||||||
@ -50,32 +53,38 @@ void DisplayText::insertLineSpacer(QString const& line)
|
|||||||
appendText (line, "#d3d3d3");
|
appendText (line, "#d3d3d3");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayText::appendText(QString const& text, QString const& bg)
|
void DisplayText::appendText(QString const& text, QColor bg)
|
||||||
{
|
{
|
||||||
QString escaped {text.trimmed().replace('<',"<").replace('>',">").replace(' ', " ")};
|
auto cursor = textCursor ();
|
||||||
QString s = "<table border=0 cellspacing=0 width=100%><tr><td bgcolor=\"" +
|
cursor.movePosition (QTextCursor::End);
|
||||||
bg + "\">" + escaped + "</td></tr></table>";
|
auto block_format = cursor.blockFormat ();
|
||||||
auto cursor = textCursor ();
|
block_format.setBackground (bg);
|
||||||
cursor.movePosition (QTextCursor::End);
|
if (0 == cursor.position ())
|
||||||
auto pos = cursor.position ();
|
{
|
||||||
cursor.insertHtml (s);
|
cursor.setBlockFormat (block_format);
|
||||||
cursor.setPosition (pos, QTextCursor::MoveAnchor);
|
auto char_format = cursor.charFormat ();
|
||||||
cursor.movePosition (QTextCursor::End, QTextCursor::KeepAnchor);
|
char_format.setFont (char_font_);
|
||||||
cursor.mergeCharFormat (m_charFormat);
|
cursor.setCharFormat (char_format);
|
||||||
cursor.clearSelection ();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cursor.insertBlock (block_format);
|
||||||
|
}
|
||||||
|
cursor.insertText (text);
|
||||||
|
|
||||||
// position so viewport scrolled to left
|
// position so viewport scrolled to left
|
||||||
cursor.movePosition (QTextCursor::Up);
|
cursor.movePosition (QTextCursor::Up);
|
||||||
cursor.movePosition (QTextCursor::StartOfLine);
|
cursor.movePosition (QTextCursor::StartOfLine);
|
||||||
setTextCursor (cursor);
|
setTextCursor (cursor);
|
||||||
ensureCursorVisible ();
|
ensureCursorVisible ();
|
||||||
|
document ()->setMaximumBlockCount (document ()->maximumBlockCount ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString DisplayText::_appendDXCCWorkedB4(QString message, QString const& callsign, QString * bg,
|
QString DisplayText::appendDXCCWorkedB4(QString message, QString const& callsign, QColor * bg,
|
||||||
LogBook logBook, QColor color_CQ,
|
LogBook logBook, QColor color_CQ,
|
||||||
QColor color_DXCC,
|
QColor color_DXCC,
|
||||||
QColor color_NewCall)
|
QColor color_NewCall)
|
||||||
{
|
{
|
||||||
QString call = callsign;
|
QString call = callsign;
|
||||||
QString countryName;
|
QString countryName;
|
||||||
@ -110,18 +119,18 @@ QString DisplayText::_appendDXCCWorkedB4(QString message, QString const& callsig
|
|||||||
if (!countryWorkedBefore) // therefore not worked call either
|
if (!countryWorkedBefore) // therefore not worked call either
|
||||||
{
|
{
|
||||||
message += "!";
|
message += "!";
|
||||||
*bg = color_DXCC.name();
|
*bg = color_DXCC;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (!callWorkedBefore) // but have worked the country
|
if (!callWorkedBefore) // but have worked the country
|
||||||
{
|
{
|
||||||
message += "~";
|
message += "~";
|
||||||
*bg = color_NewCall.name();
|
*bg = color_NewCall;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message += " "; // have worked this call before
|
message += " "; // have worked this call before
|
||||||
*bg = color_CQ.name();
|
*bg = color_CQ;
|
||||||
}
|
}
|
||||||
charsAvail -= 1;
|
charsAvail -= 1;
|
||||||
|
|
||||||
@ -165,14 +174,14 @@ void DisplayText::displayDecodedText(DecodedText decodedText, QString myCall,
|
|||||||
QColor color_CQ, QColor color_MyCall,
|
QColor color_CQ, QColor color_MyCall,
|
||||||
QColor color_DXCC, QColor color_NewCall)
|
QColor color_DXCC, QColor color_NewCall)
|
||||||
{
|
{
|
||||||
QString bg="white";
|
QColor bg {Qt::white};
|
||||||
bool CQcall = false;
|
bool CQcall = false;
|
||||||
if (decodedText.string ().contains (" CQ ")
|
if (decodedText.string ().contains (" CQ ")
|
||||||
|| decodedText.string ().contains (" CQDX ")
|
|| decodedText.string ().contains (" CQDX ")
|
||||||
|| decodedText.string ().contains (" QRZ "))
|
|| decodedText.string ().contains (" QRZ "))
|
||||||
{
|
{
|
||||||
CQcall = true;
|
CQcall = true;
|
||||||
bg=color_CQ.name();
|
bg = color_CQ;
|
||||||
}
|
}
|
||||||
if (myCall != "" and (
|
if (myCall != "" and (
|
||||||
decodedText.indexOf (" " + myCall + " ") >= 0
|
decodedText.indexOf (" " + myCall + " ") >= 0
|
||||||
@ -180,14 +189,14 @@ void DisplayText::displayDecodedText(DecodedText decodedText, QString myCall,
|
|||||||
or decodedText.indexOf ("/" + myCall + " ") >= 0
|
or decodedText.indexOf ("/" + myCall + " ") >= 0
|
||||||
or decodedText.indexOf ("<" + myCall + " ") >= 0
|
or decodedText.indexOf ("<" + myCall + " ") >= 0
|
||||||
or decodedText.indexOf (" " + myCall + ">") >= 0)) {
|
or decodedText.indexOf (" " + myCall + ">") >= 0)) {
|
||||||
bg=color_MyCall.name();
|
bg = color_MyCall;
|
||||||
}
|
}
|
||||||
// if enabled add the DXCC entity and B4 status to the end of the
|
// if enabled add the DXCC entity and B4 status to the end of the
|
||||||
// preformated text line t1
|
// preformated text line t1
|
||||||
auto message = decodedText.string ();
|
auto message = decodedText.string ();
|
||||||
if (displayDXCCEntity && CQcall)
|
if (displayDXCCEntity && CQcall)
|
||||||
message = _appendDXCCWorkedB4 (message, decodedText.CQersCall (), &bg, logBook, color_CQ,
|
message = appendDXCCWorkedB4 (message, decodedText.CQersCall (), &bg, logBook, color_CQ,
|
||||||
color_DXCC, color_NewCall);
|
color_DXCC, color_NewCall);
|
||||||
appendText (message, bg);
|
appendText (message, bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +204,6 @@ void DisplayText::displayDecodedText(DecodedText decodedText, QString myCall,
|
|||||||
void DisplayText::displayTransmittedText(QString text, QString modeTx, qint32 txFreq,
|
void DisplayText::displayTransmittedText(QString text, QString modeTx, qint32 txFreq,
|
||||||
QColor color_TxMsg, bool bFastMode)
|
QColor color_TxMsg, bool bFastMode)
|
||||||
{
|
{
|
||||||
QString bg=color_TxMsg.name();
|
|
||||||
QString t1=" @ ";
|
QString t1=" @ ";
|
||||||
if(modeTx=="FT8") t1=" ~ ";
|
if(modeTx=="FT8") t1=" ~ ";
|
||||||
if(modeTx=="JT4") t1=" $ ";
|
if(modeTx=="JT4") t1=" $ ";
|
||||||
@ -211,12 +219,11 @@ void DisplayText::displayTransmittedText(QString text, QString modeTx, qint32 tx
|
|||||||
t = QDateTime::currentDateTimeUtc().toString("hhmm") + \
|
t = QDateTime::currentDateTimeUtc().toString("hhmm") + \
|
||||||
" Tx " + t2 + t1 + text;
|
" Tx " + t2 + t1 + text;
|
||||||
}
|
}
|
||||||
appendText(t,bg);
|
appendText (t, color_TxMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayText::displayQSY(QString text)
|
void DisplayText::displayQSY(QString text)
|
||||||
{
|
{
|
||||||
QString t = QDateTime::currentDateTimeUtc().toString("hhmmss") + " " + text;
|
QString t = QDateTime::currentDateTimeUtc().toString("hhmmss") + " " + text;
|
||||||
QString bg="hot pink";
|
appendText (t, "hotpink");
|
||||||
appendText(t,bg);
|
|
||||||
}
|
}
|
||||||
|
@ -3,39 +3,39 @@
|
|||||||
#define DISPLAYTEXT_H
|
#define DISPLAYTEXT_H
|
||||||
|
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
#include <QFont>
|
||||||
|
|
||||||
#include "logbook/logbook.h"
|
#include "logbook/logbook.h"
|
||||||
#include "decodedtext.h"
|
#include "decodedtext.h"
|
||||||
|
|
||||||
|
class DisplayText
|
||||||
class DisplayText : public QTextEdit
|
: public QTextEdit
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DisplayText(QWidget *parent = 0);
|
explicit DisplayText(QWidget *parent = 0);
|
||||||
|
|
||||||
void setContentFont (QFont const&);
|
void setContentFont (QFont const&);
|
||||||
void insertLineSpacer(QString const&);
|
void insertLineSpacer(QString const&);
|
||||||
void displayDecodedText(DecodedText decodedText, QString myCall, bool displayDXCCEntity,
|
void displayDecodedText(DecodedText decodedText, QString myCall, bool displayDXCCEntity,
|
||||||
LogBook logBook, QColor color_CQ, QColor color_MyCall,
|
LogBook logBook, QColor color_CQ, QColor color_MyCall,
|
||||||
QColor color_DXCC, QColor color_NewCall);
|
QColor color_DXCC, QColor color_NewCall);
|
||||||
void displayTransmittedText(QString text, QString modeTx, qint32 txFreq,
|
void displayTransmittedText(QString text, QString modeTx, qint32 txFreq,
|
||||||
QColor color_TxMsg, bool bFastMode);
|
QColor color_TxMsg, bool bFastMode);
|
||||||
void displayQSY(QString text);
|
void displayQSY(QString text);
|
||||||
|
|
||||||
signals:
|
Q_SIGNAL void selectCallsign (bool alt, bool ctrl);
|
||||||
void selectCallsign(bool alt, bool ctrl);
|
|
||||||
|
|
||||||
public slots:
|
Q_SLOT void appendText (QString const& text, QColor bg = Qt::white);
|
||||||
void appendText(QString const& text, QString const& bg = "white");
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mouseDoubleClickEvent(QMouseEvent *e);
|
void mouseDoubleClickEvent(QMouseEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString _appendDXCCWorkedB4(QString message, QString const& callsign, QString * bg, LogBook logBook,
|
QString appendDXCCWorkedB4(QString message, QString const& callsign, QColor * bg, LogBook logBook,
|
||||||
QColor color_CQ, QColor color_DXCC, QColor color_NewCall);
|
QColor color_CQ, QColor color_DXCC, QColor color_NewCall);
|
||||||
|
|
||||||
QTextCharFormat m_charFormat;
|
QFont char_font_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DISPLAYTEXT_H
|
#endif // DISPLAYTEXT_H
|
||||||
|
@ -22,6 +22,7 @@ set (UG_SRCS
|
|||||||
controls-functions-status-bar.adoc
|
controls-functions-status-bar.adoc
|
||||||
controls-functions-wide-graph.adoc
|
controls-functions-wide-graph.adoc
|
||||||
cooperating-programs.adoc
|
cooperating-programs.adoc
|
||||||
|
decoder_notes.adoc
|
||||||
faq.adoc
|
faq.adoc
|
||||||
font-sizes.adoc
|
font-sizes.adoc
|
||||||
install-from-source.adoc
|
install-from-source.adoc
|
||||||
@ -29,11 +30,11 @@ set (UG_SRCS
|
|||||||
install-mac.adoc
|
install-mac.adoc
|
||||||
install-windows.adoc
|
install-windows.adoc
|
||||||
introduction.adoc
|
introduction.adoc
|
||||||
|
measurement_tools.adoc
|
||||||
protocols.adoc
|
protocols.adoc
|
||||||
logging.adoc
|
logging.adoc
|
||||||
make-qso.adoc
|
make-qso.adoc
|
||||||
new_features.adoc
|
new_features.adoc
|
||||||
odds_and_ends.adoc
|
|
||||||
platform-dependencies.adoc
|
platform-dependencies.adoc
|
||||||
protocols.adoc
|
protocols.adoc
|
||||||
settings-advanced.adoc
|
settings-advanced.adoc
|
||||||
|
@ -25,7 +25,7 @@ and audio Tx frequency.
|
|||||||
* Check the box *Lock Tx=Rx* to make the frequencies always track one
|
* Check the box *Lock Tx=Rx* to make the frequencies always track one
|
||||||
another.
|
another.
|
||||||
|
|
||||||
TIP: In general we do not recommend using *Lock Tx=Rx* since it
|
IMPORTANT: In general we do not recommend using *Lock Tx=Rx* since it
|
||||||
encourages poor radio etiquette when running a frequency. With this
|
encourages poor radio etiquette when running a frequency. With this
|
||||||
box checked, your own Tx frequency will move around following your
|
box checked, your own Tx frequency will move around following your
|
||||||
callers.
|
callers.
|
||||||
|
@ -90,15 +90,3 @@ End of line information::
|
|||||||
`R` - Return code from QRA64 decoder +
|
`R` - Return code from QRA64 decoder +
|
||||||
`T` - Length of analyzed region (s)
|
`T` - Length of analyzed region (s)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=== Reference Spectrum
|
|
||||||
|
|
||||||
WSJT-X provides a tool that can be used to determine the detailed
|
|
||||||
shape of your receiver's passband. Disconnect your antenna or tune to
|
|
||||||
a quiet frequency with no signals. With WSJT-X running in one of the
|
|
||||||
slow modes, select *Measure reference spectrum* from the *File* menu.
|
|
||||||
Wait for about a minute and then hit the *Stop* button. A file named
|
|
||||||
`refspec.dat` should appear in your log directory.
|
|
||||||
|
|
||||||
[ ... more to come ...]
|
|
BIN
doc/user_guide/en/images/FreqCal.png
Normal file
BIN
doc/user_guide/en/images/FreqCal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 213 KiB |
BIN
doc/user_guide/en/images/FreqCal_Graph.png
Normal file
BIN
doc/user_guide/en/images/FreqCal_Graph.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -31,10 +31,10 @@ lie in the range –30 to –1 dB, and values are significantly compressed
|
|||||||
above about -10 dB. JT9 supports the extended range –50 to +49 dB and
|
above about -10 dB. JT9 supports the extended range –50 to +49 dB and
|
||||||
assigns more reliable numbers to relatively strong signals.
|
assigns more reliable numbers to relatively strong signals.
|
||||||
|
|
||||||
NOTE: Signals become visible on the waterfall around S/N = –26 dB
|
NOTE: Signals become visible on the waterfall around S/N = –26 dB and
|
||||||
and audible (to someone with very good hearing) around –15
|
audible (to someone with very good hearing) around –15 dB. Thresholds
|
||||||
dB. Thresholds for decodability are around -23 dB for JT4, –24 dB for
|
for decodability are around -20 dB for FT8, -23 dB for JT4, –25 dB for
|
||||||
JT65, –26 dB for JT9.
|
JT65, –27 dB for JT9.
|
||||||
|
|
||||||
=== Free-Text Messages
|
=== Free-Text Messages
|
||||||
|
|
||||||
@ -50,11 +50,11 @@ or rag-chewing.
|
|||||||
=== Auto-Sequencing
|
=== Auto-Sequencing
|
||||||
|
|
||||||
The slow modes JT4, JT9, JT65, and QRA64 allow nearly 10 seconds at
|
The slow modes JT4, JT9, JT65, and QRA64 allow nearly 10 seconds at
|
||||||
the end of each one-minute receiving sequence in which you can inspect
|
the end of each one-minute receiving sequence -- enough time for you
|
||||||
decoded messages and decide how to reply. With its 15-second T/R
|
to inspect decoded messages and decide how to reply. The 15-second
|
||||||
cycles, FT8 allows only about two seconds for this task. For this
|
T/R cycles of FT8 allow only about two seconds for this task, which is
|
||||||
reason a basic auto-sequencing feature is offered. Check *Auto Seq*
|
often not enough. For this reason a basic auto-sequencing feature is
|
||||||
on the main window to enable this feature:
|
offered. Check *Auto Seq* on the main window to enable this feature:
|
||||||
|
|
||||||
image::auto-seq.png[align="center",alt="AutoSeq"]
|
image::auto-seq.png[align="center",alt="AutoSeq"]
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ When calling CQ you may also choose to check the box *Call 1st*.
|
|||||||
_WSJT-X_ will then respond automatically to the first decoded
|
_WSJT-X_ will then respond automatically to the first decoded
|
||||||
responder to your CQ.
|
responder to your CQ.
|
||||||
|
|
||||||
TIP: When *Auto-Seq* is enabled the program will de-activate *Enable
|
NOTE: When *Auto-Seq* is enabled the program de-activates *Enable
|
||||||
Tx* at the end of each QSO. We do not want _WSJT-X_ to make fully
|
Tx* at the end of each QSO. We do not want _WSJT-X_ to make fully
|
||||||
automated QSOs.
|
automated QSOs.
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ In each case, the compound callsign is treated as *Type 2* because the
|
|||||||
add-on prefix or suffix is _not_ one of those in the fixed list. Note
|
add-on prefix or suffix is _not_ one of those in the fixed list. Note
|
||||||
that a second callsign is never permissible in these messages.
|
that a second callsign is never permissible in these messages.
|
||||||
|
|
||||||
TIP: During a transmission your outgoing message is displayed in the
|
NOTE: During a transmission your outgoing message is displayed in the
|
||||||
first label on the *Status Bar* and shown exactly as another station
|
first label on the *Status Bar* and shown exactly as another station
|
||||||
will receive it. You can check to see that you are actually
|
will receive it. You can check to see that you are actually
|
||||||
transmitting the message you wish to send.
|
transmitting the message you wish to send.
|
||||||
|
74
doc/user_guide/en/measurement_tools.adoc
Normal file
74
doc/user_guide/en/measurement_tools.adoc
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
=== Frequency Calibration
|
||||||
|
|
||||||
|
Many _WSJT-X_ capabilities depend on signal-detection bandwidths no
|
||||||
|
more than a few Hz. Frequency accuracy and stability are therefore
|
||||||
|
unusually important. We provide tools to enable accurate frequency
|
||||||
|
calibration of your radio, as well as precise frequency measurement of
|
||||||
|
on-the-air signals. The calibration procedure works by automatically
|
||||||
|
cycling your CAT-controlled radio through a series of preset
|
||||||
|
frequencies of carrier-based signals at reliably known frequencies,
|
||||||
|
measuring the error in dial frequency for each signal.
|
||||||
|
|
||||||
|
You will probably find it convenient to define and use a special
|
||||||
|
<<CONFIG-MENU,Configuration>> dedicated to frequency calibration.
|
||||||
|
Then complete the following steps, as appropriate for your system.
|
||||||
|
|
||||||
|
- Switch to FreqCal mode
|
||||||
|
|
||||||
|
- In the _Working Frequencies_ box on the *Settings -> Frequencies*
|
||||||
|
tab, delete any default frequencies for *FreqCal* mode that are not
|
||||||
|
relevant for your location. You may want to replace some of them with
|
||||||
|
reliably known frequencies receivable at your location.
|
||||||
|
|
||||||
|
TIP: We find major-city AM broadcast stations generally serve well as
|
||||||
|
frequency calibrators at the low frequency end of the spectrum. In
|
||||||
|
North America we also use the standard time-and-frequency broadcasts
|
||||||
|
of WWV at 2.500, 5.000, 10.000, 15.000, and 20.000 MHz, and CHU at
|
||||||
|
3.330, 7.850, and 14.670 MHz. Similar shortwave signals are available
|
||||||
|
in other parts of the world.
|
||||||
|
|
||||||
|
- During the calibration procedure, the radio's USB dial frequency is
|
||||||
|
offset 1500 Hz below each *FreqCal* entry in the default frequencies
|
||||||
|
list. As shown in the ecreen shot below, detected signal carriers
|
||||||
|
therefore appear at about 1500 Hz in the WSJT-X waterfall.
|
||||||
|
|
||||||
|
image::FreqCal.png[align="left",alt="FreqCal"]
|
||||||
|
|
||||||
|
With modern synthesized radios, small measured offsets from 1500 Hz
|
||||||
|
will exhibit a straight-line dependence on frequency. You can
|
||||||
|
approximate the calibration of your radio by simply dividing the
|
||||||
|
measured frequency offset (in Hz) at the highest reliable frequency by
|
||||||
|
the nominal frequency itself (in MHz). For example, the 20 MHz
|
||||||
|
measurement for WWV shown above produced a measured tone offset of
|
||||||
|
24.6 Hz, displayed in the _WSJT-X_ decoded text window. The resulting
|
||||||
|
calibration constant is 24.6/20=1.23 parts per million. This number
|
||||||
|
may be entered as *Slope* on the *settings -> Frequencies* tab.
|
||||||
|
|
||||||
|
A more precise calibration can be effected by fitting the intercept
|
||||||
|
and slope of a straight line to the whole sequence of calibration
|
||||||
|
measurements, as shown for these measurements in the graph plotted
|
||||||
|
below. Software tools for completing this task are included with the
|
||||||
|
_WSJT-X_ installation, and detailed instructions for their use are
|
||||||
|
available at https://physics.princeton.edu/pulsar/k1jt/FMT_User.pdf.
|
||||||
|
Using these tools and no specialized hardware beyond your
|
||||||
|
CAT-interfaced radio, you can calibrate the radio to better than 1 Hz
|
||||||
|
and compete very effectively in the ARRL's periodic Frequency
|
||||||
|
Measuring Tests.
|
||||||
|
|
||||||
|
image::FreqCal_Graph.png[align="left",alt="FreqCal_Graph"]
|
||||||
|
|
||||||
|
=== Reference Spectrum
|
||||||
|
|
||||||
|
WSJT-X provides a tool that can be used to determine the detailed
|
||||||
|
shape of your receiver's passband. Disconnect your antenna or tune to
|
||||||
|
a quiet frequency with no signals. With WSJT-X running in one of the
|
||||||
|
slow modes, select *Measure reference spectrum* from the *Tools* menu.
|
||||||
|
Wait for about a minute and then hit the *Stop* button. A file named
|
||||||
|
`refspec.dat` will appear in your log directory.
|
||||||
|
|
||||||
|
[ ... TBD ... ]
|
||||||
|
|
||||||
|
=== Equalization
|
||||||
|
|
||||||
|
[ ... TBD ... ]
|
||||||
|
|
@ -17,15 +17,15 @@ added to _WSJT-X_ since Version 1.7.0:
|
|||||||
windows
|
windows
|
||||||
|
|
||||||
- New set of suggested default frequencies specific to the three IARU
|
- New set of suggested default frequencies specific to the three IARU
|
||||||
Regions.
|
regions
|
||||||
|
|
||||||
- Enhanced scheme for managing table of suggested default operating
|
- Enhanced scheme for managing table of suggested default operating
|
||||||
frequencies
|
frequencies
|
||||||
|
|
||||||
- Improved CAT control for many radios, including those controlled
|
- Improved CAT control for many radios, including those controlled
|
||||||
through Commander or OmniRig.
|
through Commander or OmniRig
|
||||||
|
|
||||||
- Bug fixes and tweaks to user interface
|
- Bug fixes and minor tweaks to user interface
|
||||||
|
|
||||||
=== Documentation Conventions
|
=== Documentation Conventions
|
||||||
|
|
||||||
|
@ -11,10 +11,6 @@ purposes a good setting is 6 or 7.
|
|||||||
decodes using Deep Search. Higher numbers will display results
|
decodes using Deep Search. Higher numbers will display results
|
||||||
with lower confidence levels.
|
with lower confidence levels.
|
||||||
|
|
||||||
- Check *FT8 and MSK144 Contest Mode* to enable generation and
|
|
||||||
auto-sequencing of MSK144 messages with four-character grid locators
|
|
||||||
in place of signal reports.
|
|
||||||
|
|
||||||
- Check *Two-pass decoding* to enable a second decoding pass after
|
- Check *Two-pass decoding* to enable a second decoding pass after
|
||||||
signals producing first-pass decodes have been subtracted from the
|
signals producing first-pass decodes have been subtracted from the
|
||||||
received data stream.
|
received data stream.
|
||||||
@ -35,6 +31,10 @@ IMPORTANT: For the health of your T/R relays and external
|
|||||||
preamplifier, we strongly recommend using a hardware sequencer and
|
preamplifier, we strongly recommend using a hardware sequencer and
|
||||||
testing to make sure that sequencing is correct.
|
testing to make sure that sequencing is correct.
|
||||||
|
|
||||||
|
- Check *FT8 and MSK144 Contest Mode* to enable generation and
|
||||||
|
auto-sequencing of MSK144 messages with four-character grid locators
|
||||||
|
in place of signal reports.
|
||||||
|
|
||||||
- Check *x 2 Tone spacing* to generate Tx audio with twice the normal
|
- Check *x 2 Tone spacing* to generate Tx audio with twice the normal
|
||||||
tone spacing. This feature is intended for use with specialized LF/MF
|
tone spacing. This feature is intended for use with specialized LF/MF
|
||||||
transmitters that divide the audio waveform by 2 before further
|
transmitters that divide the audio waveform by 2 before further
|
||||||
|
@ -37,5 +37,5 @@ window is displayed.
|
|||||||
- _Remember power settings by band_: Checking either of these will
|
- _Remember power settings by band_: Checking either of these will
|
||||||
cause _WSJT-X_ to remember the *Pwr* slider setting for that operation
|
cause _WSJT-X_ to remember the *Pwr* slider setting for that operation
|
||||||
on a band-by-band basis. For example, when *Tune* is checked here and
|
on a band-by-band basis. For example, when *Tune* is checked here and
|
||||||
you click the *Tune* on the main window, the power slider will change
|
you click the *Tune* button on the main window, the power slider will
|
||||||
to the most recent setting used for *Tune* on the band in use.
|
change to the most recent setting used for *Tune* on the band in use.
|
||||||
|
@ -17,6 +17,6 @@ NOTE: If you are using a callsign with an add-on prefix or
|
|||||||
suffix, or wish to work a station using such a call, be sure to read
|
suffix, or wish to work a station using such a call, be sure to read
|
||||||
the section <<COMP-CALL,Compound Callsigns>>.
|
the section <<COMP-CALL,Compound Callsigns>>.
|
||||||
|
|
||||||
IMPORTANT: Enabling VHF/UHF/Microwave features necessarily disables
|
NOTE: Enabling VHF/UHF/Microwave features necessarily disables the
|
||||||
the wideband multi-decode capability of JT65. In most circumstances
|
wideband multi-decode capability of JT65. In most circumstances you
|
||||||
you should turn this feature off when operating at HF.
|
should turn this feature off when operating at HF.
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
image::RadioTab.png[align="center",alt="Radio Tab"]
|
image::RadioTab.png[align="center",alt="Radio Tab"]
|
||||||
|
|
||||||
_WSJT-X_ offers CAT (Computer Aided Transceiver) control of the
|
_WSJT-X_ offers CAT (Computer Aided Transceiver) control of relevant
|
||||||
relevant features of most modern transceivers. To configure the
|
features of most modern transceivers. To configure the program for
|
||||||
program for your radio, select the *Radio* tab.
|
your radio, select the *Radio* tab.
|
||||||
|
|
||||||
- Select your radio type from the drop-down list labeled *Rig*, or
|
- Select your radio type from the drop-down list labeled *Rig*, or
|
||||||
*None* if you do not wish to use CAT control.
|
*None* if you do not wish to use CAT control.
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
- SSB transceiver and antenna
|
- SSB transceiver and antenna
|
||||||
- Computer running Windows (XP or later), Linux, or OS X
|
- Computer running Windows (XP or later), Linux, or OS X
|
||||||
- 1.5 GHz or faster CPU and 200 MB of available memory. (MSK144
|
- 1.5 GHz or faster CPU and 200 MB of available memory; faster
|
||||||
especially benefits from a multi-core CPU)
|
machines are better
|
||||||
- Monitor with at least 1024 x 780 resolution
|
- Monitor with at least 1024 x 780 resolution
|
||||||
- Computer-to-radio interface using a serial port or equivalent USB
|
- Computer-to-radio interface using a serial port or equivalent USB
|
||||||
device for T/R switching, or CAT control, or VOX, as required for
|
device for T/R switching, or CAT control, or VOX, as required for
|
||||||
your radio-to-computer connections
|
your radio-to-computer connections
|
||||||
- Audio input and output devices supported by the operating system and
|
- Audio input and output devices supported by the operating system and
|
||||||
configured for sample rate 48000 Hz.
|
configured for sample rate 48000 Hz, 16 bits
|
||||||
- Audio or equivalent USB connections between transceiver and computer
|
- Audio or equivalent USB connections between transceiver and computer
|
||||||
- A means for synchronizing the computer clock to UTC within ±1 second
|
- A means for synchronizing the computer clock to UTC within ±1 second
|
||||||
|
@ -46,9 +46,9 @@ clicks or glitches. Make sure that this is true even when you
|
|||||||
simultaneously use the computer to do other tasks such as email, web
|
simultaneously use the computer to do other tasks such as email, web
|
||||||
browsing, etc.
|
browsing, etc.
|
||||||
|
|
||||||
* Adjust the *Pwr" slider (at the right edge of the main window)
|
* Adjust the *Pwr* slider (at right edge of main window) downward from
|
||||||
downward from its maximum until the RF output from your transmitter
|
its maximum until the RF output from your transmitter falls slightly.
|
||||||
falls slightly. This is generally a good level for audio drive.
|
This is generally a good level for audio drive.
|
||||||
|
|
||||||
* Toggle the *Tune* button once more or click *Halt Tx* to stop your
|
* Toggle the *Tune* button once more or click *Halt Tx* to stop your
|
||||||
test transmission.
|
test transmission.
|
||||||
|
@ -46,5 +46,5 @@ This behavior is desirable so that you will not inadvertently change
|
|||||||
your Tx frequency to that of a tail-ender who called you somewhere
|
your Tx frequency to that of a tail-ender who called you somewhere
|
||||||
else in the FT8 subband.
|
else in the FT8 subband.
|
||||||
|
|
||||||
IMPORTANT: When finished with this Tutorial, don’t forget to re-enter
|
IMPORTANT: When finished with this Tutorial, don't forget to re-enter
|
||||||
your own callsign as *My Call* on the *Settings | General* tab.
|
your own callsign as *My Call* on the *Settings | General* tab.
|
||||||
|
@ -68,7 +68,7 @@ include::install-from-source.adoc[]
|
|||||||
Select *Settings* from the *File* menu or by typing *F2*. (On
|
Select *Settings* from the *File* menu or by typing *F2*. (On
|
||||||
Macintosh select *Preferences* from the _WSJT-X_ menu, or use the
|
Macintosh select *Preferences* from the _WSJT-X_ menu, or use the
|
||||||
keyboard shortcut *Cmd+,*). The following sections describe setup
|
keyboard shortcut *Cmd+,*). The following sections describe setup
|
||||||
options available on each of seven tabs selectable near the top of the
|
options available on each of eight tabs selectable near the top of the
|
||||||
window.
|
window.
|
||||||
|
|
||||||
[[GENERAL]]
|
[[GENERAL]]
|
||||||
@ -110,12 +110,12 @@ include::transceiver-setup.adoc[]
|
|||||||
[[TUTORIAL]]
|
[[TUTORIAL]]
|
||||||
== Basic Operating Tutorial
|
== Basic Operating Tutorial
|
||||||
|
|
||||||
<<TUT_MAIN,Sections 6.1>> through <<TUT_EX2,6.4>> introduce basic user
|
This section introduces the basic user controls and program behavior
|
||||||
controls and program behavior of _WSJT-X_. We suggest that new users
|
of _WSJT-X_, with particular emphasis on the JT9, JT65, and FT8 modes.
|
||||||
should go through the full HF-oriented tutorial, preferably while at
|
We suggest that new users should go through the full HF-oriented
|
||||||
your radio. Subsequent sections cover additional details on
|
tutorial, preferably while at your radio. Subsequent sections cover
|
||||||
<<MAKE_QSOS,Making QSOs>>, <<WSPR,WSPR mode>> and <<VHF_AND_UP,VHF+
|
additional details on <<MAKE_QSOS,Making QSOs>>, <<WSPR,WSPR mode>>
|
||||||
Features>>.
|
and <<VHF_AND_UP,VHF+ Features>>.
|
||||||
|
|
||||||
[[TUT_MAIN]]
|
[[TUT_MAIN]]
|
||||||
=== Main Window Settings
|
=== Main Window Settings
|
||||||
@ -184,9 +184,13 @@ include::controls-functions-wide-graph.adoc[]
|
|||||||
== Logging
|
== Logging
|
||||||
include::logging.adoc[]
|
include::logging.adoc[]
|
||||||
|
|
||||||
[[ODDS_AND_ENDS]]
|
[[DECODER_NOTES]]
|
||||||
== Odds and Ends
|
== Decoder Notes
|
||||||
include::odds_and_ends.adoc[]
|
include::decoder_notes.adoc[]
|
||||||
|
|
||||||
|
[[MEASUREMENT_TOOLS]]
|
||||||
|
== Measurement Tools
|
||||||
|
include::measurement_tools.adoc[]
|
||||||
|
|
||||||
[[COOP_PGMS]]
|
[[COOP_PGMS]]
|
||||||
== Cooperating Programs
|
== Cooperating Programs
|
||||||
@ -213,17 +217,6 @@ include::astro_data.adoc[]
|
|||||||
== Utility Programs
|
== Utility Programs
|
||||||
include::utilities.adoc[]
|
include::utilities.adoc[]
|
||||||
|
|
||||||
////
|
|
||||||
[[TXRX]]
|
|
||||||
== Implementation Details
|
|
||||||
include::implementation.adoc[]
|
|
||||||
|
|
||||||
[[TROUBLE_SHOOTING]]
|
|
||||||
== Troubleshooting
|
|
||||||
To be added (?) ...
|
|
||||||
|
|
||||||
////
|
|
||||||
|
|
||||||
[[SUPPORT]]
|
[[SUPPORT]]
|
||||||
== Support
|
== Support
|
||||||
include::support.adoc[]
|
include::support.adoc[]
|
||||||
|
@ -2718,7 +2718,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
}
|
}
|
||||||
|
|
||||||
DecodedText decodedtext;
|
DecodedText decodedtext;
|
||||||
decodedtext = t.replace(QChar::LineFeed,""); //t.replace(QChar::LineFeed,"").mid(0,t.length()-4);
|
decodedtext = QString::fromUtf8 (t.constData ()).remove (QRegularExpression {"\r|\n"});
|
||||||
|
|
||||||
//Left (Band activity) window
|
//Left (Band activity) window
|
||||||
if(!bAvgMsg) {
|
if(!bAvgMsg) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user