diff --git a/lib/decoder.f90 b/lib/decoder.f90 index cb695e708..6499ac673 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -203,8 +203,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) call timer('dec_q65 ',0) call my_q65%decode(q65_decoded,id2,params%nutc,params%ntr, & params%nsubmode,params%nfqso,params%ntol,params%ndepth, & - mycall,hiscall,hisgrid,params%nQSOProgress,ncontest, & - logical(params%lapcqonly)) + params%emedelay,mycall,hiscall,hisgrid,params%nQSOProgress, & + ncontest,logical(params%lapcqonly)) call timer('dec_q65 ',1) go to 800 endif diff --git a/lib/q65_sync.f90 b/lib/q65_sync.f90 index 90c326230..2d042802d 100644 --- a/lib/q65_sync.f90 +++ b/lib/q65_sync.f90 @@ -1,5 +1,5 @@ -subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, & - xdt,f0,snr1,dat4,snr2,id1) +subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, & + emedelay,xdt,f0,snr1,dat4,snr2,id1) ! Detect and align with the Q65 sync vector, returning time and frequency ! offsets and SNR estimate. @@ -227,6 +227,43 @@ subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, & rms=sqrt(sq/nsq) smax=ccf(ipk,jpk) snr1=smax/rms + call zplot_q65(ccf(-ia:ia,lag1:lag2),ia,lag1,lag2,rms,dtstep,ntol,emedelay) 900 return end subroutine q65_sync + +subroutine zplot_q65(ccf,ia,lag1,lag2,rms,dtstep,ntol,emedelay) + + real ccf(-ia:ia,lag1:lag2) + character*1 line(70),mark(0:6) + character*35 blanks + data mark/' ',' ','.','-','+','X','#'/ + data blanks/' '/ + +! open(35,file='ccf.dat',status='unknown',access='stream') +! write(35) ia,lag1,lag2,rms,dtstep +! write(35) ccf +! close(35) + open(34,file='ccf.txt',status='unknown') + write(34,1000) -ntol,blanks(1:ia-2),0,blanks(1:ia-2),ntol +1000 format(5x,i3,a,i1,a,i3) + k=0 + do j=lag2,lag1,-1 + t=j*dtstep + if(emedelay.eq.0.0 .and. abs(t).gt.1.0) cycle + do i=-ia,ia + k=i+ia+2 + n=ccf(i,j)/rms + if(n.lt.0) n=0 + if(n.gt.6) n=6 + line(k)=mark(n) + enddo + line(1)='|' + line(k+1)='|' + write(34,1010) t,line(1:k+1) +1010 format(f5.2,1x,72a1) + enddo + close(34) + + return +end subroutine zplot_q65 diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index cde8eff8a..1f9ed0198 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3306,6 +3306,22 @@ void MainWindow::decodeDone () { if(m_mode!="FT8" or dec_data.params.nzhsym==50) m_nDecodes=0; if(m_mode=="QRA64") m_wideGraph->drawRed(0,0); + + if(m_mode=="Q65" and m_msgAvgWidget!=NULL) { + if(m_msgAvgWidget->isVisible()) { +// QFile f(m_config.temp_dir ().absoluteFilePath ("ccf.txt")); + + QFont font("Courier New",7); + m_msgAvgWidget->changeFont(font); + QFile f("ccf.txt"); + if(f.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream s(&f); + QString t=s.readAll(); + m_msgAvgWidget->displayAvg(t); + } + } + } + if ("FST4W" == m_mode) { if (m_uploadWSPRSpots @@ -3591,7 +3607,8 @@ void MainWindow::readFromStdout() //readFromStdout } else { if (stdMsg && okToPost) pskPost(decodedtext); } - if((m_mode=="JT4" or m_mode=="JT65" or m_mode=="QRA64") and m_msgAvgWidget!=NULL) { + if((m_mode=="JT4" or m_mode=="JT65" or m_mode=="QRA64" or m_mode=="Q65") and + m_msgAvgWidget!=NULL) { if(m_msgAvgWidget->isVisible()) { QFile f(m_config.temp_dir ().absoluteFilePath ("avemsg.txt")); if(f.open(QIODevice::ReadOnly | QIODevice::Text)) { @@ -4336,7 +4353,7 @@ void MainWindow::guiUpdate() //Once per second (onesec) if(nsec != m_sec0) { -// qDebug() << "AAA" << nsec; +// qDebug() << "AAA" << nsec; if(m_mode=="FST4") chk_FST4_freq_range(); m_currentBand=m_config.bands()->find(m_freqNominal); if( SpecOp::HOUND == m_config.special_op_id() ) {