File opening and disk reading has been rationalized

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@350 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-01-14 00:44:34 +00:00
parent 162d6499b6
commit b654ed38b9
8 changed files with 84 additions and 311 deletions

View File

@ -10,8 +10,11 @@ subroutine decode1(iarg)
character sending0*28,mode0*6,cshort*11 character sending0*28,mode0*6,cshort*11
integer sendingsh0 integer sendingsh0
character*80 fname80
include 'gcom1.f90' parameter (NSMAX=60*96000) !Samples per 60 s file
integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2
common/datcom/nutc,newdat2,id,fname80,nlen
include 'gcom1.f90'
include 'gcom2.f90' include 'gcom2.f90'
include 'gcom3.f90' include 'gcom3.f90'
include 'gcom4.f90' include 'gcom4.f90'
@ -23,11 +26,12 @@ subroutine decode1(iarg)
ns0=999999 ns0=999999
10 continue 10 continue
if(newdat2.gt.0) then
call getfile2(fname80,nlen)
endif
if(ndecoding.gt.0) then if(ndecoding.gt.0) then
ndecdone=0 ndecdone=0
! call decode2
call map65a call map65a
ndecdone=2
if(mousebutton.eq.0) ndecoding0=ndecoding if(mousebutton.eq.0) ndecoding0=ndecoding
ndecoding=0 ndecoding=0
endif endif

View File

@ -1,4 +1,4 @@
subroutine display(nutc) subroutine display
parameter (MAXLINES=500) parameter (MAXLINES=500)
integer indx(MAXLINES) integer indx(MAXLINES)
@ -19,6 +19,7 @@
enddo enddo
10 nz=i-1 10 nz=i-1
if(nz.lt.1) go to 999
call indexx(nz,freqkHz,indx) call indexx(nz,freqkHz,indx)
nstart=1 nstart=1
@ -32,10 +33,8 @@
if(nstart.eq.0) write(24,3101) if(nstart.eq.0) write(24,3101)
endfile 24 endfile 24
if(nstart.eq.1) then if(nstart.eq.1) then
!@@@ call sysqqq('sort -k 1.40 fort.24 | uniq > fort.13')
nstart=0 nstart=0
else else
!@@@ call sysqqq('sort -k 1.40 fort.24 | uniq >> fort.13')
endif endif
rewind 24 rewind 24
endif endif
@ -44,7 +43,6 @@
j0=j j0=j
enddo enddo
endfile 24 endfile 24
!@@@ call sysqqq('sort -k 1.40 fort.24 | uniq >> fort.13')
return 999 return
end end

View File

@ -1,84 +1,14 @@
!----------------------------------------------------- getfile !----------------------------------------------------- getfile
subroutine getfile(fname,len) subroutine getfile(fname,len)
#ifdef Win32
use dflib
#endif
parameter (NDMAX=661500) ! =60*11025
character*(*) fname character*(*) fname
include 'gcom1.f90' character*80 fname80
include 'gcom2.f90' parameter (NSMAX=60*96000) !Samples per 60 s file
include 'gcom4.f90' integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2
common/datcom/nutc,newdat2,id,fname80,nlen
fname80=fname
nlen=len
newdat2=1
integer*1 d1(NDMAX)
integer*1 hdr(44),n1
integer*2 d2(NDMAX)
integer*2 nfmt2,nchan2,nbitsam2,nbytesam2
character*4 ariff,awave,afmt,adata
common/hdr/ariff,lenfile,awave,afmt,lenfmt,nfmt2,nchan2, &
nsamrate,nbytesec,nbytesam2,nbitsam2,adata,ndata,d2
equivalence (ariff,hdr),(n1,n4),(d1,d2)
1 if(ndecoding.eq.0) go to 2
#ifdef Win32
call sleepqq(100)
#else
call usleep(100*1000)
#endif
go to 1
2 do i=len,1,-1
if(fname(i:i).eq.'/' .or. fname(i:i).eq.'\\') go to 10
enddo
i=0
10 filename=fname(i+1:)
ierr=0
#ifdef Win32
open(10,file=fname,form='binary',status='old',err=998)
read(10,end=998) hdr
#else
call rfile2(fname,hdr,44+2*NDMAX,nr)
#endif
if(nbitsam2.eq.8) then
if(ndata.gt.NDMAX) ndata=NDMAX
#ifdef Win32
call rfile(10,d1,ndata,ierr)
if(ierr.ne.0) go to 999
#endif
do i=1,ndata
n1=d1(i)
n4=n4+128
d2c(i)=250*n1
enddo
jzc=ndata
else if(nbitsam2.eq.16) then
if(ndata.gt.2*NDMAX) ndata=2*NDMAX
#ifdef Win32
call rfile(10,d2c,ndata,ierr)
jzc=ndata/2
if(ierr.ne.0) go to 999
#else
jzc=ndata/2
do i=1,jzc
d2c(i)=d2(i)
enddo
#endif
endif
ndiskdat=1
mousebutton=0
go to 999
998 ierr=1001
999 close(10)
return return
end subroutine getfile end subroutine getfile

