mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-03 16:01:18 -05:00
Good performance, including QD (quick decode) at selected fQSO.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@430 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
53c2f619f2
commit
25743ac557
@ -28,7 +28,7 @@ subroutine decode1(iarg)
|
|||||||
newdat=1
|
newdat=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if((kk-kkdone).gt.32768) call symspec(id,kbuf,kk,kkdone,rxnoise)
|
if((kk-kkdone).gt.32768) call symspec(id,kbuf,kk,kkdone,rxnoise,newspec)
|
||||||
|
|
||||||
if(ndecoding.gt.0 .and. mode(1:4).eq.'JT65') then
|
if(ndecoding.gt.0 .and. mode(1:4).eq.'JT65') then
|
||||||
ndecdone=0
|
ndecdone=0
|
||||||
|
11
deep65.F
11
deep65.F
@ -94,13 +94,11 @@ C Test for messages with MyCall + HisCall + report
|
|||||||
call encode65(message,ncode(1,k))
|
call encode65(message,ncode(1,k))
|
||||||
nflip(k)=flip
|
nflip(k)=flip
|
||||||
C Insert CQ message
|
C Insert CQ message
|
||||||
if(m.eq.1 .and. flip.gt.0.0) then
|
|
||||||
message='CQ '//callgrid(icall)
|
message='CQ '//callgrid(icall)
|
||||||
k=k+1
|
k=k+1
|
||||||
testmsg(k)=message
|
testmsg(k)=message
|
||||||
call encode65(message,ncode(1,k))
|
call encode65(message,ncode(1,k))
|
||||||
nflip(k)=flip
|
nflip(k)=flip
|
||||||
endif
|
|
||||||
enddo
|
enddo
|
||||||
if(nsked.eq.1) go to 20
|
if(nsked.eq.1) go to 20
|
||||||
10 continue
|
10 continue
|
||||||
@ -118,8 +116,10 @@ C Insert CQ message
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
p1=-1.e30
|
p1=-1.e30
|
||||||
|
p2=-1.e30
|
||||||
do k=1,ntot
|
do k=1,ntot
|
||||||
if(flip.gt.0.0 .or. nflip(k).lt.0) then !Skip CQ msg if flip=-1
|
pp(k)=0.
|
||||||
|
! if(flip.gt.0.0 .or. nflip(k).lt.0) then !Skip CQ msg if flip=-1
|
||||||
sum=0.
|
sum=0.
|
||||||
ref=ref0
|
ref=ref0
|
||||||
do j=1,63
|
do j=1,63
|
||||||
@ -135,10 +135,9 @@ C Insert CQ message
|
|||||||
p1=p
|
p1=p
|
||||||
ip1=k
|
ip1=k
|
||||||
endif
|
endif
|
||||||
endif
|
! endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
p2=-1.e30
|
|
||||||
do i=1,ntot
|
do i=1,ntot
|
||||||
if(pp(i).gt.p2 .and. pp(i).ne.p1) p2=pp(i)
|
if(pp(i).gt.p2 .and. pp(i).ne.p1) p2=pp(i)
|
||||||
enddo
|
enddo
|
||||||
@ -155,7 +154,7 @@ C ### compile step.
|
|||||||
if(mode65.eq.2) bias=max(1.08*p2,0.405)
|
if(mode65.eq.2) bias=max(1.08*p2,0.405)
|
||||||
if(mode65.ge.4) bias=max(1.04*p2,0.505)
|
if(mode65.ge.4) bias=max(1.04*p2,0.505)
|
||||||
|
|
||||||
if(p2.eq.p1) stop 'Error in deep65'
|
if(p2.eq.p1 .and. p1.ne.-1.e30) stop 'Error in deep65'
|
||||||
qual=100.0*(p1-bias)
|
qual=100.0*(p1-bias)
|
||||||
|
|
||||||
decoded=' '
|
decoded=' '
|
||||||
|
16
map65.py
16
map65.py
@ -959,9 +959,9 @@ def update():
|
|||||||
graph2.create_text(13,109,anchor=W,text="Dgrd:%5.1f" % g.Dgrd,font=g2font)
|
graph2.create_text(13,109,anchor=W,text="Dgrd:%5.1f" % g.Dgrd,font=g2font)
|
||||||
|
|
||||||
if g.freeze_decode and mode.get()[:4]=='JT65':
|
if g.freeze_decode and mode.get()[:4]=='JT65':
|
||||||
itol=2
|
itol=5
|
||||||
ltol.configure(text='Tol '+str(50))
|
ltol.configure(text='Tol '+str(500))
|
||||||
Audio.gcom2.dftolerance=50
|
Audio.gcom2.dftolerance=500
|
||||||
nfreeze.set(1)
|
nfreeze.set(1)
|
||||||
Audio.gcom2.nfreeze=1
|
Audio.gcom2.nfreeze=1
|
||||||
if Audio.gcom2.monitoring:
|
if Audio.gcom2.monitoring:
|
||||||
@ -1002,14 +1002,14 @@ def update():
|
|||||||
msg3.configure(text=t)
|
msg3.configure(text=t)
|
||||||
t="QSO DF:%4d" % (int(Audio.gcom2.mousedf),)
|
t="QSO DF:%4d" % (int(Audio.gcom2.mousedf),)
|
||||||
msg4.configure(text=t)
|
msg4.configure(text=t)
|
||||||
bdecode.configure(bg='gray85',activebackground='gray95')
|
|
||||||
if mode.get()[:4]=='JT65' and Audio.gcom2.ndecoding:
|
if mode.get()[:4]=='JT65' and Audio.gcom2.ndecoding:
|
||||||
#Set button bg while decoding
|
#Set button bg while decoding
|
||||||
bc='#66FFFF'
|
bc='#66FFFF'
|
||||||
if g.ndecphase==1: bc='orange'
|
# if g.ndecphase==1: bc='orange'
|
||||||
if g.ndecphase==2: bc='yellow'
|
# if g.ndecphase==2: bc='yellow'
|
||||||
bdecode.configure(bg=bc,activebackground=bc)
|
bdecode.configure(bg=bc,activebackground=bc,state=DISABLED)
|
||||||
else:
|
else:
|
||||||
|
bdecode.configure(bg='gray85',activebackground='gray95',state=ACTIVE)
|
||||||
g.ndecphase=0
|
g.ndecphase=0
|
||||||
|
|
||||||
tx1.configure(bg='white')
|
tx1.configure(bg='white')
|
||||||
@ -1065,7 +1065,7 @@ def update():
|
|||||||
except:
|
except:
|
||||||
lines=""
|
lines=""
|
||||||
text.configure(state=NORMAL)
|
text.configure(state=NORMAL)
|
||||||
for i in range(len(lines)):
|
for i in range(len(lines)-1):
|
||||||
text.insert(END,lines[i])
|
text.insert(END,lines[i])
|
||||||
text.see(END)
|
text.see(END)
|
||||||
g.ndecphase=1
|
g.ndecphase=1
|
||||||
|
58
map65a.f90
58
map65a.f90
@ -39,7 +39,7 @@ subroutine map65a(newdat)
|
|||||||
utcdata=utcdata(1:2)//':'//utcdata(3:4)
|
utcdata=utcdata(1:2)//':'//utcdata(3:4)
|
||||||
open(23,file='CALL3.TXT',status='old')
|
open(23,file='CALL3.TXT',status='old')
|
||||||
|
|
||||||
fselect=mousefqso + 1.6 + 0.001*mousedf
|
fselect=mousefqso + 1.6
|
||||||
df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz
|
df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz
|
||||||
ftol=0.020 !Frequency tolerance (kHz)
|
ftol=0.020 !Frequency tolerance (kHz)
|
||||||
nfilt=1
|
nfilt=1
|
||||||
@ -47,11 +47,10 @@ subroutine map65a(newdat)
|
|||||||
|
|
||||||
do nqd=1,0,-1
|
do nqd=1,0,-1
|
||||||
if(nqd.eq.1) then
|
if(nqd.eq.1) then
|
||||||
fa=1000.0*(fselect-100.0) - dftolerance
|
fa=1000.0*(fselect+0.001*mousedf-100.0) - dftolerance
|
||||||
fb=1000.0*(fselect-100.0) + dftolerance
|
fb=1000.0*(fselect+0.001*mousedf-100.0) + dftolerance
|
||||||
ia=nint((fa+23000.0)/df + 1.0) ! 23000 = 48000 - 25000
|
ia=nint((fa+23000.0)/df + 1.0) ! 23000 = 48000 - 25000
|
||||||
ib=nint((fb+23000.0)/df + 1.0)
|
ib=nint((fb+23000.0)/df + 1.0)
|
||||||
print*,dftolerance,ia,ib
|
|
||||||
else
|
else
|
||||||
fa=0.0
|
fa=0.0
|
||||||
fb=60000.0
|
fb=60000.0
|
||||||
@ -63,15 +62,12 @@ subroutine map65a(newdat)
|
|||||||
nkk=1
|
nkk=1
|
||||||
nz=n/8
|
nz=n/8
|
||||||
|
|
||||||
ndecdone=1
|
|
||||||
|
|
||||||
do i=1,NFFT
|
do i=1,NFFT
|
||||||
short(1,i)=0.
|
short(1,i)=0.
|
||||||
short(2,i)=0.
|
short(2,i)=0.
|
||||||
short(3,i)=0.
|
short(3,i)=0.
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
newspec=1
|
|
||||||
freq0=-999.
|
freq0=-999.
|
||||||
sync10=-999.
|
sync10=-999.
|
||||||
fshort0=-999.
|
fshort0=-999.
|
||||||
@ -159,14 +155,12 @@ subroutine map65a(newdat)
|
|||||||
! (Am I deleting any good decodes by doing this? Any harm in omitting
|
! (Am I deleting any good decodes by doing this? Any harm in omitting
|
||||||
! these statements??)
|
! these statements??)
|
||||||
if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. &
|
if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. &
|
||||||
nkk.eq.1) kk=kk-1
|
nkk.eq.1 .and.nqd.eq.0) kk=kk-1
|
||||||
|
|
||||||
if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then
|
if(freq-freq0.gt.ftol .or. sync1.gt.sync10 .and. nqd.eq.0) then
|
||||||
nflip=nint(flipk)
|
nflip=nint(flipk)
|
||||||
call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip,dphi, &
|
call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip,dphi, &
|
||||||
ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded)
|
ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded)
|
||||||
! i9=index(decoded,'AA1YN')
|
|
||||||
! if(i9.gt.0) print*,i,i9,fselect,freq,decoded
|
|
||||||
kk=kk+1
|
kk=kk+1
|
||||||
sig(kk,1)=nfile
|
sig(kk,1)=nfile
|
||||||
sig(kk,2)=nutc
|
sig(kk,2)=nutc
|
||||||
@ -195,21 +189,41 @@ subroutine map65a(newdat)
|
|||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
if(nqd.eq.1) then
|
if(nqd.eq.1) then
|
||||||
|
do k=1,kk
|
||||||
|
decoded=msg(k)
|
||||||
|
if(decoded.ne.' ') then
|
||||||
|
nutc=sig(k,2)
|
||||||
|
freq=sig(k,3)
|
||||||
|
sync1=sig(k,4)
|
||||||
|
dt=sig(k,5)
|
||||||
|
npol=nint(57.2957795*sig(k,6))
|
||||||
|
flip=sig(k,7)
|
||||||
|
sync2=sig(k,8)
|
||||||
|
nkv=sig(k,9)
|
||||||
|
nqual=sig(k,10)
|
||||||
|
if(flip.lt.0.0) then
|
||||||
|
do i=22,1,-1
|
||||||
|
if(decoded(i:i).ne.' ') go to 8
|
||||||
|
enddo
|
||||||
|
stop 'Error in message format'
|
||||||
|
8 if(i.le.18) decoded(i+2:i+4)='OOO'
|
||||||
|
endif
|
||||||
nkHz=nint(freq-1.600)
|
nkHz=nint(freq-1.600)
|
||||||
npol=nint(57.2957795*pol)
|
f0=144.0+0.001*nkHz
|
||||||
nqual=qual
|
ndf=nint(1000.0*(freq-1.600-nkHz))
|
||||||
if(nflip.eq.-1) then !Should this be in decode1a ?
|
! ndf0=nint(a(1))
|
||||||
do i=22,9,-1
|
! ndf1=nint(a(2))
|
||||||
if(decoded(i:i).ne.' ') then
|
! ndf2=nint(a(3))
|
||||||
decoded(i+2:i+4)='OOO'
|
nsync1=sync1
|
||||||
go to 6
|
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
|
||||||
|
nw=0
|
||||||
|
write(11,1010) nkHz,ndf,npol,nutc,nsync2,dt,nw,decoded,nkv,nqual
|
||||||
|
1010 format(i3,i5,i4,i5.4,i4,f5.1,i3,2x,a22,2i3)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
endif
|
write(11,*) '$EOF'
|
||||||
nw=0
|
|
||||||
6 write(11,1010) nkHz,ndf,npol,nutc,nsync2,dt,nw,decoded,nkv,nqual
|
|
||||||
1010 format(i3,i5,i4,i5.4,i4,f5.1,i3,2x,a22,2i3)
|
|
||||||
call flushqqq(11)
|
call flushqqq(11)
|
||||||
|
ndecdone=1
|
||||||
endif
|
endif
|
||||||
if(nagain.eq.1) go to 999
|
if(nagain.eq.1) go to 999
|
||||||
enddo
|
enddo
|
||||||
|
15
specjt.py
15
specjt.py
@ -175,8 +175,15 @@ def freq_range(event):
|
|||||||
if fmid<1000*nfr.get(): fmid=1000*nfr.get()
|
if fmid<1000*nfr.get(): fmid=1000*nfr.get()
|
||||||
if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get()
|
if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get()
|
||||||
|
|
||||||
#---------------------------------------------------- freeze_decode
|
#---------------------------------------------------- freeze_decode1
|
||||||
def freeze_decode(event):
|
def freeze_decode1(event):
|
||||||
|
# If decoder is busy or we are not monitoring, ignore request
|
||||||
|
if Audio.gcom2.ndecoding==0 or Audio.gcom2.monitoring==0:
|
||||||
|
set_fqso(event)
|
||||||
|
g.freeze_decode=1
|
||||||
|
|
||||||
|
#---------------------------------------------------- freeze_decode2
|
||||||
|
def freeze_decode2(event):
|
||||||
# If decoder is busy or we are not monitoring, ignore request
|
# If decoder is busy or we are not monitoring, ignore request
|
||||||
if Audio.gcom2.ndecoding==0 or Audio.gcom2.monitoring==0:
|
if Audio.gcom2.ndecoding==0 or Audio.gcom2.monitoring==0:
|
||||||
set_freezedf(event)
|
set_freezedf(event)
|
||||||
@ -400,7 +407,7 @@ graph1=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair')
|
|||||||
graph1.pack(side=TOP)
|
graph1.pack(side=TOP)
|
||||||
Widget.bind(graph1,"<Motion>",fdf_change)
|
Widget.bind(graph1,"<Motion>",fdf_change)
|
||||||
Widget.bind(graph1,"<Button-1>",set_fqso)
|
Widget.bind(graph1,"<Button-1>",set_fqso)
|
||||||
Widget.bind(graph1,"<Double-Button-1>",freeze_decode)
|
Widget.bind(graph1,"<Double-Button-1>",freeze_decode1)
|
||||||
iframe1.pack(expand=1, fill=X)
|
iframe1.pack(expand=1, fill=X)
|
||||||
|
|
||||||
c2=Canvas(iframe1, bg='white', width=NX, height=25,bd=0)
|
c2=Canvas(iframe1, bg='white', width=NX, height=25,bd=0)
|
||||||
@ -413,7 +420,7 @@ graph2=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair')
|
|||||||
graph2.pack(side=TOP)
|
graph2.pack(side=TOP)
|
||||||
Widget.bind(graph2,"<Motion>",fdf_change2)
|
Widget.bind(graph2,"<Motion>",fdf_change2)
|
||||||
Widget.bind(graph2,"<Button-1>",set_freezedf)
|
Widget.bind(graph2,"<Button-1>",set_freezedf)
|
||||||
Widget.bind(graph2,"<Double-Button-1>",freeze_decode)
|
Widget.bind(graph2,"<Double-Button-1>",freeze_decode2)
|
||||||
iframe1.pack(expand=1, fill=X)
|
iframe1.pack(expand=1, fill=X)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine symspec(id,kbuf,kk,kkdone,rxnoise)
|
subroutine symspec(id,kbuf,kk,kkdone,rxnoise,newspec)
|
||||||
|
|
||||||
C Compute spectra at four polarizations, using half-symbol steps.
|
C Compute spectra at four polarizations, using half-symbol steps.
|
||||||
|
|
||||||
@ -84,7 +84,10 @@ C Compute spectra at four polarizations, using half-symbol steps.
|
|||||||
ss5(n,i)=0.707*sqrt(q*q + u*u)
|
ss5(n,i)=0.707*sqrt(q*q + u*u)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
if(n.eq.ntot) go to 999
|
if(n.eq.ntot) then
|
||||||
|
newspec=1
|
||||||
|
go to 999
|
||||||
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
999 return
|
999 return
|
||||||
|
Loading…
Reference in New Issue
Block a user