Added user options for nkeep, dphi, fa, fb, fcal, and savedir.

Implemented "Find dphi".


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@477 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-07-09 16:14:00 +00:00
parent 48713421d0
commit bf6c93851a
5 changed files with 100 additions and 23 deletions

View File

@ -1,4 +1,4 @@
subroutine display subroutine display(nkeep)
#ifdef Win32 #ifdef Win32
use dfport use dfport
@ -14,7 +14,6 @@ subroutine display
real freqkHz(MAXLINES) real freqkHz(MAXLINES)
integer utc(MAXLINES),utc2(MX),utcz integer utc(MAXLINES),utc2(MX),utcz
real*8 f0 real*8 f0
data nkeep/20/
ftol=0.02 ftol=0.02
rewind 26 rewind 26

View File

@ -35,6 +35,11 @@ integer nclearave !Set to 1 to clear JT65 avg GUI,Decoder
integer nfreeze !Is Freeze checked? GUI integer nfreeze !Is Freeze checked? GUI
integer nafc !Is AFC checked? GUI integer nafc !Is AFC checked? GUI
integer newspec !New spectra in ss(4,322,NSMAX) GUI,Decoder integer newspec !New spectra in ss(4,322,NSMAX) GUI,Decoder
integer nfa !Low end of map65 search (def 100 kHz) GUI
integer nfb !High end of map65 search (def 160 kHz) GUI
integer nfcal !Calibration offset, Hz GUI
integer idphi !Phase offset in Y channel (deg) GUI
integer nkeep !Timeout limit for band maps (min) GUI
integer nmode !Which WSJT mode? GUI,Decoder integer nmode !Which WSJT mode? GUI,Decoder
integer mode65 !JT65 sub-mode (A/B/C ==> 1/2/4) GUI,SoundIn,Decoder integer mode65 !JT65 sub-mode (A/B/C ==> 1/2/4) GUI,SoundIn,Decoder
integer nclip !Clipping level GUI integer nclip !Clipping level GUI
@ -85,6 +90,7 @@ character*24 fnamea
character*24 fnameb character*24 fnameb
character*24 decodedfile character*24 decodedfile
character*80 AppDir !WSJT installation directory GUI character*80 AppDir !WSJT installation directory GUI
character*80 SaveDir !Directory for saved data files GUI
character*80 filetokilla !Filenames (full path) Decoder character*80 filetokilla !Filenames (full path) Decoder
character*80 filetokillb character*80 filetokillb
character*12 pttport character*12 pttport
@ -95,13 +101,14 @@ common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), &
ndecoding,ndecoding0,mousebutton, & ndecoding,ndecoding0,mousebutton, &
ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, & ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, &
dftolerance,LDecoded,rxdone,monitoring,nzap,minsigdb, & dftolerance,LDecoded,rxdone,monitoring,nzap,minsigdb, &
nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,ndphi, & nclearave,nfreeze,nafc,newspec,nfa,nfb,nfcal,idphi,nkeep, &
nmode,mode65,nclip,ndebug,ndphi, &
nblank,nport,mousedf,mousefqso,neme,nrw26,naggressive,ntx2,nagain, & nblank,nport,mousedf,mousefqso,neme,nrw26,naggressive,ntx2,nagain, &
shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, & shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, &
idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow, & idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow, &
ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), & ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), &
mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, & mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, &
fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate,pttport, & fnameb,decodedfile,AppDir,SaveDir,filetokilla,filetokillb,utcdate, &
utcdata pttport,utcdata
!### volatile /gcom2/ !### volatile /gcom2/

View File