View File

@ -41,7 +41,6 @@ root_geom=""
#------------------------------------------------------ Global variables #------------------------------------------------------ Global variables
nfile=0
appdir=os.getcwd() appdir=os.getcwd()
isync=1 isync=1
isync_save=0 isync_save=0
@ -78,7 +77,7 @@ nfreeze=IntVar()
nopen=0 nopen=0
nosh441=IntVar() nosh441=IntVar()
noshjt65=IntVar() noshjt65=IntVar()
nsked=IntVar() #nsked=IntVar()
setseq=IntVar() setseq=IntVar()
slabel="Sync " slabel="Sync "
textheight=7 textheight=7
@ -93,6 +92,7 @@ balloon=Pmw.Balloon(root)
g.freeze_decode=0 g.freeze_decode=0
g.mode="" g.mode=""
g.ndecphase=0
g.ndevin=IntVar() g.ndevin=IntVar()
g.ndevout=IntVar() g.ndevout=IntVar()
g.DevinName=StringVar() g.DevinName=StringVar()
@ -256,8 +256,6 @@ def decode(event=NONE):
Audio.gcom2.mousebutton=0 Audio.gcom2.mousebutton=0
if Audio.gcom2.ndecoding0==4: n=4 if Audio.gcom2.ndecoding0==4: n=4
Audio.gcom2.ndecoding=n #Standard decode, full file (d2a) Audio.gcom2.ndecoding=n #Standard decode, full file (d2a)
# if Audio.gcom2.ndecoding:
# Audio.map65a0() # @@@ Temporary @@@
#------------------------------------------------------ decode_include #------------------------------------------------------ decode_include
def decode_include(event=NONE): def decode_include(event=NONE):
@ -283,7 +281,7 @@ def openfile(event=NONE):
os.chdir(mrudir) os.chdir(mrudir)
except: except:
pass pass
fname=askopenfilename(filetypes=[("Wave files","*.wav *.WAV")]) fname=askopenfilename(filetypes=[("Linrad timf2 files","*.tf2 *.TF2")])
if fname: if fname:
Audio.getfile(fname,len(fname)) Audio.getfile(fname,len(fname))
if Audio.gcom2.ierr: print 'Error ',Audio.gcom2.ierr, \ if Audio.gcom2.ierr: print 'Error ',Audio.gcom2.ierr, \
@ -299,12 +297,12 @@ def opennext(event=NONE):
openfile() openfile()
ncall=1 ncall=1
else: else:
# Make a list of *.wav files in mrudir # Make a list of *.tf2 files in mrudir
la=os.listdir(mrudir) la=os.listdir(mrudir)
la.sort() la.sort()
lb=[] lb=[]
for i in range(len(la)): for i in range(len(la)):
j=la[i].find(".wav") + la[i].find(".WAV") j=la[i].find(".tf2") + la[i].find(".TF2")
if j>0: lb.append(la[i]) if j>0: lb.append(la[i])
for i in range(len(lb)): for i in range(len(lb)):
if lb[i]==fileopened: if lb[i]==fileopened:
@ -318,7 +316,7 @@ def opennext(event=NONE):
mrudir=os.path.dirname(fname) mrudir=os.path.dirname(fname)
fileopened=os.path.basename(fname) fileopened=os.path.basename(fname)
else: else:
t="No more *.wav files in this directory." t="No more files to process."
msg=Pmw.MessageDialog(root,buttons=('OK',),message_text=t) msg=Pmw.MessageDialog(root,buttons=('OK',),message_text=t)
msg.geometry(msgpos()) msg.geometry(msgpos())
if g.Win32: msg.iconbitmap("wsjt.ico") if g.Win32: msg.iconbitmap("wsjt.ico")
@ -488,9 +486,6 @@ def cleartext():
def ModeJT65(): def ModeJT65():
global slabel,isync,textheight,itol global slabel,isync,textheight,itol
cleartext() cleartext()
lab2.configure(text='FileID Sync dB DT DF W')
lab4.configure(fg='gray85')
lab5.configure(fg='gray85')
Audio.gcom1.trperiod=60 Audio.gcom1.trperiod=60
iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4) iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4)
textheight=7 textheight=7
@ -502,7 +497,7 @@ def ModeJT65():
bexclude.configure(state=NORMAL) bexclude.configure(state=NORMAL)
cbfreeze.configure(state=NORMAL) cbfreeze.configure(state=NORMAL)
cbafc.configure(state=NORMAL) cbafc.configure(state=NORMAL)
sked.configure(state=NORMAL) # sked.configure(state=NORMAL)
graph2.configure(bg='#66FFFF') graph2.configure(bg='#66FFFF')
itol=4 itol=4
inctol() inctol()
@ -1087,7 +1082,7 @@ def plot_yellow():
def update(): def update():
global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen, \ global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen, \
im,pim,cmap0,isync,isync_save,idsec,first,itol,txsnrdb,tx6alt,\ im,pim,cmap0,isync,isync_save,idsec,first,itol,txsnrdb,tx6alt,\
bm_geom,nfile bm_geom
utc=time.gmtime(time.time()+0.1*idsec) utc=time.gmtime(time.time()+0.1*idsec)
isec=utc[5] isec=utc[5]
@ -1175,7 +1170,12 @@ def update():
msg3.configure(text=t,fg='black',bg='gray85') msg3.configure(text=t,fg='black',bg='gray85')
bdecode.configure(bg='gray85',activebackground='gray95') bdecode.configure(bg='gray85',activebackground='gray95')
if Audio.gcom2.ndecoding: #Set button bg=light_blue while decoding if Audio.gcom2.ndecoding: #Set button bg=light_blue while decoding
bdecode.configure(bg='#66FFFF',activebackground='#66FFFF') bc='#66FFFF'
if g.ndecphase==1: bc='orange'
if g.ndecphase==2: bc='yellow'
bdecode.configure(bg=bc,activebackground=bc)
else:
g.ndecphase=0
tx1.configure(bg='white') tx1.configure(bg='white')
tx2.configure(bg='white') tx2.configure(bg='white')
@ -1201,7 +1201,7 @@ def update():
if Audio.gcom1.transmitting: if Audio.gcom1.transmitting:
nmsg=int(Audio.gcom2.nmsg) nmsg=int(Audio.gcom2.nmsg)
t=g.ftnstr(Audio.gcom2.sending) t=g.ftnstr(Audio.gcom2.sending)
if t[:3]=="CQ ": nsked.set(0) # if t[:3]=="CQ ": nsked.set(0)
t="Txing: "+t[:nmsg] t="Txing: "+t[:nmsg]
bgcolor='yellow' bgcolor='yellow'
if Audio.gcom2.sendingsh==1: bgcolor='#66FFFF' #Shorthand (lt blue) if Audio.gcom2.sendingsh==1: bgcolor='#66FFFF' #Shorthand (lt blue)
@ -1234,6 +1234,7 @@ def update():
for i in range(len(lines)): for i in range(len(lines)):
text.insert(END,lines[i]) text.insert(END,lines[i])
text.see(END) text.see(END)
g.ndecphase=1
# text.configure(state=DISABLED) # text.configure(state=DISABLED)
try: try:
@ -1267,9 +1268,6 @@ def update():
bmtext.insert(END,lines[i]) bmtext.insert(END,lines[i])
bmtext.see(END) bmtext.see(END)
Audio.gcom2.ndecdone=0 Audio.gcom2.ndecdone=0
nfile=nfile+1
if(nfile<11):
decode()
if g.cmap != cmap0: if g.cmap != cmap0:
im.putpalette(g.palette) im.putpalette(g.palette)
@ -1311,7 +1309,7 @@ def update():
Audio.gcom2.dftolerance=ntol[itol] Audio.gcom2.dftolerance=ntol[itol]
Audio.gcom2.neme=neme.get() Audio.gcom2.neme=neme.get()
Audio.gcom2.ndepth=ndepth.get() Audio.gcom2.ndepth=ndepth.get()
Audio.gcom2.nsked=nsked.get() # Audio.gcom2.nsked=nsked.get()
try: try:
Audio.gcom2.idinterval=options.IDinterval.get() Audio.gcom2.idinterval=options.IDinterval.get()
except: except:
@ -1486,14 +1484,11 @@ lab1=Label(iframe2a, text='Time (s)')
lab1.place(x=250, y=6, anchor=CENTER) lab1.place(x=250, y=6, anchor=CENTER)
lab3=Label(iframe2a, text=' ') lab3=Label(iframe2a, text=' ')
lab3.place(x=400,y=6, anchor=CENTER) lab3.place(x=400,y=6, anchor=CENTER)
lab4=Label(iframe2a, text='1 2 3')
lab4.place(x=593,y=6, anchor=CENTER)
iframe2a.pack(expand=1, fill=X, padx=1) iframe2a.pack(expand=1, fill=X, padx=1)
iframe2 = Frame(frame, bd=1, relief=FLAT,height=15) iframe2 = Frame(frame, bd=1, relief=FLAT,height=15)
lab2=Label(iframe2, text='FileID Sync dB DT DF W') #lab2=Label(iframe2, text=' UTC dB DT DF W')
lab2=Label(iframe2, text='Freq DF Pol UTC dB DT W')
lab2.place(x=3,y=6, anchor='w') lab2.place(x=3,y=6, anchor='w')
lab5=Label(iframe2, text='Freq (kHz)')
lab5.place(x=580,y=6, anchor=CENTER)
lab6=Label(iframe2a,text='0.0',bg='green') lab6=Label(iframe2a,text='0.0',bg='green')
lab6.place(x=40,y=6, anchor=CENTER) lab6.place(x=40,y=6, anchor=CENTER)
lab7=Label(iframe2a,text='F3',fg='gray85') lab7=Label(iframe2a,text='F3',fg='gray85')
@ -1681,7 +1676,7 @@ f5b.pack(side=LEFT,expand=1,fill=BOTH)
f5c=Frame(iframe5,bd=2,relief=GROOVE) f5c=Frame(iframe5,bd=2,relief=GROOVE)
txfirst=Checkbutton(f5c,text='Tx First',justify=RIGHT,variable=TxFirst) txfirst=Checkbutton(f5c,text='Tx First',justify=RIGHT,variable=TxFirst)
f5c2=Frame(f5c,bd=0) f5c2=Frame(f5c,bd=0)
sked=Checkbutton(f5c,text='Sked',justify=RIGHT,variable=nsked) #sked=Checkbutton(f5c,text='Sked',justify=RIGHT,variable=nsked)
genmsg=Button(f5c,text='GenStdMsgs',underline=0,command=GenStdMsgs, genmsg=Button(f5c,text='GenStdMsgs',underline=0,command=GenStdMsgs,
padx=1,pady=1) padx=1,pady=1)
auto=Button(f5c,text='Auto is Off',underline=0,command=toggleauto, auto=Button(f5c,text='Auto is Off',underline=0,command=toggleauto,
@ -1690,7 +1685,7 @@ auto.focus_set()
txfirst.grid(column=0,row=0,sticky='W',padx=4) txfirst.grid(column=0,row=0,sticky='W',padx=4)
f5c2.grid(column=0,row=1,sticky='W',padx=4) f5c2.grid(column=0,row=1,sticky='W',padx=4)
sked.grid(column=0,row=3,sticky='W',padx=4) #sked.grid(column=0,row=3,sticky='W',padx=4)
genmsg.grid(column=0,row=4,sticky='W',padx=4) genmsg.grid(column=0,row=4,sticky='W',padx=4)
auto.grid(column=0,row=5,sticky='EW',padx=4) auto.grid(column=0,row=5,sticky='EW',padx=4)
@ -1762,7 +1757,6 @@ isync=1
ntx.set(1) ntx.set(1)
ndepth.set(1) ndepth.set(1)
import options import options
options.defaults()
ModeJT65B() ModeJT65B()
lookup() lookup()
balloon.unbind(ToRadio) balloon.unbind(ToRadio)
@ -1825,16 +1819,6 @@ try:
Audio.gcom2.nport=0 Audio.gcom2.nport=0
Audio.gcom2.pttport=(options.PttPort.get()+' ')[:12] Audio.gcom2.pttport=(options.PttPort.get()+' ')[:12]
elif key == 'Mileskm': options.mileskm.set(value) elif key == 'Mileskm': options.mileskm.set(value)
elif key == 'MsgStyle': options.ireport.set(value)
elif key == 'Region': options.iregion.set(value)
elif key == 'AudioIn':
try:
g.ndevin.set(value)
except:
g.ndevin.set(0)
g.DevinName.set(value)
options.DevinName.set(value)
Audio.gcom1.devin_name=(options.DevinName.get()+' ')[:12]
elif key == 'AudioOut': elif key == 'AudioOut':
try: try:
g.ndevout.set(value) g.ndevout.set(value)
@ -1843,7 +1827,6 @@ try:
g.DevoutName.set(value) g.DevoutName.set(value)
options.DevoutName.set(value) options.DevoutName.set(value)
Audio.gcom1.devout_name=(options.DevoutName.get()+' ')[:12] Audio.gcom1.devout_name=(options.DevoutName.get()+' ')[:12]
elif key == 'SamFacIn': options.samfacin.set(value)
elif key == 'SamFacOut': options.samfacout.set(value) elif key == 'SamFacOut': options.samfacout.set(value)
elif key == 'Template1': options.Template1.set(value.replace("_"," ")) elif key == 'Template1': options.Template1.set(value.replace("_"," "))
elif key == 'Template2': options.Template2.set(value.replace("_"," ")) elif key == 'Template2': options.Template2.set(value.replace("_"," "))
@ -1867,7 +1850,7 @@ try:
elif key == 'Zap': nzap.set(value) elif key == 'Zap': nzap.set(value)
elif key == 'NB': nblank.set(value) elif key == 'NB': nblank.set(value)
elif key == 'NAFC': nafc.set(value) elif key == 'NAFC': nafc.set(value)
elif key == 'Sked': nsked.set(value) # elif key == 'Sked': nsked.set(value)
elif key == 'NoSh441': nosh441.set(value) elif key == 'NoSh441': nosh441.set(value)
elif key == 'NoShJT65': noshjt65.set(value) elif key == 'NoShJT65': noshjt65.set(value)
elif key == 'NEME': neme.set(value) elif key == 'NEME': neme.set(value)
@ -1924,11 +1907,7 @@ f.write("HisGrid " + t + "\n")
f.write("IDinterval " + str(options.IDinterval.get()) + "\n") f.write("IDinterval " + str(options.IDinterval.get()) + "\n")
f.write("PttPort " + str(options.PttPort.get()) + "\n") f.write("PttPort " + str(options.PttPort.get()) + "\n")
f.write("Mileskm " + str(options.mileskm.get()) + "\n") f.write("Mileskm " + str(options.mileskm.get()) + "\n")
f.write("MsgStyle " + str(options.ireport.get()) + "\n")
f.write("Region " + str(options.iregion.get()) + "\n")
f.write("AudioIn " + options.DevinName.get() + "\n")
f.write("AudioOut " + options.DevoutName.get() + "\n") f.write("AudioOut " + options.DevoutName.get() + "\n")
f.write("SamFacIn " + str(options.samfacin.get()) + "\n")
f.write("SamFacOut " + str(options.samfacout.get()) + "\n") f.write("SamFacOut " + str(options.samfacout.get()) + "\n")
if options.Template6.get()=="": options.Template6.set("_") if options.Template6.get()=="": options.Template6.set("_")
f.write("Template1 " + options.Template1.get().replace(" ","_") + "\n") f.write("Template1 " + options.Template1.get().replace(" ","_") + "\n")
@ -1954,7 +1933,7 @@ f.write("Clip " + str(iclip) + "\n")
f.write("Zap " + str(nzap.get()) + "\n") f.write("Zap " + str(nzap.get()) + "\n")
f.write("NB " + str(nblank.get()) + "\n") f.write("NB " + str(nblank.get()) + "\n")
f.write("NAFC " + str(nafc.get()) + "\n") f.write("NAFC " + str(nafc.get()) + "\n")
f.write("Sked " + str(nsked.get()) + "\n") #f.write("Sked " + str(nsked.get()) + "\n")
f.write("NoSh441 " + str(nosh441.get()) + "\n") f.write("NoSh441 " + str(nosh441.get()) + "\n")
f.write("NoShJT65 " + str(noshjt65.get()) + "\n") f.write("NoShJT65 " + str(noshjt65.get()) + "\n")
f.write("NEME " + str(neme.get()) + "\n") f.write("NEME " + str(neme.get()) + "\n")

View File

@ -2,9 +2,7 @@ subroutine map65a
! Processes timf2 data from Linrad to find and decode JT65 signals. ! Processes timf2 data from Linrad to find and decode JT65 signals.
parameter (NSMAX=60*96000) !Samples per 60 s file
parameter (MAXMSG=1000) !Size of decoded message list parameter (MAXMSG=1000) !Size of decoded message list
integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2
parameter (NFFT=32768) !Half symbol = 17833 samples; parameter (NFFT=32768) !Half symbol = 17833 samples;
real savg(4,NFFT) real savg(4,NFFT)
real tavg(-50:50) !Temp for finding local base level real tavg(-50:50) !Temp for finding local base level
@ -15,31 +13,24 @@ subroutine map65a
real a(5) real a(5)
character*22 msg(MAXMSG) character*22 msg(MAXMSG)
character*3 shmsg0(4),shmsg character*3 shmsg0(4),shmsg
character arg*12,infile*11,outfile*11
integer indx(MAXMSG),nsiz(MAXMSG) integer indx(MAXMSG),nsiz(MAXMSG)
logical done(MAXMSG) logical done(MAXMSG)
integer rfile3 character decoded*22,blank*22
character decoded*22,blank*22,cbad*1 parameter (NSMAX=60*96000) !Samples per 60 s file
integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2
common/datcom/nutc,newdat2,id
common/spcom/ip0,ss(4,322,NFFT) !169 MB: half-symbol spectra common/spcom/ip0,ss(4,322,NFFT) !169 MB: half-symbol spectra
data blank/' '/ data blank/' '/
data shmsg0/'ATT','RO ','RRR','73 '/ data shmsg0/'ATT','RO ','RRR','73 '/
data nfile/0/ data nfile/0/,nutc0/-999/
save save
include 'gcom2.f90' include 'gcom2.f90'
rewind 11 rewind 11
rewind 12 rewind 12
1 nfile=nfile+1 if(nutc.ne.nutc0) nfile=nfile+1
nutc=0744+nfile nutc0=nutc
if(nutc.eq.0747) go to 1
if(nutc.eq.0749) go to 1
if(nutc.eq.0751) go to 1
if(nutc.eq.0753) go to 1
infile='061111.0745'
write(infile(8:11),1001) nutc
1001 format(i4.4)
! read(infile(8:11),*) nutc
tskip=0. tskip=0.
! fselect=126.0 + 1.6 + 0.290 ! fselect=126.0 + 1.6 + 0.290
@ -66,9 +57,6 @@ subroutine map65a
kk=0 kk=0
nkk=1 nkk=1
n=8*NSMAX
call rfile3a(infile,id,n,ierr)
newdat=1
nz=n/8 nz=n/8
if(fselect.gt.0.0) then if(fselect.gt.0.0) then
@ -76,18 +64,23 @@ subroutine map65a
nfilt=2 !nfilt=2 is faster for selected freq nfilt=2 !nfilt=2 is faster for selected freq
freq=fselect freq=fselect
dt=2.314240 !Not needed? dt=2.314240 !Not needed?
call decode1a(id,newdat,nfilt,freq,nflip,ip0,sync2, & call decode1a(id,newdat2,nfilt,freq,nflip,ip0,sync2, &
a,dt,pol,nkv,nhist,qual,decoded) a,dt,pol,nkv,nhist,qual,decoded)
nsync1=0 nsync1=0
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
ndf=nint(a(1)) ndf=nint(a(1))
nw=0 nw=0
! Insert 'OOO' if flip<0. ! Insert 'OOO' if flip<0.
write(11,1010) nutc,nsync1,nsync2,dt,ndf,nw,decoded, & ! write(11,1010) nutc,nsync2,dt,ndf,nw,decoded,nkv,nqual
nkv,nqual !1010 format(i4.4,i4,f5.1,i5,i3,2x,a22,2i3)
1010 format(i4.4,i3,i4,f5.1,i5,i3,2x,a22,2i3) nkHz=nint(freq-1.600)
npol=45*(ipol-1)
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)
ndecdone=1 ndecdone=1
endif endif
if(newdat2.eq.0) go to 999
nfilt=1 nfilt=1
do i=1,NFFT do i=1,NFFT
@ -190,7 +183,7 @@ subroutine map65a
if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then
nflip=nint(flipk) nflip=nint(flipk)
call decode1a(id,newdat,nfilt,freq,nflip,ipol, & call decode1a(id,newdat2,nfilt,freq,nflip,ipol, &
sync2,a,dt,pol,nkv,nhist,qual,decoded) sync2,a,dt,pol,nkv,nhist,qual,decoded)
! i9=index(decoded,'AA1YN') ! i9=index(decoded,'AA1YN')
! if(i9.gt.0) print*,i,i9,fselect,freq,decoded ! if(i9.gt.0) print*,i,i9,fselect,freq,decoded
@ -244,6 +237,7 @@ subroutine map65a
endif endif
enddo enddo
i=ilatest i=ilatest
if(i.ge.1) then if(i.ge.1) then
if(.not.done(i)) then if(.not.done(i)) then
done(i)=.true. done(i)=.true.
@ -279,16 +273,6 @@ subroutine map65a
ndf2=nint(a(3)) ndf2=nint(a(3))
nsync1=sync1 nsync1=sync1
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
cbad=' '
! if(abs(f0-144.103).lt.0.001) then
! write(11,1010) nutc,nsync1,nsync2,dt,ndf,decoded,
! + nkv,nqual
! endif
! write(19,1012) f0,ndf,npol,nutc,decoded
!1012 format(f7.3,i5,i4,i5.4,2x,a22)
write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, & write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
nsync2,nutc,decoded,nkv,nqual,nhist nsync2,nutc,decoded,nkv,nqual,nhist
1014 format(f7.3,i5,3i3,f5.1,i5,i3,i4,i5.4,2x,a22,3i3) 1014 format(f7.3,i5,3i3,f5.1,i5,i3,i4,i5.4,2x,a22,3i3)
@ -297,7 +281,8 @@ subroutine map65a
endif endif
j=j+nsiz(n) j=j+nsiz(n)
enddo enddo
call display(nutc) call display
ndecdone=2
return
999 return
end subroutine map65a end subroutine map65a

View File

@ -42,63 +42,6 @@ addpfx=StringVar()
auxra=StringVar() auxra=StringVar()
auxdec=StringVar() auxdec=StringVar()
def defaults():
# if g.mode=="FSK441" or g.mode=="JT6M":
if (ireport.get()==0 and iregion.get()==0):
tx1.delete(0,END)
tx1.insert(0,'%T %M')
tx2.delete(0,END)
tx2.insert(0,'%T %R %M %R%R')
tx3.delete(0,END)
tx3.insert(0,'R%R')
tx4.delete(0,END)
tx4.insert(0,'RRR')
tx5.delete(0,END)
tx5.insert(0,'73')
tx6.delete(0,END)
tx6.insert(0,'CQ %M')
elif (ireport.get()==1 and iregion.get()==0):
tx1.delete(0,END)
tx1.insert(0,'%T %M')
tx2.delete(0,END)
tx2.insert(0,'%T %M %G')
tx3.delete(0,END)
tx3.insert(0,'RR %G')
tx4.delete(0,END)
tx4.insert(0,'RRR')
tx5.delete(0,END)
tx5.insert(0,'73')
tx6.delete(0,END)
tx6.insert(0,'CQ %M')
elif (ireport.get()==0 and iregion.get()==1):
tx1.delete(0,END)
tx1.insert(0,'%T %M')
tx2.delete(0,END)
tx2.insert(0,'%T %M %R %R')
tx3.delete(0,END)
tx3.insert(0,'%T %M R%R R%R')
tx4.delete(0,END)
tx4.insert(0,'RRRR RRRR %M')
tx5.delete(0,END)
tx5.insert(0,'73 %M')
tx6.delete(0,END)
tx6.insert(0,'CQ %M')
elif (ireport.get()==1 and iregion.get()==1):
tx1.delete(0,END)
tx1.insert(0,'%T %M')
tx2.delete(0,END)
tx2.insert(0,'%T %M %G')
tx3.delete(0,END)
tx3.insert(0,'%T %M RR %G')
tx4.delete(0,END)
tx4.insert(0,'RRRR RRRR %M')
tx5.delete(0,END)
tx5.insert(0,'73 %M')
tx6.delete(0,END)
tx6.insert(0,'CQ %M')
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)
mygrid=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Grid Locator:', mygrid=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Grid Locator:',
@ -111,17 +54,13 @@ idinterval=Pmw.EntryField(g1.interior(),labelpos=W,label_text='ID Interval (m):'
value=10,entry_textvariable=IDinterval,entry_width=12) value=10,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)
audioin=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio In:',
value='0',entry_textvariable=DevinName,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:',
value='0',entry_textvariable=DevoutName,entry_width=12) value='0',entry_textvariable=DevoutName,entry_width=12)
ratein=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate In:',
value=1.0000,entry_textvariable=samfacin,entry_width=12)
rateout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate Out:', rateout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate Out:',
value=1.0000,entry_textvariable=samfacout,entry_width=12) value=1.0000,entry_textvariable=samfacout,entry_width=12)
#widgets = (mycall, mygrid, rxdelay,txdelay,idinterval,comport,audioin,audioout) #widgets = (mycall, mygrid, rxdelay,txdelay,idinterval,comport,audioin,audioout)
widgets = (mycall, mygrid,idinterval,comport,audioin,audioout,ratein,rateout) widgets = (mycall, mygrid,idinterval,comport,audioout,rateout)
for widget in widgets: for widget in widgets:
widget.pack(fill=X,expand=1,padx=10,pady=2) widget.pack(fill=X,expand=1,padx=10,pady=2)
@ -136,45 +75,6 @@ rb5.pack(anchor=W,side=LEFT,padx=2,pady=2)
rb6.pack(anchor=W,side=LEFT,padx=2,pady=2) rb6.pack(anchor=W,side=LEFT,padx=2,pady=2)
f1.pack() f1.pack()
g2=Pmw.Group(root,tag_text="FSK441/JT6M message templates")
f2=Frame(g2.interior(),width=100,height=20)
f2a=Frame(f2,width=50,height=20,bd=2,relief=GROOVE)
f2a.pack(side=LEFT,padx=6,pady=6)
f2b=Frame(f2,width=50,height=20,bd=2,relief=GROOVE)
f2b.pack(side=LEFT,padx=6,pady=6)
ireport=IntVar()
rb1=Radiobutton(f2a,text='Report',value=0,variable=ireport)
rb2=Radiobutton(f2a,text='Grid',value=1,variable=ireport)
rb1.pack(anchor=W,side=LEFT,padx=2,pady=2)
rb2.pack(anchor=W,side=LEFT,padx=2,pady=2)
iregion=IntVar()
rb3=Radiobutton(f2b,text='NA',value=0,variable=iregion)
rb4=Radiobutton(f2b,text='EU',value=1,variable=iregion)
rb3.pack(anchor=W,side=LEFT,padx=2,pady=2)
rb4.pack(anchor=W,side=LEFT,padx=2,pady=2)
f2.pack()
Button(g2.interior(),text="Reset defaults",command=defaults).pack(padx=6,pady=6)
tx1=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 1:',
entry_textvariable=Template1)
tx2=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 2:',
entry_textvariable=Template2)
tx3=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 3:',
entry_textvariable=Template3)
tx4=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 4:',
entry_textvariable=Template4)
tx5=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 5:',
entry_textvariable=Template5)
tx6=Pmw.EntryField(g2.interior(),labelpos=W,label_text='Tx 6:',
entry_textvariable=Template6)
messages=(tx1,tx2,tx3,tx4,tx5,tx6)
for m in messages:
m.pack(fill=X,expand=1,padx=10,pady=2)
#g3=Pmw.Group(root) #g3=Pmw.Group(root)
g3=Pmw.Group(root,tag_text="Miscellaneous") g3=Pmw.Group(root,tag_text="Miscellaneous")
temp_prefix=Pmw.EntryField(g3.interior(),labelpos=W,label_text='DXCC prefix:', temp_prefix=Pmw.EntryField(g3.interior(),labelpos=W,label_text='DXCC prefix:',
@ -189,6 +89,5 @@ for widget in widgets:
Pmw.alignlabels(widgets) Pmw.alignlabels(widgets)
g1.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6) g1.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6)
g2.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6)
g3.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6) g3.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6)

