mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-17 09:31:59 -05:00
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:
parent
79fc0fc076
commit
49a53a080e
@ -1,4 +1,4 @@
|
||||
subroutine display
|
||||
subroutine display(nkeep)
|
||||
|
||||
#ifdef Win32
|
||||
use dfport
|
||||
@ -14,7 +14,6 @@ subroutine display
|
||||
real freqkHz(MAXLINES)
|
||||
integer utc(MAXLINES),utc2(MX),utcz
|
||||
real*8 f0
|
||||
data nkeep/20/
|
||||
|
||||
ftol=0.02
|
||||
rewind 26
|
||||
|
13
gcom2.f90
13
gcom2.f90
@ -35,6 +35,11 @@ integer nclearave !Set to 1 to clear JT65 avg GUI,Decoder
|
||||
integer nfreeze !Is Freeze checked? GUI
|
||||
integer nafc !Is AFC checked? GUI
|
||||
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 mode65 !JT65 sub-mode (A/B/C ==> 1/2/4) GUI,SoundIn,Decoder
|
||||
integer nclip !Clipping level GUI
|
||||
@ -85,6 +90,7 @@ character*24 fnamea
|
||||
character*24 fnameb
|
||||
character*24 decodedfile
|
||||
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 filetokillb
|
||||
character*12 pttport
|
||||
@ -95,13 +101,14 @@ common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), &
|
||||
ndecoding,ndecoding0,mousebutton, &
|
||||
ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, &
|
||||
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, &
|
||||
shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, &
|
||||
idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow, &
|
||||
ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), &
|
||||
mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, &
|
||||
fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate,pttport, &
|
||||
utcdata
|
||||
fnameb,decodedfile,AppDir,SaveDir,filetokilla,filetokillb,utcdate, &
|
||||
pttport,utcdata
|
||||
|
||||
!### volatile /gcom2/
|
||||
|
42
map65.py
42
map65.py
@ -1,4 +1,4 @@
|
||||
#-------------------------------------------------------------------- MAP65
|
||||
#--------------------------------------------------------------------- MAP65
|
||||
# $Date$ $Revision$
|
||||
#
|
||||
from Tkinter import *
|
||||
@ -42,6 +42,7 @@ root_geom=""
|
||||
|
||||
#------------------------------------------------------ Global variables
|
||||
appdir=os.getcwd()
|
||||
g.appdir=appdir
|
||||
isync=1
|
||||
isync_save=0
|
||||
iclip=0
|
||||
@ -1203,6 +1204,31 @@ def update():
|
||||
except:
|
||||
Audio.gcom2.idinterval=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.txdelay=float('0'+options.TxDelay.get())
|
||||
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 == 'AuxRA': options.auxra.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 == 'KB8RQ': kb8rq.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")
|
||||
f.write("AuxRA " + options.auxra.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("KB8RQ " + str(kb8rq.get()) + "\n")
|
||||
f.write("K2TXB " + str(k2txb.get()) + "\n")
|
||||
|
41
map65a.F90
41
map65a.F90
@ -46,10 +46,13 @@ subroutine map65a(newdat)
|
||||
|
||||
df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz
|
||||
ftol=0.020 !Frequency tolerance (kHz)
|
||||
fselect=mousefqso + 1.6
|
||||
foffset=0.001*(1270 + nfcal)
|
||||
fselect=mousefqso + foffset
|
||||
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
|
||||
if(nqd.eq.1) then
|
||||
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
|
||||
ib=nint((fb+23000.0)/df + 1.0)
|
||||
else
|
||||
fa=0.0
|
||||
fb=60000.0
|
||||
fa=1000*(nfa-100)
|
||||
fb=1000*(nfb-100)
|
||||
ia=nint((fa+23000.0)/df + 1.0) ! 23000 = 48000 - 25000
|
||||
ib=nint((fb+23000.0)/df + 1.0)
|
||||
endif
|
||||
@ -164,8 +167,9 @@ subroutine map65a(newdat)
|
||||
! Keep only the best candidate within ftol.
|
||||
! (Am I deleting any good decodes by doing this?)
|
||||
if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. &
|
||||
nkm.eq.1) km=km-1
|
||||
if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then
|
||||
nkm.eq.1 .and.ndphi.eq.0) km=km-1
|
||||
if(freq-freq0.gt.ftol .or. sync1.gt.sync10 .or. &
|
||||
ndphi.eq.1) then
|
||||
nflip=nint(flipk)
|
||||
call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip, &
|
||||
mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi, &
|
||||
@ -181,7 +185,7 @@ subroutine map65a(newdat)
|
||||
sig(km,8)=sync2
|
||||
sig(km,9)=nkv
|
||||
sig(km,10)=qual
|
||||
! sig(km,11)=rms0
|
||||
! sig(km,11)=idphi
|
||||
sig(km,12)=savg(ipol,i)
|
||||
sig(km,13)=a(1)
|
||||
sig(km,14)=a(2)
|
||||
@ -211,6 +215,7 @@ subroutine map65a(newdat)
|
||||
sync2=sig(k,8)
|
||||
nkv=sig(k,9)
|
||||
nqual=sig(k,10)
|
||||
! idphi=nint(sig(k,11))
|
||||
if(flip.lt.0.0) then
|
||||
do i=22,1,-1
|
||||
if(decoded(i:i).ne.' ') go to 8
|
||||
@ -218,9 +223,9 @@ subroutine map65a(newdat)
|
||||
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-foffset)
|
||||
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))
|
||||
! ndf1=nint(a(2))
|
||||
! ndf2=nint(a(3))
|
||||
@ -228,8 +233,9 @@ subroutine map65a(newdat)
|
||||
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
|
||||
nw=0 !### Fix this! ###
|
||||
nwrite=nwrite+1
|
||||
write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv,nqual
|
||||
1010 format(i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4)
|
||||
write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv, &
|
||||
nqual,30*iloop
|
||||
1010 format(i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4,i4)
|
||||
endif
|
||||
enddo
|
||||
if(nwrite.eq.0) then
|
||||
@ -244,6 +250,10 @@ subroutine map65a(newdat)
|
||||
3002 format('mod65a 2:'i8.2)
|
||||
ndecdone=1
|
||||
endif
|
||||
if(ndphi.eq.1 .and.iloop.lt.12) then
|
||||
iloop=iloop+1
|
||||
go to 1
|
||||
endif
|
||||
if(nagain.eq.1) go to 999
|
||||
enddo
|
||||
|
||||
@ -295,9 +305,9 @@ subroutine map65a(newdat)
|
||||
stop 'Error in message format'
|
||||
10 if(i.le.18) decoded(i+2:i+4)='OOO'
|
||||
endif
|
||||
nkHz=nint(freq-1.600)
|
||||
nkHz=nint(freq-foffset)
|
||||
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))
|
||||
ndf1=nint(a(2))
|
||||
ndf2=nint(a(3))
|
||||
@ -315,12 +325,13 @@ subroutine map65a(newdat)
|
||||
endif
|
||||
j=j+nsiz(n)
|
||||
enddo
|
||||
call display
|
||||
call display(nkeep)
|
||||
ndecdone=2
|
||||
|
||||
if(nsave.gt.0) call savetf2(id(1,1,kbuf),nsave,nutc)
|
||||
|
||||
999 close(23)
|
||||
ndphi=0
|
||||
if(kbuf.eq.1) kkdone=60*96000
|
||||
if(kbuf.eq.2 .or. ndiskdat.eq.1) kkdone=0
|
||||
kk=kkdone
|
||||
|
24
options.py
24
options.py
@ -41,6 +41,12 @@ Template6=StringVar()
|
||||
addpfx=StringVar()
|
||||
auxra=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:',
|
||||
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):',
|
||||
## value='0.2',entry_textvariable=TxDelay)
|
||||
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:',
|
||||
value='/dev/ttyS0',entry_textvariable=PttPort,entry_width=12)
|
||||
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)
|
||||
aux_dec=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source DEC:',
|
||||
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:
|
||||
widget.pack(padx=10,pady=2)
|
||||
Pmw.alignlabels(widgets)
|
||||
|
Loading…
Reference in New Issue
Block a user