@ -1,4 +1,4 @@
#-------------------------------------------------------------------- MAP65 #--------------------------------------------------------------------- MAP65
# $Date$ $Revision$ # $Date$ $Revision$
# #
from Tkinter import * from Tkinter import *
@ -42,6 +42,7 @@ root_geom=""
#------------------------------------------------------ Global variables #------------------------------------------------------ Global variables
appdir=os.getcwd() appdir=os.getcwd()
g.appdir=appdir
isync=1 isync=1
isync_save=0 isync_save=0
iclip=0 iclip=0
@ -1203,6 +1204,31 @@ def update():
except: except:
Audio.gcom2.idinterval=0 Audio.gcom2.idinterval=0
Audio.gcom2.ntx2=0 Audio.gcom2.ntx2=0
try:
Audio.gcom2.nkeep=options.nkeep.get()
except:
Audio.gcom2.nkeep=20
try:
Audio.gcom2.idphi=options.dphi.get()
except:
Audio.gcom2.idphi=0
try:
Audio.gcom2.nfa=options.fa.get()
except:
Audio.gcom2.nfa=100
try:
Audio.gcom2.nfb=options.fb.get()
except:
Audio.gcom2.nfa=160
try:
Audio.gcom2.nfcal=options.fcal.get()
except:
Audio.gcom2.nfcal=0
t=options.savedir.get() + \
' ' + \
' '
Audio.gcom2.savedir=t[:80]
# Audio.gcom1.rxdelay=float('0'+options.RxDelay.get()) # Audio.gcom1.rxdelay=float('0'+options.RxDelay.get())
# Audio.gcom1.txdelay=float('0'+options.TxDelay.get()) # Audio.gcom1.txdelay=float('0'+options.TxDelay.get())
if ntx.get()==1 and noshjt65.get()==1: Audio.gcom2.ntx2=1 if ntx.get()==1 and noshjt65.get()==1: Audio.gcom2.ntx2=1
@ -1679,6 +1705,14 @@ try:
elif key == 'AddPrefix': options.addpfx.set(value.replace("_"," ").lstrip()) elif key == 'AddPrefix': options.addpfx.set(value.replace("_"," ").lstrip())
elif key == 'AuxRA': options.auxra.set(value) elif key == 'AuxRA': options.auxra.set(value)
elif key == 'AuxDEC': options.auxdec.set(value) elif key == 'AuxDEC': options.auxdec.set(value)
elif key == 'nkeep': options.nkeep.set(value)
elif key == 'fa': options.fa.set(value)
elif key == 'fb': options.fb.set(value)
elif key == 'fcal': options.fcal.set(value)
elif key == 'dphi': options.dphi.set(value)
elif key == 'savedir': options.savedir.set(value)
elif key == 'TxFirst': TxFirst.set(value) elif key == 'TxFirst': TxFirst.set(value)
elif key == 'KB8RQ': kb8rq.set(value) elif key == 'KB8RQ': kb8rq.set(value)
elif key == 'K2TXB': k2txb.set(value) elif key == 'K2TXB': k2txb.set(value)
@ -1762,6 +1796,12 @@ if options.auxra.get()=="": options.auxra.set("0")
if options.auxdec.get()=="": options.auxdec.set("0") if options.auxdec.get()=="": options.auxdec.set("0")
f.write("AuxRA " + options.auxra.get() + "\n") f.write("AuxRA " + options.auxra.get() + "\n")
f.write("AuxDEC " + options.auxdec.get() + "\n") f.write("AuxDEC " + options.auxdec.get() + "\n")
f.write("nkeep " + str(options.nkeep.get()) + "\n")
f.write("dphi " + str(options.dphi.get()) + "\n")
f.write("fa " + str(options.fa.get()) + "\n")
f.write("fb " + str(options.fb.get()) + "\n")
f.write("fcal " + str(options.fcal.get()) + "\n")
f.write("SaveDir " + str(options.savedir.get()) + "\n")
f.write("TxFirst " + str(TxFirst.get()) + "\n") f.write("TxFirst " + str(TxFirst.get()) + "\n")
f.write("KB8RQ " + str(kb8rq.get()) + "\n") f.write("KB8RQ " + str(kb8rq.get()) + "\n")
f.write("K2TXB " + str(k2txb.get()) + "\n") f.write("K2TXB " + str(k2txb.get()) + "\n")

View File