View File

@ -1,7 +1,7 @@
!----------------------------------------------------- rfile3a !----------------------------------------------------- rfile3a
subroutine rfile3a(infile,ibuf,n,ierr) subroutine rfile3a(infile,ibuf,n,ierr)
character*11 infile character*(*) infile
integer*1 ibuf(n) integer*1 ibuf(n)
open(10,file=infile,form='binary',status='old',err=998) open(10,file=infile,form='binary',status='old',err=998)

View File

@ -138,32 +138,18 @@ def df_mark():
if g.mode[4:5]=='C': fstep=4*fstep if g.mode[4:5]=='C': fstep=4*fstep
# Mark sync tone and top JT65 tone (green) and shorthand tones (red) # Mark sync tone and top JT65 tone (green) and shorthand tones (red)
if(frange==2000): dx=288.7 + (1500-fmid)/df
dx=288.7 + (1500-fmid)/df color='green'
color='green' x1=(Audio.gcom2.mousedf + 6.6*fstep)/df + dx
x1=(Audio.gcom2.mousedf + 6.6*fstep)/df + dx c.create_line(x1-0.5,25,x1-0.5,12,fill=color)
c.create_line(x1-0.5,25,x1-0.5,12,fill=color) c.create_line(x1+0.5,25,x1+0.5,12,fill=color)
c.create_line(x1+0.5,25,x1+0.5,12,fill=color) for i in range(5):
for i in range(5): x1=(Audio.gcom2.mousedf + i*fstep)/df + dx
x1=(Audio.gcom2.mousedf + i*fstep)/df + dx j=12
j=12 if i>0: j=15
if i>0: j=15 if i!=1: c.create_line(x1-0.5,25,x1-0.5,j,fill=color)
if i!=1: c.create_line(x1-0.5,25,x1-0.5,j,fill=color) if i!=1: c.create_line(x1+0.5,25,x1+0.5,j,fill=color)
if i!=1: c.create_line(x1+0.5,25,x1+0.5,j,fill=color) color='red'
color='red'
if(frange==4000):
dx=375 + (1270.5-fmid)/(2*df)
color='green'
x1=(Audio.gcom2.mousedf + 6.6*fstep)/(2*df) + dx
c.create_line(x1-0.5,25,x1-0.5,12,fill=color)
c.create_line(x1+0.5,25,x1+0.5,12,fill=color)
for i in range(5):
x1=(Audio.gcom2.mousedf + i*fstep)/(2*df) + dx
j=12
if i>0: j=15
if i!=1: c.create_line(x1-0.5,25,x1-0.5,j,fill=color)
if i!=1: c.create_line(x1+0.5,25,x1+0.5,j,fill=color)
color='red'
#---------------------------------------------------- change_fmid #---------------------------------------------------- change_fmid
def change_fmid1(): def change_fmid1():
@ -296,7 +282,7 @@ def update():
#For some reason, top two lines are invisible, so we move down 2 #For some reason, top two lines are invisible, so we move down 2
graph1.create_image(0,0+2,anchor='nw',image=pim) graph1.create_image(0,0+2,anchor='nw',image=pim)
graph2.create_image(0,0+2,anchor='nw',image=pim2) graph2.create_image(0,0+2,anchor='nw',image=pim2)
g.ndecphase=2
newMinute=0 newMinute=0
Audio.gcom2.newspec=0 Audio.gcom2.newspec=0
@ -357,20 +343,6 @@ def draw_axis():
c.create_text(x,y,text=str(ix)) c.create_text(x,y,text=str(ix))
c.create_line(i,25,i,j,fill='black') c.create_line(i,25,i,j,fill='black')
dx=288.7 + (1500-fmid)/df
dff=df
if frange==4000:
dx=375 + (1270.5-fmid)/(2*df)
dff=2*df
if Audio.gcom2.nfreeze==0:
x1=(Audio.gcom2.mousedf-600)/dff + dx
x2=(Audio.gcom2.mousedf+600)/dff + dx
else:
tol=Audio.gcom2.dftolerance
x1=(Audio.gcom2.mousedf-tol)/dff + dx
x2=(Audio.gcom2.mousedf+tol)/dff + dx
c.create_line(x1,25,x2,25,fill='green',width=2)
c2.delete(ALL) c2.delete(ALL)
xmid2=0 xmid2=0
bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz
@ -391,6 +363,12 @@ def draw_axis():
c2.create_text(x,y,text=str(ix)) c2.create_text(x,y,text=str(ix))
c2.create_line(i,25,i,j,fill='black') c2.create_line(i,25,i,j,fill='black')
tol=Audio.gcom2.dftolerance
x1=(Audio.gcom2.mousedf-tol)/xdf2 + 0.5*NX
x2=(Audio.gcom2.mousedf+tol)/xdf2 + 0.5*NX
c2.create_line(x1,25,x2,25,fill='green',width=2)
#-------------------------------------------------------- Create GUI widgets #-------------------------------------------------------- Create GUI widgets
#-------------------------------------------------------- Menu bar #-------------------------------------------------------- Menu bar