From 696fc345127807b5ffcd94f5e6270a92ab77cebb Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Sat, 24 Nov 2012 14:36:45 +0000 Subject: [PATCH] Save all files, then possibly remove after decoding finishes. Some code cleanup; remove unused code. Add sub-mode number to wsjtx_rx.log. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2767 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/decoder.f90 | 24 ++++++------------- mainwindow.cpp | 61 +++++++++++++------------------------------------ mainwindow.h | 12 +++++++++- 3 files changed, 34 insertions(+), 63 deletions(-) diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 35767af9b..db50ca5fa 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -15,9 +15,6 @@ subroutine decoder(ss,c0) integer*2 id2 integer ii(1) complex c0(NDMAX) -! common/jt9com/ss0(184,NSMAX),savg(NSMAX),id2(NMAX),nutc0,ndiskdat, & -! ntr,nfqso,newdat,npts80,nfb,ntol,kin,nzhsym,nsynced,ndecoded -! common/jt9comB/ss(184,NSMAX),c0 common/npar/nutc,ndiskdat,ntrperiod,nfqso,newdat,npts8,nfa,nfb,ntol, & kin,nzhsym,nsave,nagain,ndepth,nrxlog,nfsample,datetime common/tracer/limtrace,lu @@ -35,13 +32,6 @@ subroutine decoder(ss,c0) first=.false. endif -! if(newdat.ne.0) then -! ss=ss0 -! c0=c00 -! nutc=nutc0 -! npts8=npts80 -! endif - ntrMinutes=ntrperiod/60 newdat=1 nsynced=0 @@ -55,27 +45,27 @@ subroutine decoder(ss,c0) nsps=6912 df3=1500.0/2048.0 fmt='(i4.4,i4,i5,f6.1,f8.0,f6.1,3x,a22)' - fmt14='(i4.4,i4,i5,f6.1,f8.0,f6.1,i8,3x,a22)' + fmt14='(i4.4,i4,i5,f6.1,f8.0,f6.1,i3,i8,3x,a22)' else if(ntrMinutes.eq.2) then nsps=15360 df3=1500.0/2048.0 fmt='(i4.4,i4,i5,f6.1,f8.1,f6.2,3x,a22)' - fmt14='(i4.4,i4,i5,f6.1,f8.1,f6.2,i8,3x,a22)' + fmt14='(i4.4,i4,i5,f6.1,f8.1,f6.2,i3,i8,3x,a22)' else if(ntrMinutes.eq.5) then nsps=40960 df3=1500.0/6144.0 fmt='(i4.4,i4,i5,f6.1,f8.1,f6.2,3x,a22)' - fmt14='(i4.4,i4,i5,f6.1,f8.1,f6.2,i8,3x,a22)' + fmt14='(i4.4,i4,i5,f6.1,f8.1,f6.2,i3,i8,3x,a22)' else if(ntrMinutes.eq.10) then nsps=82944 df3=1500.0/12288.0 fmt='(i4.4,i4,i5,f6.1,f8.2,f6.2,3x,a22)' - fmt14='(i4.4,i4,i5,f6.1,f8.2,f6.2,i8,3x,a22)' + fmt14='(i4.4,i4,i5,f6.1,f8.2,f6.2,i3,i8,3x,a22)' else if(ntrMinutes.eq.30) then nsps=252000 df3=1500.0/32768.0 fmt='(i4.4,i4,i5,f6.1,f8.2,f6.2,3x,a22)' - fmt14='(i4.4,i4,i5,f6.1,f8.2,f6.2,i8,3x,a22)' + fmt14='(i4.4,i4,i5,f6.1,f8.2,f6.2,i3,i8,3x,a22)' endif if(nsps.eq.0) stop 'Error: bad TRperiod' !Better: return an error code### @@ -125,7 +115,7 @@ subroutine decoder(ss,c0) if(msg.ne.' ') then write(*,fmt) nutc,nsync,nsnr,xdt,1000.0+fpk,drift,msg - write(14,fmt14) nutc,nsync,nsnr,xdt,1000.0+fpk,drift,nlim,msg + write(14,fmt14) nutc,nsync,nsnr,xdt,1000.0+fpk,drift,ntrMinutes,nlim,msg fgood=f nsynced=1 ndecoded=1 @@ -141,7 +131,7 @@ subroutine decoder(ss,c0) 1020 format(a33) endif - write(*,1010) nsum,nsave + write(*,1010) nsynced,ndecoded 1010 format('',2i4) flush(6) diff --git a/mainwindow.cpp b/mainwindow.cpp index 7dafb3e48..0565fd17c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -178,10 +178,6 @@ MainWindow::MainWindow(QWidget *parent) : watcher2 = new QFutureWatcher; connect(watcher2, SIGNAL(finished()),this,SLOT(diskWriteFinished())); - future3 = new QFuture; - watcher3 = new QFutureWatcher; - connect(watcher3, SIGNAL(finished()),this,SLOT(decoderFinished())); - soundInThread.setInputDevice(m_paInDevice); soundInThread.start(QThread::HighestPriority); soundOutThread.setOutputDevice(m_paOutDevice); @@ -381,7 +377,7 @@ void MainWindow::dataSink(int k) m_pctZap=nzap*100.0/m_nsps; t.sprintf(" Rx noise: %5.1f %5.1f %% ",px,m_pctZap); lab3->setText(t); - ui->xThermo->setValue((double)px); //Update the thermometer + ui->xThermo->setValue((double)px); //Update thermometer if(m_monitoring || m_diskData) { g_pWideGraph->dataSink2(s,red,df3,ihsym,m_diskData,lstrong); } @@ -390,19 +386,20 @@ void MainWindow::dataSink(int k) m_dataAvailable=true; jt9com_.npts8=(ihsym*m_nsps)/16; jt9com_.newdat=1; + jt9com_.nagain=0; jt9com_.nzhsym=m_hsymStop; QDateTime t = QDateTime::currentDateTimeUtc(); m_dateTime=t.toString("yyyy-MMM-dd hh:mm"); - decode(); //Start the decoder - if(!m_diskData and m_saveAll) { + decode(); //Start decoder + if(!m_diskData) { //Always save; may delete later int ihr=t.time().toString("hh").toInt(); int imin=t.time().toString("mm").toInt(); imin=imin - (imin%(m_TRperiod/60)); QString t2; t2.sprintf("%2.2d%2.2d",ihr,imin); - QString fname=m_saveDir + "/" + t.date().toString("yyMMdd") + "_" + + m_fname=m_saveDir + "/" + t.date().toString("yyMMdd") + "_" + t2 + ".wav"; - *future2 = QtConcurrent::run(savewav, fname, m_TRperiod); + *future2 = QtConcurrent::run(savewav, m_fname, m_TRperiod); watcher2->setFuture(*future2); } } @@ -759,24 +756,6 @@ void MainWindow::diskWriteFinished() //diskWriteFinished // qDebug() << "diskWriteFinished"; } -void MainWindow::decoderFinished() //decoderFinished -{ - jt9com_.newdat=0; - QFile f("decoded.txt"); - f.open(QIODevice::ReadOnly); - QTextStream in(&f); - QString line; - for(int i=0; i<99999; i++) { - line=in.readLine(); - if(line.length()<=0) break; - ui->decodedTextBrowser->append(line); - } - f.close(); - ui->DecodeButton->setStyleSheet(""); - decodeBusy(false); - if(m_loopall) on_actionOpen_next_in_directory_triggered(); -} - //Delete ../save/*.wav void MainWindow::on_actionDelete_all_wav_files_in_SaveDir_triggered() { @@ -901,7 +880,6 @@ void MainWindow::decode() //decode() jt9com_.ndepth=m_ndepth; jt9com_.ndiskdat=0; if(m_diskData) jt9com_.ndiskdat=1; - jt9com_.nfa=1000; //### temporary ### jt9com_.nfb=2000; @@ -923,17 +901,13 @@ void MainWindow::decode() //decode() char *to = (char*)mem_jt9.data(); char *from = (char*) jt9com_.ss; int size=sizeof(jt9com_); - if(jt9com_.newdat==0) { int noffset = 4*184*22000 + 4*22000 + 4*2*1800*1500 + 2*1800*12000; to += noffset; from += noffset; size -= noffset; } - memcpy(to, from, qMin(mem_jt9.size(), size)); - jt9com_.nagain=0; - jt9com_.ndiskdat=0; QFile lockFile(m_appDir + "/.lock"); // Allow jt9 to start lockFile.remove(); @@ -958,19 +932,18 @@ void MainWindow::readFromStdout() //readFromStdout { while(proc_jt9.canReadLine()) { QByteArray t=proc_jt9.readLine(); - if(t.indexOf("") >= 0) { -// m_nsum=t.mid(17,4).toInt(); -// m_nsave=t.mid(21,4).toInt(); -// QString t2; -// t2.sprintf("Avg: %d",m_nsum); -// lab6->setText(t2); - } if(t.indexOf("") >= 0) { - if(m_widebandDecode) { -// g_pMessages->setText(m_messagesText); -// g_pBandMap->setText(m_bandmapText); - m_widebandDecode=false; + m_bsynced = (t.mid(19,1).toInt()==1); + m_bdecoded = (t.mid(23,1).toInt()==1); + bool keepFile=m_saveAll or (m_saveSynced and m_bsynced) or + (m_saveDecoded and m_bdecoded); + if(!keepFile) { + QFile savedFile(m_fname); + savedFile.remove(); + qDebug() << "Removed" << m_fname; } + jt9com_.nagain=0; + jt9com_.ndiskdat=0; QFile lockFile(m_appDir + "/.lock"); lockFile.open(QIODevice::ReadWrite); ui->DecodeButton->setStyleSheet(""); @@ -990,8 +963,6 @@ void MainWindow::readFromStdout() //readFromStdout } } - - void MainWindow::on_EraseButton_clicked() //Erase { ui->decodedTextBrowser->clear(); diff --git a/mainwindow.h b/mainwindow.h index dcfc81c45..1f9f78c14 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -26,7 +26,6 @@ public slots: void dataSink(int k); void diskDat(); void diskWriteFinished(); - void decoderFinished(); void freezeDecode(int n); void guiUpdate(); void doubleClickOnCall(QString hiscall, bool ctrl); @@ -158,23 +157,33 @@ private: bool m_call3Modified; bool m_dataAvailable; bool m_killAll; + bool m_bsynced; + bool m_bdecoded; + char m_decoded[80]; + float m_pctZap; + QRect m_wideGraphGeom; + QLabel* lab1; // labels in status bar QLabel* lab2; QLabel* lab3; QLabel* lab4; QLabel* lab5; QLabel* lab6; + QMessageBox msgBox0; + QFuture* future1; QFuture* future2; QFuture* future3; QFutureWatcher* watcher1; QFutureWatcher* watcher2; QFutureWatcher* watcher3; + QProcess proc_jt9; + QString m_path; QString m_pbdecoding_style1; QString m_pbmonitor_style; @@ -189,6 +198,7 @@ private: QString m_palette; QString m_dateTime; QString m_mode; + QString m_fname; SoundInThread soundInThread; //Instantiate the audio threads SoundOutThread soundOutThread;