@ -46,10 +46,13 @@ subroutine map65a(newdat)
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)
fselect=mousefqso + 1.6 foffset=0.001*(1270 + nfcal)
fselect=mousefqso + foffset
nfilt=1 nfilt=1
dphi=310/57.2957795 dphi=idphi/57.2957795
iloop=0
1 if(ndphi.eq.1) dphi=30*iloop/57.2957795
do nqd=1,0,-1 do nqd=1,0,-1
if(nqd.eq.1) then if(nqd.eq.1) then
fa=1000.0*(fselect+0.001*mousedf-100.0) - dftolerance fa=1000.0*(fselect+0.001*mousedf-100.0) - dftolerance
@ -57,8 +60,8 @@ subroutine map65a(newdat)
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)
else else
fa=0.0 fa=1000*(nfa-100)
fb=60000.0 fb=1000*(nfb-100)
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)
endif endif
@ -164,8 +167,9 @@ subroutine map65a(newdat)
! Keep only the best candidate within ftol. ! Keep only the best candidate within ftol.
! (Am I deleting any good decodes by doing this?) ! (Am I deleting any good decodes by doing this?)
if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. & if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. &
nkm.eq.1) km=km-1 nkm.eq.1 .and.ndphi.eq.0) km=km-1
if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then if(freq-freq0.gt.ftol .or. sync1.gt.sync10 .or. &
ndphi.eq.1) then
nflip=nint(flipk) nflip=nint(flipk)
call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip, & call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip, &
mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi, & mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi, &
@ -181,7 +185,7 @@ subroutine map65a(newdat)
sig(km,8)=sync2 sig(km,8)=sync2
sig(km,9)=nkv sig(km,9)=nkv
sig(km,10)=qual sig(km,10)=qual
! sig(km,11)=rms0 ! sig(km,11)=idphi
sig(km,12)=savg(ipol,i) sig(km,12)=savg(ipol,i)
sig(km,13)=a(1) sig(km,13)=a(1)
sig(km,14)=a(2) sig(km,14)=a(2)
@ -211,6 +215,7 @@ subroutine map65a(newdat)
sync2=sig(k,8) sync2=sig(k,8)
nkv=sig(k,9) nkv=sig(k,9)
nqual=sig(k,10) nqual=sig(k,10)
! idphi=nint(sig(k,11))
if(flip.lt.0.0) then if(flip.lt.0.0) then
do i=22,1,-1 do i=22,1,-1
if(decoded(i:i).ne.' ') go to 8 if(decoded(i:i).ne.' ') go to 8
@ -218,9 +223,9 @@ subroutine map65a(newdat)
stop 'Error in message format' stop 'Error in message format'
8 if(i.le.18) decoded(i+2:i+4)='OOO' 8 if(i.le.18) decoded(i+2:i+4)='OOO'
endif endif
nkHz=nint(freq-1.600) nkHz=nint(freq-foffset)
f0=144.0+0.001*nkHz f0=144.0+0.001*nkHz
ndf=nint(1000.0*(freq-1.600-nkHz)) ndf=nint(1000.0*(freq-foffset-nkHz))
! ndf0=nint(a(1)) ! ndf0=nint(a(1))
! ndf1=nint(a(2)) ! ndf1=nint(a(2))
! ndf2=nint(a(3)) ! ndf2=nint(a(3))
@ -228,8 +233,9 @@ subroutine map65a(newdat)
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
nw=0 !### Fix this! ### nw=0 !### Fix this! ###
nwrite=nwrite+1 nwrite=nwrite+1
write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv,nqual write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv, &
1010 format(i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4) nqual,30*iloop
1010 format(i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4,i4)
endif endif
enddo enddo
if(nwrite.eq.0) then if(nwrite.eq.0) then
@ -244,6 +250,10 @@ subroutine map65a(newdat)
3002 format('mod65a 2:'i8.2) 3002 format('mod65a 2:'i8.2)
ndecdone=1 ndecdone=1
endif endif
if(ndphi.eq.1 .and.iloop.lt.12) then
iloop=iloop+1
go to 1
endif
if(nagain.eq.1) go to 999 if(nagain.eq.1) go to 999
enddo enddo
@ -295,9 +305,9 @@ subroutine map65a(newdat)
stop 'Error in message format' stop 'Error in message format'
10 if(i.le.18) decoded(i+2:i+4)='OOO' 10 if(i.le.18) decoded(i+2:i+4)='OOO'
endif endif
nkHz=nint(freq-1.600) nkHz=nint(freq-foffset)
f0=144.0+0.001*nkHz f0=144.0+0.001*nkHz
ndf=nint(1000.0*(freq-1.600-nkHz)) ndf=nint(1000.0*(freq-foffset-nkHz))
ndf0=nint(a(1)) ndf0=nint(a(1))
ndf1=nint(a(2)) ndf1=nint(a(2))
ndf2=nint(a(3)) ndf2=nint(a(3))
@ -315,12 +325,13 @@ subroutine map65a(newdat)
endif endif
j=j+nsiz(n) j=j+nsiz(n)
enddo enddo
call display call display(nkeep)
ndecdone=2 ndecdone=2
if(nsave.gt.0) call savetf2(id(1,1,kbuf),nsave,nutc) if(nsave.gt.0) call savetf2(id(1,1,kbuf),nsave,nutc)
999 close(23) 999 close(23)
ndphi=0
if(kbuf.eq.1) kkdone=60*96000 if(kbuf.eq.1) kkdone=60*96000
if(kbuf.eq.2 .or. ndiskdat.eq.1) kkdone=0 if(kbuf.eq.2 .or. ndiskdat.eq.1) kkdone=0
kk=kkdone kk=kkdone

