mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
Better logic for message averaging.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@2543 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
d3d956b54c
commit
ed03e0003d
@ -18,7 +18,7 @@
|
||||
character decoded*22
|
||||
character mycall*12,hiscall*12,hisgrid*6
|
||||
data first/.true./,jjjmin/1000/,jjjmax/-1000/
|
||||
data nutc0/-999/,nkhz0/-999/
|
||||
data nutc0/-999/,nhz0/-9999999/
|
||||
save
|
||||
|
||||
! Mix sync tone to baseband, low-pass filter, downsample to 1378.125 Hz
|
||||
@ -133,17 +133,18 @@
|
||||
call timer('dec65b ',1)
|
||||
|
||||
if(nqd.eq.1 .and. nkv.eq.0) then
|
||||
if(nutc.ne.nutc0 .or. nkhz.ne.nkhz0) syncbest=0.
|
||||
nhz=1000*nkhz + ndf
|
||||
if(nutc.ne.nutc0 .or. abs(nhz-nhz0).ge.1000) syncbest=0. !### 1000 ??
|
||||
if(sync2.gt.syncbest) then
|
||||
if(nutc.eq.nutc0 .and. nkhz.eq.nkhz0) nsave=nsave-1
|
||||
if(nkhz.ne.nkhz0) nsave=0
|
||||
nkhz0=nkhz
|
||||
nsave=min(32,nsave+1)
|
||||
nsave=max(1,nsave)
|
||||
nsave=nsave+1
|
||||
nsave=mod(nsave-1,64)+1
|
||||
npol=nint(57.296*pol)
|
||||
call s3avg(nsave,mode65,nutc,ndf,dt+0.8,npol,s3,nsum,
|
||||
xdt=dt+0.8
|
||||
|
||||
call s3avg(nsave,mode65,nutc,nhz,xdt,npol,s3,nsum,
|
||||
+ nkv,decoded)
|
||||
syncbest=sync2
|
||||
nhz0=nhz
|
||||
endif
|
||||
nutc0=nutc
|
||||
endif
|
||||
|
@ -37,6 +37,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||
mousefqso0=mousefqso
|
||||
xpol=(nxpol.ne.0)
|
||||
if(.not.xpol) ndphi=0
|
||||
nsum=0
|
||||
|
||||
!### Should use AppDir! ###
|
||||
! open(23,file='release/CALL3.TXT',status='unknown')
|
||||
|
@ -1,39 +1,54 @@
|
||||
subroutine s3avg(nsave,mode65,nutc,ndf,xdt,npol,s3,nsum,nkv,decoded)
|
||||
subroutine s3avg(nsave,mode65,nutc,nhz,xdt,npol,s3,nsum,nkv,decoded)
|
||||
|
||||
! Save the current synchronized spectra, s3(64,63), for possible
|
||||
! decoding of average.
|
||||
|
||||
real s3(64,63) !Synchronized spectra for 63 symbols
|
||||
real s3a(64,63,32) !Saved spectra
|
||||
real s3b(64,63) !Average
|
||||
integer iutc(32),idf(32),ipol(32)
|
||||
real dt(32)
|
||||
real s3a(64,63,64) !Saved spectra
|
||||
real s3b(64,63) !Average spectra
|
||||
integer iutc(64),ihz(64),ipol(64)
|
||||
real dt(64)
|
||||
character*22 decoded
|
||||
logical ltext
|
||||
logical ltext,first
|
||||
data first/.true./
|
||||
save
|
||||
|
||||
if(first) then
|
||||
iutc=-1
|
||||
ihz=0
|
||||
ipol=0
|
||||
first=.false.
|
||||
ihzdiff=100
|
||||
dtdiff=0.2
|
||||
endif
|
||||
|
||||
do i=1,64
|
||||
if(nutc.eq.iutc(i) .and. abs(nhz-ihz(i)).lt.ihzdiff) then
|
||||
nsave=mod(nsave-1+64,64)+1
|
||||
go to 900
|
||||
endif
|
||||
enddo
|
||||
|
||||
iutc(nsave)=nutc !Save UTC
|
||||
idf(nsave)=ndf !Save DF
|
||||
ihz(nsave)=nhz !Save freq in Hz
|
||||
ipol(nsave)=npol !Save pol
|
||||
dt(nsave)=xdt !Save DT
|
||||
s3a(1:64,1:63,nsave)=s3 !Save the spectra
|
||||
|
||||
write(71,3001) nsave,nutc,ndf,npol,xdt
|
||||
3001 format(4i5,f8.1)
|
||||
flush(71)
|
||||
|
||||
s3b=0.
|
||||
nsum=0
|
||||
idfdiff=100
|
||||
dtdiff=0.2
|
||||
do i=1,nsave !Accumulate avg spectra
|
||||
if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only 1st or 2nd sequence
|
||||
if(abs(ndf-idf(i)).gt.idfdiff) cycle !DF must match
|
||||
do i=1,64 !Accumulate avg spectra
|
||||
if(iutc(i).lt.0) cycle
|
||||
if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same sequence
|
||||
if(abs(nhz-ihz(i)).gt.ihzdiff) cycle !Freq must match
|
||||
if(abs(xdt-dt(i)).gt.dtdiff) cycle !DT must match
|
||||
s3b=s3b + s3a(1:64,1:63,i)
|
||||
nsum=nsum+1
|
||||
enddo
|
||||
|
||||
! write(71,3001) nutc,nsave,nhz,npol,xdt
|
||||
!3001 format(4i8,1f8.1)
|
||||
! flush(71)
|
||||
|
||||
decoded=' '
|
||||
if(nsum.ge.2) then !Try decoding the sverage
|
||||
nadd=mode65*nsum
|
||||
@ -45,5 +60,5 @@ subroutine s3avg(nsave,mode65,nutc,ndf,xdt,npol,s3,nsum,nkv,decoded)
|
||||
endif
|
||||
endif
|
||||
|
||||
return
|
||||
900 return
|
||||
end subroutine s3avg
|
||||
|
@ -822,7 +822,7 @@ void MainWindow::createStatusBar() //createStatusBar
|
||||
lab5->setFrameStyle(QFrame::Panel | QFrame::Sunken);
|
||||
statusBar()->addWidget(lab5);
|
||||
|
||||
lab6 = new QLabel("Avg: 0/0");
|
||||
lab6 = new QLabel("Avg: 0");
|
||||
lab6->setAlignment(Qt::AlignHCenter);
|
||||
lab6->setMinimumSize(QSize(50,10));
|
||||
lab6->setFrameStyle(QFrame::Panel | QFrame::Sunken);
|
||||
@ -1264,7 +1264,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
||||
m_nsum=t.mid(17,4).toInt();
|
||||
m_nsave=t.mid(21,4).toInt();
|
||||
QString t2;
|
||||
t2.sprintf("Avg: %d/%d",m_nsum,m_nsave);
|
||||
t2.sprintf("Avg: %d",m_nsum);
|
||||
lab6->setText(t2);
|
||||
}
|
||||
if(t.indexOf("<DecodeFinished>") >= 0) {
|
||||
@ -1337,7 +1337,6 @@ void MainWindow::guiUpdate()
|
||||
static int nc1=1;
|
||||
static char msgsent[23];
|
||||
static int nsendingsh=0;
|
||||
static int fQSOz=-1;
|
||||
int khsym=0;
|
||||
|
||||
double tx1=0.0;
|
||||
@ -1504,11 +1503,6 @@ void MainWindow::guiUpdate()
|
||||
|
||||
QDateTime t = QDateTime::currentDateTimeUtc();
|
||||
int fQSO=g_pWideGraph->QSOfreq();
|
||||
if(fQSO != fQSOz) {
|
||||
qDebug() << fQSOz << fQSO << m_nutc0;
|
||||
m_nsave=0;
|
||||
fQSOz=fQSO;
|
||||
}
|
||||
g_pAstro->astroUpdate(t, m_myGrid, m_hisGrid, fQSO, m_setftx,
|
||||
m_txFreq, m_azelDir);
|
||||
m_setftx=0;
|
||||
|
Loading…
Reference in New Issue
Block a user