diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index c5704da28..a0e814995 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -88,6 +88,7 @@ contains npts=ntrperiod*12000 nfft1=ntrperiod*12000 nfft2=ntrperiod*6000 + npasses=1 ! Determine the T/R sequence: iseq=0 (even), or iseq=1 (odd) n=nutc diff --git a/map65/libm65/map65a.f90 b/map65/libm65/map65a.f90 index ccaf53234..57ade7a0f 100644 --- a/map65/libm65/map65a.f90 +++ b/map65/libm65/map65a.f90 @@ -365,28 +365,22 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & freq=cand(icand)%f+nkhz_center-48.0-1.27046 nhzdiff=nint(1000.0*(freq-mousefqso)-mousedf) if(nqd.eq.1 .and. abs(nhzdiff).gt.ntol) cycle -! ikhz=nint(freq) ikhz=mousefqso q65b_called=.true. f0=cand(icand)%f -! write(*,3002) nqd,f0 -!3002 format('=A',i3,f10.3) call timer('q65b ',0) - call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, & - mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec) + call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & + xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec) call timer('q65b ',1) if(idec.ge.0) candec(icand)=.true. enddo if(.not.q65b_called) then freq=mousefqso + 0.001*mousedf -! ikhz=nint(freq) ikhz=mousefqso f0=freq - (nkhz_center-48.0-1.27046) !### ??? ### -! write(*,3004) nqd,f0 -!3004 format('=B',i3,f10.3) call timer('q65b ',0) - call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, & - mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec) + call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & + xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec) call timer('q65b ',1) endif endif @@ -418,11 +412,9 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle ikhz=nint(freq) f0=cand(icand)%f -! write(*,3006) nqd,f0 -!3006 format('=C',i3,f10.3) call timer('q65b ',0) - call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, & - mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec) + call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & + xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec) call timer('q65b ',1) if(idec.ge.0) candec(icand)=.true. enddo ! icand diff --git a/map65/libm65/q65b.f90 b/map65/libm65/q65b.f90 index 5fae07cdf..dbc0ebb4f 100644 --- a/map65/libm65/q65b.f90 +++ b/map65/libm65/q65b.f90 @@ -1,5 +1,5 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & - mycall0,hiscall0,hisgrid,mode_q65,f0,idec) + mycall0,hiscall0,hisgrid,mode_q65,f0,fqso,nagain,idec) ! This routine provides an interface between MAP65 and the Q65 decoder ! in WSJT-X. All arguments are input data obtained from the MAP65 GUI. @@ -63,10 +63,10 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & df=96000.0/nfft1 endif nh=nfft2/2 + f_mouse=1000.0*(fqso+48.0) + mousedf + f_ipk=ipk*df3 k0=nint((ipk*df3-1000.0)/df) - -! write(*,3001) nqd,f0+0.001*nfcal,0.001*ipk*df3,0.001*k0*df+1.0,mousedf,ipk,snr1 -!3001 format('=D',i3,3f10.3,2i7,f7.2) + if(nagain.eq.1) k0=nint((f_mouse-1000.0)/df) if(k0.lt.nh .or. k0.gt.nfft1-nh) go to 900 if(snr1.lt.1.5) go to 900 !### Threshold needs work? ### @@ -120,8 +120,12 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & close(30) nsubmode=mode_q65-1 - nfa=max(100,1000-ntol) - nfb=min(2500,1000+ntol) + nfa=100 + nfb=1900 + if(nagain.eq.1) then + nfa=max(100,1000-ntol) + nfb=min(2500,1000+ntol) + endif newdat=1 nagain=0 nsnr0=-99 !Default snr for no decode @@ -129,12 +133,13 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & ! NB: Frequency of ipk is now shifted to 1000 Hz. call map65_mmdec(nutc,iwave,nqd,nsubmode,nfa,nfb,1000,ntol, & newdat,nagain,mycall,hiscall,hisgrid) - MHz=fcenter freq0=MHz + 0.001*ikhz if(nsnr0.gt.-99) then nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal - if(nqd.eq.1 .and. abs(nfreq0-1000.0).lt.0.9*ntol) then + nq65df=nq65df + nfreq0 - 1000 + + if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then write(line,1020) ikhz,nq65df,45*(ipol-1),nutc,xdt0,nsnr0,msg0(1:27),cq0 1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3) write(*,1100) trim(line) diff --git a/map65/mainwindow.cpp b/map65/mainwindow.cpp index b7462429a..08a4aa058 100644 --- a/map65/mainwindow.cpp +++ b/map65/mainwindow.cpp @@ -994,6 +994,11 @@ void MainWindow::on_actionQSG_MAP65_v3_triggered() QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/MAP65_3.0_Quick_Start.pdf"}); } +void MainWindow::on_actionQ65_Sensitivity_in_MAP65_3_0_triggered() +{ + QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/Q65_Sensitivity_in_MAP65.pdf"}); +} + void MainWindow::on_actionAstro_Data_triggered() //Display Astro { if (m_astro_window ) m_astro_window->show(); @@ -1807,7 +1812,10 @@ void MainWindow::doubleClickOnMessages(QString hiscall, QString t2) lookup(); } - genStdMsgs(""); + QString rpt=""; + if(m_modeTx=="Q65") rpt=t2.mid(20,3); + genStdMsgs(rpt); + if(t2.indexOf(m_myCall)>0) { m_ntx=2; ui->txrb2->setChecked(true); diff --git a/map65/mainwindow.h b/map65/mainwindow.h index eba776438..63040e589 100644 --- a/map65/mainwindow.h +++ b/map65/mainwindow.h @@ -79,6 +79,7 @@ private slots: void on_actionOnline_Users_Guide_triggered(); void on_actionQSG_Q65_triggered(); void on_actionQSG_MAP65_v3_triggered(); + void on_actionQ65_Sensitivity_in_MAP65_3_0_triggered(); void on_actionWide_Waterfall_triggered(); void on_actionBand_Map_triggered(); void on_actionMessages_triggered(); diff --git a/map65/mainwindow.ui b/map65/mainwindow.ui index 2db2ce857..391f1cc69 100644 --- a/map65/mainwindow.ui +++ b/map65/mainwindow.ui @@ -276,7 +276,7 @@ p, li { white-space: pre-wrap; } - DX Call Grid + DX Call DX Grid @@ -1218,6 +1218,7 @@ p, li { white-space: pre-wrap; } + @@ -1674,6 +1675,11 @@ p, li { white-space: pre-wrap; } Quick-Start Guide to MAP65 3.0 and WSJT-X 2.5.0 + + + Q65 Sensitivity in MAP65 3.0 + + @@ -1692,8 +1698,8 @@ p, li { white-space: pre-wrap; } update() - 264 - 275 + 269 + 255 126 diff --git a/map65/messages.cpp b/map65/messages.cpp index 8a2cc92f9..0363791f6 100644 --- a/map65/messages.cpp +++ b/map65/messages.cpp @@ -56,8 +56,8 @@ void Messages::setText(QString t, QString t2) if(t2.mid(i-1,1)==" ") continue; } int n=line.mid(50,2).toInt(); - if(line.indexOf(":")>0) n=-1; - if(n==-1) ui->messagesTextBrowser->setTextColor("#ffffff"); // white +// if(line.indexOf(":")>0) n=-1; +// if(n==-1) ui->messagesTextBrowser->setTextColor("#ffffff"); // white if(n==0) ui->messagesTextBrowser->setTextColor(m_color0); if(n==1) ui->messagesTextBrowser->setTextColor(m_color1); if(n==2) ui->messagesTextBrowser->setTextColor(m_color2);