mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 14:18:38 -05:00
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:
parent
162d6499b6
commit
b654ed38b9
12
decode1.F90
12
decode1.F90
@ -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
|
||||||
|
@ -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
|
||||||
|
84
getfile.F90
84
getfile.F90
@ -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
|
||||||
|
67
map65.py
67
map65.py
@ -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")
|
||||||
|
59
map65a.f90
59
map65a.f90
@ -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
|
||||||
|
103
options.py
103
options.py
@ -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)
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
60
specjt.py
60
specjt.py
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user