1. Full control of DTR and RTS on serial port used for CAT control -- patch

submitted by G4WJS.
2. Improved(???) means of multiple tries when polling radio for frequency.
3. Minor tweaks to widget sizes on devsetup screen.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3500 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor
2013-07-23 17:32:59 +00:00
parent cc1c17cd64
commit cbed84e0c7
8 changed files with 161 additions and 112 deletions
+40 -32
View File
@@ -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);
}
}
}