From 4a4225bb9cbaf73a5396f9b519c4f4726b8eef96 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 4 Jan 2024 10:05:46 -0500 Subject: [PATCH] Working toward ability to write and read *.qm files. --- qmap/libqmap/save_qm.f90 | 42 +++++++++++++++++++++++++++++++++++----- qmap/main.cpp | 2 +- qmap/mainwindow.cpp | 19 ++++++++++++------ qmap/mainwindow.h | 4 ++-- 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/qmap/libqmap/save_qm.f90 b/qmap/libqmap/save_qm.f90 index e5b0548f7..1d71f5d6f 100644 --- a/qmap/libqmap/save_qm.f90 +++ b/qmap/libqmap/save_qm.f90 @@ -1,10 +1,11 @@ -subroutine save_qm(fname,nutc,dd,ntx30a,ntx30b) +subroutine save_qm(fname,prog_id,mycall,mygrid,dd,ntx30a,ntx30b) parameter(NMAX=60*96000) - character*(*) fname + character*(*) fname,prog_id,mycall,mygrid + character prog_id_24*24,mycall_12*12,mygrid_6*6 real*4 dd(2,NMAX) integer*1 id1(2,NMAX) - + ia=1 ib=NMAX if(ntx30a.gt.5) ia=NMAX/2+1 @@ -19,11 +20,42 @@ subroutine save_qm(fname,nutc,dd,ntx30a,ntx30b) nsum=2*(ib-ia+1) rms=sqrt(sq/nsum) + nbad=0 + dmax=0. + fac=10.0/rms + do i=ia,ib + x=fac*dd(1,i) + y=fac*dd(2,i) + ax=abs(x) + ay=abs(y) + dmax=max(dmax,ax,ay) + if(ax.gt.127.0) then + x=0. + nbad=nbad+1 + endif + if(ay.gt.127.0) then + y=0. + nbad=nbad+1 + endif + id1(1,i)=nint(x) + id1(2,i)=nint(y) + enddo + if(ia.gt.30*96000) id1(1:2,1:ia-1)=0 + if(ib.eq.30*96000) id1(1:2,ib+1:60*96000)=0 + jz=len(fname) fname(jz-1:jz)="qm" - write(*,3001) fname(jz-13:jz),nutc,rms,db(rms*rms),ia,ib, & + write(*,3001) fname(jz-13:jz),rms,db(rms*rms),dmax,nbad,ia,ib, & nsum/(2*96000),ntx30a,ntx30b -3001 format(a14,2x,i4.4,2f7.1,2i9,3i5) +3001 format(a14,3f7.1,i8,2i9,3i5) + + open(29,file=trim(fname),status='unknown',access='stream') + prog_id_24=prog_id//" " + mycall_12=mycall + mygrid_6=mygrid + write(29) prog_id_24,mycall_12,mygrid_6,ntx30a,ntx30b,ia,ib + write(29) id1(1:2,ia:ib) return end subroutine save_qm + diff --git a/qmap/main.cpp b/qmap/main.cpp index 652ac1f52..1037e9ba7 100644 --- a/qmap/main.cpp +++ b/qmap/main.cpp @@ -29,7 +29,7 @@ int main(int argc, char *argv[]) // Override programs executable basename as application name. a.setApplicationName ("QMAP"); - a.setApplicationVersion ("0.3"); + a.setApplicationVersion ("0.4"); // switch off as we share an Info.plist file with WSJT-X a.setAttribute (Qt::AA_DontUseNativeMenuBar); MainWindow w; diff --git a/qmap/mainwindow.cpp b/qmap/mainwindow.cpp index 6cdc0b3c7..b9f7e82c1 100644 --- a/qmap/mainwindow.cpp +++ b/qmap/mainwindow.cpp @@ -403,8 +403,11 @@ void MainWindow::dataSink(int k) fname += ".iq"; *future2 = QtConcurrent::run(save_iq, fname); watcher2->setFuture(*future2); - int len1=fname.length(); - save_qm_(fname.toLatin1(), &datcom2_.nutc, datcom2_.d4,&m_nTx30a,&m_nTx30b,len1); + QString t{"QMAP v" + QCoreApplication::applicationVersion() + " " + revision()}; + qDebug() << "aa" << t.simplified() << m_myCall << m_myGrid << datcom_.fcenter; + save_qm_(fname.toLatin1(), t.toLatin1(), m_myCall.toLatin1(), m_myGrid.toLatin1(), + datcom2_.d4, &datcom2_.ntx30a, &datcom2_.ntx30b, fname.length(), t.length(), + m_myCall.length(), m_myGrid.length()); } if(ihsym==m_hsymStop) { m_nTx30a=0; @@ -640,11 +643,11 @@ void MainWindow::on_actionOpen_triggered() //Open File soundInThread.setMonitoring(m_monitoring); QString fname; fname=QFileDialog::getOpenFileName(this, "Open File", m_path, - "MAP65/QMAP Files (*.iq)"); + "MAP65/QMAP Files (*.iq *.qm)"); if(fname != "") { m_path=fname; int i; - i=fname.indexOf(".iq") - 11; + i=qMax(fname.indexOf(".iq") - 11, fname.indexOf(".qm") - 11); if(i>=0) { lab1->setStyleSheet("QLabel{background-color: #66ff66}"); lab1->setText(" " + fname.mid(i,15) + " "); @@ -662,7 +665,11 @@ void MainWindow::on_actionOpen_next_in_directory_triggered() //Open Next int i,len; QFileInfo fi(m_path); QStringList list; - list= fi.dir().entryList().filter(".iq"); + if(m_path.indexOf(".iq")>0) { + list= fi.dir().entryList().filter(".iq"); + } else { + list= fi.dir().entryList().filter(".qm"); + } for (i = 0; i < list.size()-1; ++i) { if(i==list.size()-2) m_loopall=false; len=list.at(i).length(); @@ -671,7 +678,7 @@ void MainWindow::on_actionOpen_next_in_directory_triggered() //Open Next QString fname=m_path.replace(n-len,len,list.at(i+1)); m_path=fname; int i; - i=fname.indexOf(".iq") - 11; + i=qMax(fname.indexOf(".iq") - 11, fname.indexOf(".qm") - 11); if(i>=0) { lab1->setStyleSheet("QLabel{background-color: #66ff66}"); lab1->setText(" " + fname.mid(i,len) + " "); diff --git a/qmap/mainwindow.h b/qmap/mainwindow.h index 9ecdc76f3..05691e652 100644 --- a/qmap/mainwindow.h +++ b/qmap/mainwindow.h @@ -201,8 +201,8 @@ extern "C" { void zaptx_(float d4[], int* k0, int* k); - void save_qm_(const char* fname, int* nutc, float d4[], int* ntx30a, int* ntx30b, int len1); - + void save_qm_(const char* fname, const char* prog_id, const char* mycall, const char* mygrid, + float d4[], int* ntx30a, int* ntx30b, int len1, int len2, int len3, int len4); } #endif // MAINWINDOW_H