View File

@ -41,6 +41,12 @@ Template6=StringVar()
addpfx=StringVar() addpfx=StringVar()
auxra=StringVar() auxra=StringVar()
auxdec=StringVar() auxdec=StringVar()
nkeep=IntVar()
dphi=IntVar()
fa=IntVar()
fb=IntVar()
fcal=IntVar()
savedir=StringVar()
mycall=Pmw.EntryField(g1.interior(),labelpos=W,label_text='My Call:', mycall=Pmw.EntryField(g1.interior(),labelpos=W,label_text='My Call:',
value='K1JT',entry_textvariable=MyCall,entry_width=12) value='K1JT',entry_textvariable=MyCall,entry_width=12)
@ -51,7 +57,8 @@ mygrid=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Grid Locator:',
##txdelay=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Tx Delay (s):', ##txdelay=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Tx Delay (s):',
## value='0.2',entry_textvariable=TxDelay) ## value='0.2',entry_textvariable=TxDelay)
idinterval=Pmw.EntryField(g1.interior(),labelpos=W,label_text='ID Interval (m):', idinterval=Pmw.EntryField(g1.interior(),labelpos=W,label_text='ID Interval (m):',
value=10,entry_textvariable=IDinterval,entry_width=12) value=10,validate={'validator':'numeric','min':0,'max':60}, \
entry_textvariable=IDinterval,entry_width=12)
comport=Pmw.EntryField(g1.interior(),labelpos=W,label_text='PTT Port:', comport=Pmw.EntryField(g1.interior(),labelpos=W,label_text='PTT Port:',
value='/dev/ttyS0',entry_textvariable=PttPort,entry_width=12) value='/dev/ttyS0',entry_textvariable=PttPort,entry_width=12)
audioout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio Out:', audioout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio Out:',
@ -84,7 +91,20 @@ aux_ra=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source RA:',
entry_width=9,entry_textvariable=auxra) entry_width=9,entry_textvariable=auxra)
aux_dec=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source DEC:', aux_dec=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source DEC:',
entry_width=9,entry_textvariable=auxdec) entry_width=9,entry_textvariable=auxdec)
widgets = (temp_prefix,aux_ra,aux_dec) nkeep_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='nkeep (min):',
entry_width=9,value=20,entry_textvariable=nkeep)
dphi_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Dphi (deg):',
entry_width=9,entry_textvariable=dphi)
fa_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='fa (kHz):',
entry_width=9,value=100,entry_textvariable=fa)
fb_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='fb (kHz):',
entry_width=9,value=160,entry_textvariable=fb)
fcal_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='fcal (Hz):',
entry_width=9,entry_textvariable=fcal)
savedir_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='SaveDir:',
entry_width=20,value=g.appdir+'/save',entry_textvariable=savedir)
widgets = (temp_prefix,aux_ra,aux_dec,nkeep_entry,dphi_entry, \
fa_entry,fb_entry,fcal_entry,savedir_entry,)
for widget in widgets: for widget in widgets:
widget.pack(padx=10,pady=2) widget.pack(padx=10,pady=2)
Pmw.alignlabels(widgets) Pmw.alignlabels(widgets)