diff --git a/devsetup.cpp b/devsetup.cpp
index 240317410..8d1e61a39 100644
--- a/devsetup.cpp
+++ b/devsetup.cpp
@@ -489,6 +489,11 @@ void DevSetup::on_handshakeComboBox_activated(int index)
m_handshake=ui.handshakeComboBox->itemText(index);
}
+void DevSetup::on_handshakeComboBox_currentIndexChanged(int index)
+{
+ ui.RTSCheckBox->setEnabled(index != 2);
+}
+
void DevSetup::on_dataBitsComboBox_activated(int index)
{
m_dataBitsIndex=index;
@@ -567,9 +572,9 @@ void DevSetup::openRig()
sprintf(buf,"%d",m_stopBits);
rig->setConf("stop_bits",buf);
rig->setConf("serial_handshake",m_handshake.toLatin1().data());
- if(m_bDTRoff) {
- rig->setConf("rts_state","OFF");
- rig->setConf("dtr_state","OFF");
+ rig->setConf("dtr_state",m_bDTR ? "ON" : "OFF");
+ if(ui.RTSCheckBox->isEnabled()) {
+ rig->setConf("rts_state",m_bRTS ? "ON" : "OFF");
}
}
@@ -604,9 +609,14 @@ void DevSetup::on_testPTTButton_clicked()
}
}
-void DevSetup::on_cbDTRoff_toggled(bool checked)
+void DevSetup::on_DTRCheckBox_toggled(bool checked)
{
- m_bDTRoff=checked;
+ m_bDTR=checked;
+}
+
+void DevSetup::on_RTSCheckBox_toggled(bool checked)
+{
+ m_bRTS=checked;
}
void DevSetup::on_rbData_toggled(bool checked)
@@ -635,7 +645,6 @@ void DevSetup::on_pttMethodComboBox_currentIndexChanged(int index)
void DevSetup::enableWidgets()
{
ui.cbEnableCAT->setChecked(m_catEnabled);
- ui.cbDTRoff->setChecked(m_bDTRoff);
ui.rigComboBox->setEnabled(m_catEnabled);
ui.testCATButton->setEnabled(m_catEnabled);
ui.label_4->setEnabled(m_catEnabled);
@@ -653,7 +662,10 @@ void DevSetup::enableWidgets()
ui.dataBitsComboBox->setEnabled(bSerial);
ui.stopBitsComboBox->setEnabled(bSerial);
ui.handshakeComboBox->setEnabled(bSerial);
- ui.cbDTRoff->setEnabled(bSerial);
+ ui.DTRCheckBox->setEnabled(bSerial);
+ ui.DTRCheckBox->setChecked(m_bDTR);
+ ui.RTSCheckBox->setEnabled(bSerial && m_handshakeIndex != 2);
+ ui.RTSCheckBox->setChecked(m_bRTS);
ui.rbData->setEnabled(bSerial);
ui.rbMic->setEnabled(bSerial);
ui.label_21->setEnabled(bSerial);
diff --git a/devsetup.h b/devsetup.h
index 838371a35..9bf129532 100644
--- a/devsetup.h
+++ b/devsetup.h
@@ -46,7 +46,8 @@ public:
bool m_catEnabled;
bool m_After73;
bool m_bRigOpen;
- bool m_bDTRoff;
+ bool m_bDTR;
+ bool m_bRTS;
bool m_pttData;
bool m_bSplit;
bool m_bXIT;
@@ -82,13 +83,15 @@ private slots:
void on_cbEnableCAT_toggled(bool checked);
void on_serialRateComboBox_activated(int index);
void on_handshakeComboBox_activated(int index);
+ void on_handshakeComboBox_currentIndexChanged(int index);
void on_dataBitsComboBox_activated(int index);
void on_stopBitsComboBox_activated(int index);
void on_rigComboBox_activated(int index);
void on_cbID73_toggled(bool checked);
void on_testCATButton_clicked();
void on_testPTTButton_clicked();
- void on_cbDTRoff_toggled(bool checked);
+ void on_DTRCheckBox_toggled(bool checked);
+ void on_RTSCheckBox_toggled(bool checked);
void on_rbData_toggled(bool checked);
void on_pollSpinBox_valueChanged(int n);
void on_pttComboBox_currentIndexChanged(int index);
diff --git a/devsetup.ui b/devsetup.ui
index 857ab809b..049324c74 100644
--- a/devsetup.ui
+++ b/devsetup.ui
@@ -6,8 +6,8 @@
0
0
- 588
- 557
+ 570
+ 465
@@ -594,9 +594,22 @@
-
-
+
+
+ false
+
- RTS/DTR OFF
+ DTR
+
+
+
+ -
+
+
+ false
+
+
+ RTS
@@ -931,7 +944,7 @@
-
- XonXoff
+ XONXOFF
-
@@ -1839,8 +1852,8 @@
0
0
- 527
- 554
+ 308
+ 505
@@ -1863,13 +1876,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -1885,7 +1898,7 @@
90
- 27
+ 20
@@ -1898,7 +1911,7 @@
90
- 27
+ 20
@@ -1917,7 +1930,7 @@
90
- 16777215
+ 20
@@ -1939,13 +1952,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -1961,7 +1974,7 @@
90
- 27
+ 20
@@ -1977,7 +1990,7 @@
90
- 27
+ 20
@@ -2006,13 +2019,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2034,13 +2047,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2062,13 +2075,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2081,10 +2094,16 @@
-
+
+
+ 0
+ 20
+
+
90
- 27
+ 20
@@ -2097,7 +2116,7 @@
90
- 16777215
+ 20
@@ -2110,7 +2129,7 @@
90
- 16777215
+ 20
@@ -2123,7 +2142,7 @@
90
- 16777215
+ 20
@@ -2139,7 +2158,7 @@
90
- 16777215
+ 20
@@ -2155,7 +2174,7 @@
90
- 27
+ 20
@@ -2174,13 +2193,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2205,13 +2224,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2230,7 +2249,7 @@
90
- 27
+ 20
@@ -2243,7 +2262,7 @@
90
- 27
+ 20
@@ -2256,7 +2275,7 @@
90
- 16777215
+ 20
@@ -2275,13 +2294,13 @@
90
- 27
+ 20
90
- 16777215
+ 20
@@ -2300,7 +2319,7 @@
90
- 16777215
+ 20
@@ -2343,7 +2362,7 @@
90
- 27
+ 20
@@ -2356,7 +2375,7 @@
90
- 16777215
+ 20
@@ -2369,7 +2388,7 @@
90
- 16777215
+ 20
@@ -2382,7 +2401,7 @@
90
- 16777215
+ 20
@@ -2395,7 +2414,7 @@
90
- 16777215
+ 20
@@ -2408,7 +2427,7 @@
90
- 16777215
+ 20
@@ -2421,7 +2440,7 @@
90
- 16777215
+ 20
@@ -2434,7 +2453,7 @@
90
- 16777215
+ 20
@@ -2447,7 +2466,7 @@
90
- 16777215
+ 20
diff --git a/mainwindow.cpp b/mainwindow.cpp
index a3f9445b1..eeb2390a1 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -32,7 +32,7 @@ WideGraph* g_pWideGraph = NULL;
LogQSO* logDlg = NULL;
Rig* rig = NULL;
QTextEdit* pShortcuts;
-QTcpSocket* socket = new QTcpSocket(0);
+QTcpSocket* commanderSocket = new QTcpSocket(0);
QString rev="$Rev$";
QString Program_Title_Version=" WSJT-X v1.1, r" + rev.mid(6,4) +
@@ -466,8 +466,8 @@ void MainWindow::writeSettings()
settings.setValue("Runaway",m_runaway);
settings.setValue("Tx2QSO",m_tx2QSO);
settings.setValue("MultipleOK",m_bMultipleOK);
- settings.setValue("DTRoff",m_bDTRoff);
- settings.setValue("pttData",m_pttData);
+ settings.setValue("DTR",m_bDTR);
+ settings.setValue("RTS",m_bRTS); settings.setValue("pttData",m_pttData);
settings.setValue("LogQSOgeom",m_logQSOgeom);
settings.setValue("Polling",m_poll);
settings.setValue("OutBufSize",outBufSize);
@@ -615,8 +615,8 @@ void MainWindow::readSettings()
ui->actionTx2QSO->setChecked(m_tx2QSO);
m_bMultipleOK=settings.value("MultipleOK",false).toBool();
ui->actionAllow_multiple_instances->setChecked(m_bMultipleOK);
- m_bDTRoff=settings.value("DTRoff",false).toBool();
- m_pttData=settings.value("pttData",false).toBool();
+ m_bDTR=settings.value("DTR",false).toBool();
+ m_bRTS=settings.value("RTS",false).toBool(); m_pttData=settings.value("pttData",false).toBool();
m_poll=settings.value("Polling",0).toInt();
m_logQSOgeom=settings.value("LogQSOgeom",QRect(500,400,424,283)).toRect();
outBufSize=settings.value("OutBufSize",4096).toInt();
@@ -737,8 +737,8 @@ void MainWindow::on_actionDeviceSetup_triggered() //Setup Dialog
dlg.m_stopBitsIndex=m_stopBitsIndex;
dlg.m_handshake=m_handshake;
dlg.m_handshakeIndex=m_handshakeIndex;
- dlg.m_bDTRoff=m_bDTRoff;
- dlg.m_pttData=m_pttData;
+ dlg.m_bDTR=m_bDTR;
+ dlg.m_bRTS=m_bRTS; dlg.m_pttData=m_pttData;
dlg.m_poll=m_poll;
dlg.m_bSplit=m_bSplit;
dlg.m_bXIT=m_bXIT;
@@ -780,7 +780,8 @@ void MainWindow::on_actionDeviceSetup_triggered() //Setup Dialog
m_stopBitsIndex=dlg.m_stopBitsIndex;
m_handshake=dlg.m_handshake;
m_handshakeIndex=dlg.m_handshakeIndex;
- m_bDTRoff=dlg.m_bDTRoff;
+ m_bDTR=dlg.m_bDTR;
+ m_bRTS=dlg.m_bRTS;
m_pttData=dlg.m_pttData;
m_poll=dlg.m_poll;
@@ -1841,27 +1842,8 @@ void MainWindow::guiUpdate()
signalMeter->setValue(0);
}
- if(m_catEnabled and m_poll>0 and (nsec%m_poll)==0 and !m_decoderBusy) {
- double fMHz;
- if(m_dontReadFreq) {
- m_dontReadFreq=false;
- } else if(!m_transmitting) {
- for(int iter=0; iter<3; iter++) {
- fMHz=rig->getFreq(RIG_VFO_CURR)/1000000.0;
- if(fMHz<0.0 and iter>=2) {
- rt.sprintf("Rig control error %d\nFailed to read frequency.",
- int(1000000.0*fMHz));
- msgBox(rt);
- m_catEnabled=false;
- ui->readFreq->setStyleSheet("QPushButton{background-color: red; \
- border-width: 0px; border-radius: 5px;}");
- }
- }
- int ndiff=1000000.0*(fMHz-m_dialFreq);
- if(ndiff!=0) dialFreqChanged2(fMHz);
- }
- }
-
+ if(m_catEnabled and m_poll>0 and (nsec%m_poll)==0 and
+ !m_decoderBusy) pollRigFreq();
m_sec0=nsec;
}
@@ -2952,15 +2934,16 @@ void MainWindow::rigOpen()
sprintf(buf,"%d",m_stopBits);
rig->setConf("stop_bits",buf);
rig->setConf("serial_handshake",m_handshake.toLatin1().data());
- if(m_bDTRoff) {
- rig->setConf("rts_state","OFF");
- rig->setConf("dtr_state","OFF");
+ if(m_handshakeIndex != 2) {
+ rig->setConf("rts_state",m_bRTS ? "ON" : "OFF");
+ rig->setConf("dtr_state",m_bDTR ? "ON" : "OFF");
}
}
ret=rig->open(m_rig);
if(ret==RIG_OK) {
m_bRigOpen=true;
+ m_bad=0;
if(m_poll==0) ui->readFreq->setEnabled(true);
m_CATerror=false;
} else {
@@ -3084,3 +3067,28 @@ void MainWindow::on_cbPlus2kHz_toggled(bool checked)
m_plus2kHz=checked;
on_bandComboBox_activated(m_band);
}
+
+void MainWindow::pollRigFreq()
+{
+ double fMHz;
+ if(m_dontReadFreq) {
+ m_dontReadFreq=false;
+ } else if(!m_transmitting) {
+ fMHz=rig->getFreq(RIG_VFO_CURR)/1000000.0;
+ if(fMHz<0.0) {
+ m_bad++;
+ if(m_bad>=20) {
+ QString rt;
+ rt.sprintf("Rig control error %d\nFailed to read frequency.",
+ int(1000000.0*fMHz));
+ msgBox(rt);
+ m_catEnabled=false;
+ ui->readFreq->setStyleSheet("QPushButton{background-color: red; \
+ border-width: 0px; border-radius: 5px;}");
+ }
+ } else {
+ int ndiff=1000000.0*(fMHz-m_dialFreq);
+ if(ndiff!=0) dialFreqChanged2(fMHz);
+ }
+}
+}
diff --git a/mainwindow.h b/mainwindow.h
index 62c787b5b..939c310dd 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -210,6 +210,7 @@ private:
qint32 m_poll;
qint32 m_fMin;
qint32 m_fMax;
+ qint32 m_bad;
bool m_monitoring;
bool m_transmitting;
@@ -249,7 +250,8 @@ private:
bool m_tune;
bool m_bRigOpen;
bool m_bMultipleOK;
- bool m_bDTRoff;
+ bool m_bDTR;
+ bool m_bRTS;
bool m_pttData;
bool m_dontReadFreq;
bool m_lockTxFreq;
@@ -355,6 +357,7 @@ private:
void freeText();
void displayTxMsg(QString t);
void rigOpen();
+ void pollRigFreq();
bool gridOK(QString g);
QString baseCall(QString t);
};
diff --git a/rigclass.cpp b/rigclass.cpp
index 3f61e0373..4c7df4f31 100644
--- a/rigclass.cpp
+++ b/rigclass.cpp
@@ -38,6 +38,8 @@
#include
#include
+#define NUMTRIES 5
+
static int hamlibpp_freq_event(RIG *rig, vfo_t vfo, freq_t freq, rig_ptr_t arg);
static int hamlibpp_freq_event(RIG *rig, vfo_t vfo, freq_t freq, rig_ptr_t arg)
@@ -101,13 +103,13 @@ int Rig::open(int n) {
}
}
if(n==9998) {
- if(socket->state()==QAbstractSocket::ConnectedState) {
- socket->abort();
+ if(commanderSocket->state()==QAbstractSocket::ConnectedState) {
+ commanderSocket->abort();
}
- if(socket->state()==QAbstractSocket::UnconnectedState) {
- socket->connectToHost(QHostAddress::LocalHost, 52002);
- if(!socket->waitForConnected(1000)) {
+ if(commanderSocket->state()==QAbstractSocket::UnconnectedState) {
+ commanderSocket->connectToHost(QHostAddress::LocalHost, 52002);
+ if(!commanderSocket->waitForConnected(1000)) {
return -1;
}
}
@@ -115,9 +117,9 @@ int Rig::open(int n) {
t="CmdGetFreq";
QByteArray ba = t.toLocal8Bit();
const char* buf=ba.data();
- socket->write(buf);
- socket->waitForReadyRead(1000);
- QByteArray reply=socket->read(128);
+ commanderSocket->write(buf);
+ commanderSocket->waitForReadyRead(1000);
+ QByteArray reply=commanderSocket->read(128);
if(reply.indexOf("close();
+ commanderSocket->close();
return 0;
} else
#endif
@@ -168,8 +170,8 @@ int Rig::setFreq(freq_t freq, vfo_t vfo) {
t.sprintf("CmdSetFreq%10.3f",f);
QByteArray ba = t.toLocal8Bit();
const char* buf=ba.data();
- socket->write(buf);
- socket->waitForBytesWritten(1000);
+ commanderSocket->write(buf);
+ commanderSocket->waitForBytesWritten(1000);
return 0;
} else
#endif
@@ -216,8 +218,8 @@ int Rig::setSplitFreq(freq_t tx_freq, vfo_t vfo) {
t.sprintf("CmdSetTxFreq%10.3f",f);
QByteArray ba = t.toLocal8Bit();
const char* buf=ba.data();
- socket->write(buf);
- socket->waitForBytesWritten(1000);
+ commanderSocket->write(buf);
+ commanderSocket->waitForBytesWritten(1000);
return 0;
} else
#endif
@@ -242,9 +244,9 @@ freq_t Rig::getFreq(vfo_t vfo)
t="CmdGetFreq";
QByteArray ba = t.toLocal8Bit();
const char* buf=ba.data();
- socket->write(buf);
- socket->waitForReadyRead(1000);
- QByteArray reply=socket->read(128);
+ commanderSocket->write(buf);
+ commanderSocket->waitForReadyRead(1000);
+ QByteArray reply=commanderSocket->read(128);
QString t2(reply);
if(t2.indexOf("");
@@ -257,9 +259,11 @@ freq_t Rig::getFreq(vfo_t vfo)
} else
#endif
{
- int iret=rig_get_freq(theRig, vfo, &freq);
-// iret should be 0. Negative values mean rig_get_freq() failed.
- if(iret<0) freq=-1.0;
+ freq=-1.0;
+ for(int i=0; i0) t="CmdTX";
QByteArray ba = t.toLocal8Bit();
const char* buf=ba.data();
- socket->write(buf);
- socket->waitForBytesWritten(1000);
+ commanderSocket->write(buf);
+ commanderSocket->waitForBytesWritten(1000);
return 0;
} else
#endif
diff --git a/rigclass.h b/rigclass.h
index 9c933e715..77522129e 100644
--- a/rigclass.h
+++ b/rigclass.h
@@ -27,7 +27,7 @@
#include
#include
-extern QTcpSocket* socket;
+extern QTcpSocket* commanderSocket;
class BACKEND_IMPEXP Rig {
private:
diff --git a/wsjtx.iss b/wsjtx.iss
index 8d550fabc..bfaf5dd75 100644
--- a/wsjtx.iss
+++ b/wsjtx.iss
@@ -1,6 +1,6 @@
[Setup]
AppName=wsjtx
-AppVerName=wsjtx Version 1.1.0 r3488
+AppVerName=wsjtx Version 1.1.0 r3496
AppCopyright=Copyright (C) 2001-2013 by Joe Taylor, K1JT
DefaultDirName=c:\wsjtx2
DefaultGroupName=wsjtx2