Cleaned up menus.

Removed unused GUI controls.
Removed unused code and routines.
Added "Measure" and "Pulsar" to Save menu.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@416 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-06-25 20:18:43 +00:00
parent 80cfd49a0b
commit 66dfb5d331
9 changed files with 37 additions and 648 deletions

View File

@ -18,7 +18,7 @@ SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \
decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \
runqqq.f90 fivehz.f90 flushqqq.f90 map65a0.f90 \
rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.F90 \
getfile.f90 getfile2.f90 recvpkt.f90
getfile.f90 getfile2.f90 recvpkt.f90 savetf2.f90
SRCS2F77 = indexx.f gen65.f chkmsg.f \
gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \

View File

@ -1,102 +0,0 @@
!---------------------------------------------------- decode2
subroutine decode2
! Get data and parameters from gcom, then call the decoders
character fnamex*24
include 'gcom1.f90'
include 'gcom2.f90'
include 'gcom3.f90'
include 'gcom4.f90'
! ndecoding data Action
!--------------------------------------
! 0 Idle
! 1 d2a Standard decode, full file
! 2 y1 Mouse pick, top half
! 3 y1 Mouse pick, bottom half
! 4 d2c Decode recorded file
! 5 d2a Mouse pick, main window
lenpick=22050 !Length of FSK441 mouse-picked region
if(mode(1:4).eq.'JT6M') then
lenpick=4*11025
if(mousebutton.eq.3) lenpick=10*11025
endif
istart=1.0 + 11025*0.001*npingtime - lenpick/2
if(mode(1:4).eq.'JT6M') istart=istart+11025
if(istart.lt.2) istart=2
if(ndecoding.eq.1) then
! Normal decoding at end of Rx period (or at t=53s in JT65)
istart=1
call decode3(d2a,jza,istart,fnamea)
else if(ndecoding.eq.2) then
! Mouse pick, top half of waterfall
! The following is empirical:
k=2048*ibuf0 + istart - 11025*mod(tbuf(ibuf0),dble(trperiod)) -3850
if(k.le.0) k=k+NRxMax
if(k.gt.NrxMax) k=k-NRxMax
nt=ntime/86400
nt=86400*nt + tbuf(ibuf0)
if(receiving.eq.0) nt=nt-trperiod
call get_fname(hiscall,nt,trperiod,lauto,fnamex)
do i=1,lenpick
k=k+1
if(k.gt.NrxMax) k=k-NRxMax
d2b(i)=dgain*y1(k)
enddo
call decode3(d2b,lenpick,istart,fnamex)
else if(ndecoding.eq.3) then
!Mouse pick, bottom half of waterfall
ib0=ibuf0-161
if(lauto.eq.1 .and. mute.eq.0 .and. transmitting.eq.1) ib0=ibuf0-323
if(ib0.lt.1) ib0=ib0+1024
k=2048*ib0 + istart - 11025*mod(tbuf(ib0),dble(trperiod)) - 3850
if(k.le.0) k=k+NRxMax
if(k.gt.NrxMax) k=k-NRxMax
nt=ntime/86400
nt=86400*nt + tbuf(ib0)
call get_fname(hiscall,nt,trperiod,lauto,fnamex)
do i=1,lenpick
k=k+1
if(k.gt.NrxMax) k=k-NRxMax
d2b(i)=dgain*y1(k)
enddo
call decode3(d2b,lenpick,istart,fnamex)
!Recorded file
else if(ndecoding.eq.4) then
jzz=jzc
if(mousebutton.eq.0) istart=1
if(mousebutton.gt.0) then
jzz=lenpick
! This is a major kludge:
if(mode(1:4).eq.'JT6M') then
jzz=4*11025
if(mousebutton.eq.3) jzz=10*11025
else
istart=istart + 3300 - jzz/2
endif
if(istart.lt.2) istart=2
if(istart+jzz.gt.jzc) istart=jzc-jzz
endif
call decode3(d2c(istart),jzz,istart,filename)
else if(ndecoding.eq.5) then
! Mouse pick, main window (but not from recorded file)
istart=istart - 1512
if(istart.lt.2) istart=2
if(istart+lenpick.gt.jza) istart=jza-lenpick
call decode3(d2a(istart),lenpick,istart,fnamea)
endif
fnameb=fnamea
return
end subroutine decode2

View File

@ -1,83 +0,0 @@
!---------------------------------------------------- decode3
subroutine decode3(d2,jz,istart,filename)
#ifdef Win32
use dfport
#endif
integer*2 d2(jz),d2d(65*11025)
character*24 filename
character FileID*40
include 'gcom1.f90'
include 'gcom2.f90'
if(ichar(filename(1:1)).eq.0) go to 999
FileID=filename
decodedfile=filename
lumsg=11
nqrn=nclip+5
nmode=1
if(mode(1:4).eq.'JT65') then
nmode=2
if(mode(5:5).eq.'A') mode65=1
if(mode(5:5).eq.'B') mode65=2
if(mode(5:5).eq.'C') mode65=4
endif
if(mode.eq.'Echo') nmode=3
if(mode.eq.'JT6M') nmode=4
sum=0.
do i=1,jz
sum=sum+d2(i)
enddo
nave=nint(sum/jz)
do i=1,jz
d2(i)=d2(i)-nave
d2d(i)=d2(i)
enddo
nseg=1
if(mode(1:4).eq.'JT65') then
i=index(FileID,'.')-3
if(FileID(i:i).eq.'1'.or.FileID(i:i).eq.'3'.or.FileID(i:i).eq.'5' &
.or.FileID(i:i).eq.'7'.or.FileID(i:i).eq.'9') nseg=2
endif
open(23,file=appdir(:lenappdir)//'/CALL3.TXT',status='unknown')
if(nadd5.eq.1) then
nzero=5*11025
do i=jz,nzero+1,-1
d2d(i)=d2d(i-nzero)
enddo
do i=1,nzero
d2d(i)=0
enddo
jz=min(60*11025,jz+nzero)
endif
! call wsjt1(d2d,jz,istart,samfacin,FileID,ndepth,MinSigdB, &
! NQRN,DFTolerance,MouseButton,NClearAve, &
! nMode,NFreeze,NAFC,NZap,mode65,idf, &
! MyCall,HisCall,HisGrid,neme,nsked,ntx2,s2, &
! ps0,npkept,lumsg,basevb,rmspower,nslim2,psavg,ccf,Nseg, &
! MouseDF,NAgain,LDecoded,nspecial,ndf,ss1,ss2)
basevb=-999.
close(23)
if(basevb.le.-98.0) go to 999
! See whether this file should be saved or erased from disk
if(nsave.eq.1 .and. ldecoded) filetokilla=''
if(nsave.eq.3 .or. (nsave.eq.2 .and. lauto.eq.1)) then
filetokilla=''
filetokillb=''
endif
if(nsavelast.eq.1) filetokillb=''
nsavelast=0
ierr=unlink(filetokillb)
nclearave=0
nagain=0
call pix2d65(d2d,jz)
999 return
end subroutine decode3

View File

@ -14,6 +14,9 @@
! 21 ALL65.TXT
! 22 kvasd.dat
! 23 CALL3.TXT
! 24 meas24.dat
! 25 meas25.dat
! 26 tmp26.tmp
!------------------------------------------------ ftn_init
subroutine ftn_init
@ -108,10 +111,17 @@ subroutine ftn_init
#endif
#ifdef Win32
open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', &
open(24,file=appdir(:iz)//'/meas24.txt',status='unknown', &
share='denynone')
#else
open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown')
open(24,file=appdir(:iz)//'/meas24.txt',status='unknown')
#endif
#ifdef Win32
open(25,file=appdir(:iz)//'/meas25.txt',status='unknown', &
share='denynone')
#else
open(25,file=appdir(:iz)//'/meas25.txt',status='unknown')
#endif
#ifdef Win32

View File

@ -29,7 +29,6 @@ logical LDecoded !Was a message decoded? Decoder
logical rxdone !Has the Rx sequence finished? SoundIn,Decoder
integer monitoring !Are we monitoring? GUI
integer nzap !Is Zap checked? GUI
integer nsavecum !(why is this here?)
integer minsigdb !Decoder threshold setting GUI
integer nclearave !Set to 1 to clear JT65 avg GUI,Decoder
integer nfreeze !Is Freeze checked? GUI
@ -50,7 +49,6 @@ integer nsked !Sked mode for deep search? GUI
integer naggressive !Is "Aggressive decoding" checked? GUI
integer ntx2 !Is "No shorthands if Tx1" checked? GUI
integer nagain !Decode same file again? GUI
integer nsavelast !Save last file? GUI
integer shok !Shorthand messages OK? GUI
integer sendingsh !Sending a shorthand message? SoundIn
integer*2 d2a !Rx data, extracted from y1 Decoder
@ -94,9 +92,9 @@ common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), &
green(500),fselect,pctlost,rxnoise,ngreen,dgain,iter,ndecoding, &
ndecoding0,mousebutton, &
ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, &
dftolerance,LDecoded,rxdone,monitoring,nzap,nsavecum,minsigdb, &
nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,nblank,nport, &
mousedf,mousefqso,neme,nsked,naggressive,ntx2,nagain,nsavelast, &
dftolerance,LDecoded,rxdone,monitoring,nzap,minsigdb, &
nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,nblank, &
nport,mousedf,mousefqso,neme,nsked,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), &

248
map65.py
View File

@ -73,14 +73,13 @@ ncall=0
ndmiles=0
ndkm=0
ndebug=IntVar()
ndebug.set(0)
neme=IntVar()
nfreeze=IntVar()
nopen=0
nosh441=IntVar()
noshjt65=IntVar()
#nsked=IntVar()
setseq=IntVar()
slabel="Sync "
textheight=7
tx6alt=""
txsnrdb=99.
@ -515,20 +514,15 @@ def cleartext():
#------------------------------------------------------ ModeJT65
def ModeJT65():
global slabel,isync,textheight,itol
global isync,textheight,itol
cleartext()
Audio.gcom1.trperiod=60
iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4)
textheight=7
text.configure(height=textheight)
slabel="Sync "
lsync.configure(text=slabel+str(isync))
bclravg.configure(state=NORMAL)
binclude.configure(state=NORMAL)
bexclude.configure(state=NORMAL)
cbfreeze.configure(state=NORMAL)
cbafc.configure(state=NORMAL)
# sked.configure(state=NORMAL)
graph2.configure(bg='#66FFFF')
itol=4
inctol()
@ -722,36 +716,6 @@ def azdist():
else:
labDist.configure(text=str(int(1.609344*ndmiles))+" km")
#------------------------------------------------------ incsync
def incsync(event):
global isync
if isync<10:
isync=isync+1
lsync.configure(text=slabel+str(isync))
#------------------------------------------------------ decsync
def decsync(event):
global isync
if isync>-30:
isync=isync-1
lsync.configure(text=slabel+str(isync))
#------------------------------------------------------ incclip
def incclip(event):
global iclip
if iclip<5:
iclip=iclip+1
if iclip==5: iclip=99
lclip.configure(text='Clip '+str(iclip))
#------------------------------------------------------ decclip
def decclip(event):
global iclip
if iclip>-5:
iclip=iclip-1
if iclip==98: iclip=4
lclip.configure(text='Clip '+str(iclip))
#------------------------------------------------------ inctol
def inctol(event=NONE):
global itol
@ -804,16 +768,6 @@ def clear_avg(event=NONE):
f.close()
Audio.gcom2.nclearave=1
#------------------------------------------------------ defaults
def defaults():
global slabel,isync,iclip,itol,idsec
isync=1
iclip=0
lclip.configure(text='Clip '+str(iclip))
itol=5
ltol.configure(text='Tol '+str(ntol[itol]))
lsync.configure(text=slabel+str(isync))
#------------------------------------------------------ delwav
def delwav():
t="Are you sure you want to delete\nall *.WAV files in the RxWav directory?"
@ -882,8 +836,8 @@ def double_click_g1(event):
g.freeze_decode=1
#------------------------------------------------------ mouse_up_g1
#(### What is this for? ###)
def mouse_up_g1(event):
# This is a fix for certain mouse-clicks
pass
#------------------------------------------------------ right_arrow
@ -952,154 +906,6 @@ def GenAltMsgs(event=NONE):
tx6.insert(0,tx6alt.upper())
altmsg=1
#------------------------------------------------------ plot_large
def plot_large():
"Plot the green, red, and blue curves in JT65 mode."
graph1.delete(ALL)
y=[]
ngreen=Audio.gcom2.ngreen
if ngreen>0:
for i in range(ngreen): #Find ymax for green curve
green=Audio.gcom2.green[i]
y.append(green)
ymax=max(y)
if ymax<1: ymax=1
yfac=4.0
if ymax>75.0/yfac: yfac=75.0/ymax
xy=[]
for i in range(ngreen): #Make xy list for green curve
green=Audio.gcom2.green[i]
n=int(105.0-yfac*green)
xy.append(i)
xy.append(n)
graph1.create_line(xy,fill="green")
if Audio.gcom2.nspecial==0:
y=[]
for i in range(446): #Find ymax for red curve
psavg=Audio.gcom2.psavg[i+1]
y.append(psavg)
ymax=max(y)
yfac=30.0
if ymax>85.0/yfac: yfac=85.0/ymax
xy=[]
fac=500.0/446.0
for i in range(446): #Make xy list for red curve
x=i*fac
psavg=Audio.gcom2.psavg[i+1]
n=int(90.0-yfac*psavg)
xy.append(x)
xy.append(n)
graph1.create_line(xy,fill="red")
else:
y1=[]
y2=[]
for i in range(446): #Find ymax for magenta/orange curves
ss1=Audio.gcom2.ss1[i+1]
y1.append(ss1)
ss2=Audio.gcom2.ss2[i+1]
y2.append(ss2)
ymax=max(y1+y2)
yfac=30.0
if ymax>85.0/yfac: yfac=85.0/ymax
xy1=[]
xy2=[]
fac=500.0/446.0
for i in range(446): #Make xy list for magenta/orange curves
x=i*fac
ss1=Audio.gcom2.ss1[i+1]
n=int(90.0-yfac*ss1)
xy1.append(x)
xy1.append(n)
ss2=Audio.gcom2.ss2[i+1]
n=int(90.0-yfac*ss2) - 20
xy2.append(x)
xy2.append(n)
graph1.create_line(xy1,fill="magenta")
graph1.create_line(xy2,fill="orange")
x1 = 250.0 + fac*Audio.gcom2.ndf/2.6916504
x2 = x1 + Audio.gcom2.mode65*Audio.gcom2.nspecial*10*fac
graph1.create_line([x1,85,x1,95],fill="yellow")
graph1.create_line([x2,85,x2,95],fill="yellow")
t="RO"
if Audio.gcom2.nspecial==3: t="RRR"
if Audio.gcom2.nspecial==4: t="73"
graph1.create_text(x2+3,93,anchor=W,text=t,fill="yellow")
if Audio.gcom2.ccf[0] != -9999.0:
y=[]
for i in range(65): #Find ymax for blue curve
ccf=Audio.gcom2.ccf[i]
y.append(ccf)
ymax=max(y)
yfac=40.0
if ymax>55.0/yfac: yfac=55.0/ymax
xy2=[]
fac=500.0/64.6
for i in range(65): #Make xy list for blue curve
x=(i+0.5)*fac
ccf=Audio.gcom2.ccf[i]
n=int(60.0-yfac*ccf)
xy2.append(x)
xy2.append(n)
graph1.create_line(xy2,fill='#33FFFF')
# Put in the tick marks
for i in range(13):
x=int(i*41.667)
j2=115
if i==1 or i==6 or i==11: j2=110
graph1.create_line([x,j2,x,125],fill="red")
if Audio.gcom2.nspecial==0:
# x=int((i-0.8)*41.667)
j1=9
if i==2 or i==7 or i==12: j1=14
graph1.create_line([x,0,x,j1],fill="#33FFFF") #light blue
else:
graph1.create_line([x,0,x,125-j2],fill="red")
#------------------------------------------------------ plot_small
def plot_small():
graph2.delete(ALL)
xy=[]
xy2=[]
df=11025.0/256.0
fac=150.0/3500.0
for i in range(81):
x=int(i*df*fac)
xy.append(x)
psavg=Audio.gcom2.psavg[i]
n=int(150.0-2*psavg)
xy.append(n)
graph2.create_line(xy,fill="magenta")
for i in range(7):
x=i*500*fac
ytop=110
if i%2: ytop=115
graph2.create_line([x,120,x,ytop],fill="white")
#------------------------------------------------------ plot_yellow
def plot_yellow():
nz=int(Audio.gcom2.ps0[215])
if nz>10:
y=[]
for i in range(nz): #Find ymax for yellow curve
n=Audio.gcom2.ps0[i]
y.append(n)
ymax=max(y)
fac=1.0
if ymax>60: fac=60.0/ymax
xy2=[]
for i in range(nz):
x=int(2.34*i)
y=fac*Audio.gcom2.ps0[i] + 8
n=int(85.0-y)
xy2.append(x)
xy2.append(n)
graph1.create_line(xy2,fill="yellow")
#------------------------------------------------------ update
def update():
global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen, \
@ -1227,7 +1033,6 @@ def update():
if Audio.gcom1.transmitting:
nmsg=int(Audio.gcom2.nmsg)
t=g.ftnstr(Audio.gcom2.sending)
# if t[:3]=="CQ ": nsked.set(0)
t="Txing: "+t[:nmsg]
bgcolor='yellow'
if Audio.gcom2.sendingsh==1: bgcolor='#66FFFF' #Shorthand (lt blue)
@ -1334,8 +1139,6 @@ def update():
im.putpalette(g.palette)
cmap0=g.cmap
# plot_large()
# Save some parameters
g.mode=mode.get()
Audio.gcom1.txfirst=TxFirst.get()
@ -1347,8 +1150,6 @@ def update():
Audio.gcom1.samfacout=options.samfacout.get()
except:
Audio.gcom1.samfacout=1.0
# if Audio.gcom1.samfacin>1.01: Audio.gcom1.samfacin=1.01
# ... etc.
Audio.gcom2.mycall=(options.MyCall.get()+' ')[:12]
Audio.gcom2.hiscall=(ToRadio.get()+' ')[:12]
Audio.gcom2.hisgrid=(HisGrid.get()+' ')[:6]
@ -1368,7 +1169,6 @@ def update():
Audio.gcom2.dftolerance=ntol[itol]
Audio.gcom2.neme=neme.get()
Audio.gcom2.ndepth=ndepth.get()
# Audio.gcom2.nsked=nsked.get()
try:
Audio.gcom2.idinterval=options.IDinterval.get()
except:
@ -1382,14 +1182,9 @@ def update():
Audio.gcom2.nport=int(options.PttPort.get())
except:
Audio.gcom2.nport=0
# print 'About to init Audio.gcom2.PttPort in save some parameters'
Audio.gcom2.pttport=(options.PttPort.get() + ' ')[:12]
# print Audio.gcom2.pttport
if altmsg: tx6alt=tx6.get()
# Queue up the next update
ldate.after(100,update)
ldate.after(100,update) # Queue up the next update
#------------------------------------------------------ Top level frame
frame = Frame(root)
@ -1431,8 +1226,6 @@ setupmenu.add_checkbutton(label = 'F4 sets Tx6',variable=kb8rq)
setupmenu.add_checkbutton(label = 'Double-click on callsign sets TxFirst',
variable=setseq)
setupmenu.add_checkbutton(label = 'GenStdMsgs sets Tx1',variable=k2txb)
setupmenu.add_separator()
setupmenu.add_checkbutton(label = 'Enable diagnostics',variable=ndebug)
#------------------------------------------------------ View menu
viewbutton=Menubutton(mbar,text='View')
@ -1458,11 +1251,11 @@ modebutton['menu'] = modemenu
# state=modemenu.entrycget(0,"state")
modemenu.add_radiobutton(label = 'JT65A', variable=mode, command = ModeJT65A, \
accelerator='F8')
state=DISABLED, accelerator='F8')
modemenu.add_radiobutton(label = 'JT65B', variable=mode, command = ModeJT65B, \
accelerator='Shift+F8')
modemenu.add_radiobutton(label = 'JT65C', variable=mode, command = ModeJT65C, \
accelerator='Ctrl+F8')
state=DISABLED, accelerator='Ctrl+F8')
#------------------------------------------------------ Decode menu
decodebutton = Menubutton(mbar, text = 'Decode')
@ -1488,9 +1281,9 @@ savemenu = Menu(savebutton, tearoff=1)
savebutton['menu'] = savemenu
nsave=IntVar()
savemenu.add_radiobutton(label = 'None', variable=nsave,value=0)
savemenu.add_radiobutton(label = 'Save decoded', variable=nsave,value=1)
savemenu.add_radiobutton(label = 'Save if Auto On', variable=nsave,value=2)
savemenu.add_radiobutton(label = 'Save all', variable=nsave,value=3)
savemenu.add_radiobutton(label = 'Save timf2', variable=nsave,value=1)
savemenu.add_radiobutton(label = 'Measure', variable=nsave,value=2)
savemenu.add_radiobutton(label = 'Pulsar', variable=nsave,value=3)
nsave.set(0)
#------------------------------------------------------ Band menu
@ -1701,29 +1494,11 @@ f5a.pack(side=LEFT,expand=1,fill=BOTH)
#------------------------------------------------------ Receiving parameters
f5b=Frame(iframe5,bd=2,relief=GROOVE)
lsync=Label(f5b, bg='white', fg='black', text='Sync 1', width=8, relief=RIDGE)
lsync.grid(column=0,row=0,padx=2,pady=1,sticky='EW')
Widget.bind(lsync,'<Button-1>',incsync)
Widget.bind(lsync,'<Button-3>',decsync)
nzap=IntVar()
cbzap=Checkbutton(f5b,text='Zap',underline=0,variable=nzap)
cbzap.grid(column=1,row=0,padx=2,pady=1,sticky='W')
cbnb=Checkbutton(f5b,text='NB',variable=nblank)
cbnb.grid(column=1,row=1,padx=2,pady=1,sticky='W')
cbfreeze=Checkbutton(f5b,text='Freeze',underline=0,variable=nfreeze)
cbfreeze.grid(column=1,row=2,padx=2,sticky='W')
cbafc=Checkbutton(f5b,text='AFC',variable=nafc)
cbafc.grid(column=1,row=3,padx=2,pady=1,sticky='W')
lclip=Label(f5b, bg='white', fg='black', text='Clip 0', width=8, relief=RIDGE)
lclip.grid(column=0,row=1,padx=2,sticky='EW')
Widget.bind(lclip,'<Button-1>',incclip)
Widget.bind(lclip,'<Button-3>',decclip)
ltol=Label(f5b, bg='white', fg='black', text='Tol 400', width=8, relief=RIDGE)
ltol.grid(column=0,row=2,padx=2,pady=1,sticky='EW')
Widget.bind(ltol,'<Button-1>',inctol)
Widget.bind(ltol,'<Button-3>',dectol)
Button(f5b,text='Defaults',command=defaults,padx=1,pady=1).grid(column=0,
row=3,sticky='EW')
ldsec=Label(f5b, bg='white', fg='black', text='Dsec 0.0', width=8, relief=RIDGE)
ldsec.grid(column=0,row=4,ipadx=3,padx=2,pady=5,sticky='EW')
Widget.bind(ldsec,'<Button-1>',incdsec)
@ -1735,7 +1510,6 @@ f5b.pack(side=LEFT,expand=1,fill=BOTH)
f5c=Frame(iframe5,bd=2,relief=GROOVE)
txfirst=Checkbutton(f5c,text='Tx First',justify=RIGHT,variable=TxFirst)
f5c2=Frame(f5c,bd=0)
#sked=Checkbutton(f5c,text='Sked',justify=RIGHT,variable=nsked)
genmsg=Button(f5c,text='GenStdMsgs',underline=0,command=GenStdMsgs,
padx=1,pady=1)
auto=Button(f5c,text='Auto is Off',underline=0,command=toggleauto,
@ -1923,8 +1697,6 @@ except:
print key,value
g.mode=mode.get()
lsync.configure(text=slabel+str(isync))
lclip.configure(text='Clip '+str(iclip))
Audio.gcom2.appdir=(appdir+' ')[:80]
Audio.gcom2.ndepth=ndepth.get()
f=open(appdir+'/tmp26.txt','w')
@ -1988,13 +1760,11 @@ f.write("Clip " + str(iclip) + "\n")
f.write("Zap " + str(nzap.get()) + "\n")
f.write("NB " + str(nblank.get()) + "\n")
f.write("NAFC " + str(nafc.get()) + "\n")
#f.write("Sked " + str(nsked.get()) + "\n")
f.write("NoSh441 " + str(nosh441.get()) + "\n")
f.write("NoShJT65 " + str(noshjt65.get()) + "\n")
f.write("NEME " + str(neme.get()) + "\n")
f.write("NDepth " + str(ndepth.get()) + "\n")
f.write("Debug " + str(ndebug.get()) + "\n")
#f.write("TRPeriod " + str(Audio.gcom1.trperiod) + "\n")
mrudir2=mrudir.replace(" ","#")
f.write("MRUDir " + mrudir2 + "\n")
if g.astro_geom[:7]=="200x200": g.astro_geom="316x373" + g.astro_geom[7:]

View File

@ -41,27 +41,9 @@ subroutine map65a
write(utcdata,1002) nutc
1002 format(i4.4)
utcdata=utcdata(1:2)//':'//utcdata(3:4)
fselect=mousefqso + 1.6
! fselect=126.0 + 1.6 + 0.290 ! K6MYC (NG??)
! nflip=-1
! ip0=1
! fselect=128.0 + 1.6 + 0.220 ! AA1YN (OK)
! nflip=1
! ip0=3
! fselect=155.0 + 1.6 + 0.454 ! N0AKC (OK)
! nflip=1
! ip0=2
! fselect=103 + 1.6 - 0.07
! nflip=-1 !May need to try both +/- 1
! ip0=4 !Try all four?
open(23,file='CALL3.TXT',status='old')
fselect=mousefqso + 1.6
df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz
fa=0.0
fb=60000.0
@ -321,6 +303,8 @@ subroutine map65a
call display
ndecdone=2
if(nsave.gt.0) call savetf2(id(1,1,kbuf),nsave,nutc)
999 newdat2=0
nagain=0
close(23)

View File

@ -1,133 +0,0 @@
!----------------------------------------------------------- savedata
subroutine savedata
#ifdef Win32
use dfport
#endif
character fname*24,longname*80
data ibuf0z/1/
include 'gcom1.f90'
include 'gcom2.f90'
include 'gcom3.f90'
save
if(mode(1:4).eq.'JT65') then
call get_fname(hiscall,ntime,trperiod,lauto,fname0)
ibuf1=ibuf0
ibuf2=ibuf
go to 1
else
call get_fname(hiscall,ntime-trperiod,trperiod,lauto,fname0)
endif
if(ibuf0.eq.ibuf0z) go to 999 !Startup condition, do not save
if(ntrbuf(ibuf0z).eq.1) go to 999 !We were transmitting, do not save
! Get buffer pointers, then copy completed Rx sequence from y1 to d2a:
ibuf1=ibuf0z
ibuf2=ibuf0-1
1 jza=2048*(ibuf2-ibuf1)
if(jza.lt.0) jza=jza+NRxMax
if(jza.lt.110250) go to 999 !Don't save files less than 10 s
if(jza.gt.60*11025) go to 999 !Don't save if something's fishy
k=2048*(ibuf1-1)
if(mode(1:4).ne.'JT65') k=k+3*2048
if(mode(1:4).ne.'JT65' .and. jza.gt.30*11025) then
k=k + (jza-30*11025)
if(k.gt.NRxMax) k=k-NRxMax
jza=30*11025
endif
! Check timestamps of buffers used for this data
msbig=0
i=k/2048
if(msmax.eq.0) i=i+1
nz=jza/2048
if(msmax.eq.0) then
i=i+1
nz=nz-1
endif
do n=1,nz
i=i+1
if(i.gt.1024) i=i-1024
i0=i-1
if(i0.lt.1) i0=i0+1024
dtt=tbuf(i)-tbuf(i0)
ms=0
if(dtt.gt.0.d0 .and. dtt.lt.80000.0) ms=1000.d0*dtt
msbig=max(ms,msbig)
enddo
if(ndebug.gt.0 .and. msbig.gt.msmax .and. msbig.gt.330) then
write(*,1020) msbig
1020 format('Warning: interrupt service interval',i11,' ms.')
endif
msmax=max(msbig,msmax)
do i=1,jza
k=k+1
if(k.gt.NRxMax) k=k-NRxMax
xx=dgain*y1(k)
xx=min(32767.0,max(-32767.0,xx))
d2a(i)=nint(xx)
enddo
fnamea=fname0
npingtime=0
fname=fnamea !Save filename for output to disk
nagain=0
ndecoding=1 !Request decoding
! Generate file name and write data to file
! if(nsave.ge.2 .and. ichar(fname(1:1)).ne.0) then
if(ichar(fname(1:1)).ne.0) then
! Generate header for wavefile:
ariff='RIFF'
awave='WAVE'
afmt='fmt '
adata='data'
lenfmt=16
nfmt2=1
nchan2=1
nsamrate=11025
nbytesam2=2
nbytesec=nchan2*nsamrate*nbytesam2
nbitsam2=16
ndata=2*jza
nbytes=ndata+44
nchunk=nbytes-8
do i=80,1,-1
if(appdir(i:i).ne.' ') go to 10
enddo
10 longname=AppDir(1:i)//'/RxWav/'//fname
#ifdef Win32
open(17,file=longname,status='unknown',form='binary',err=20)
write(17) ariff,nchunk,awave,afmt,lenfmt,nfmt2,nchan2,nsamrate, &
nbytesec,nbytesam2,nbitsam2,adata,ndata,(d2a(j),j=1,jza)
close(17)
#else
open(17,file=longname,status='unknown',form='unformatted', &
access='direct',recl=nbytes,err=20)
write(17,rec=1) ariff,nchunk,awave,afmt,lenfmt,nfmt2,nchan2,nsamrate, &
nbytesec,nbytesam2,nbitsam2,adata,ndata,(d2a(j),j=1,jza)
close(17)
#endif
filetokillb=filetokilla
filetokilla=longname
go to 30
20 print*,'Error opening Fortran unit 17.'
print*,longname
30 continue
endif
999 if(mode(1:4).ne.'JT65') then
ibuf0z=ibuf0
call get_fname(hiscall,ntime,trperiod,lauto,fname0)
endif
return
end subroutine savedata

View File

@ -142,7 +142,6 @@ def ftnstr(x):
#---------------------------------------------------- df_mark
def df_mark():
draw_axis()
# if nmark.get()==0 or Audio.gcom2.nfreeze:
# Mark QSO freq in top graph
color='green'
df=96.0/750.0
@ -176,30 +175,6 @@ def freq_range(event):
if fmid<1000*nfr.get(): fmid=1000*nfr.get()
if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get()
#def set_frange():
# nfr.set(3-nfr.get())
#---------------------------------------------------- freq_center
##def freq_center(event):
### Move clicked location to center of frequency scale
## global fmid,frange
## n=100*int(0.01*df*(event.x-375))
## fmid = fmid + n
## if fmid<1000: fmid=1000
## if fmid>1700: fmid=1700
#---------------------------------------------------- decode_request
##def decode_request(event):
## if g.mode[:4]!='JT65' and nspeed0.get()>5:
### If decoder is busy or we are not monitoring, ignore request
## if Audio.gcom2.ndecoding==0 and Audio.gcom2.monitoring:
## Audio.gcom2.mousebutton=event.num #Left=1, Right=3
## Audio.gcom2.npingtime=int(40*event.x) #Time (ms) of selected ping
## if event.y <= 150:
## Audio.gcom2.ndecoding=2 #Mouse pick, top half
## else:
## Audio.gcom2.ndecoding=3 #Mouse pick, bottom half
#---------------------------------------------------- freeze_decode
def freeze_decode(event):
# If decoder is busy or we are not monitoring, ignore request
@ -318,7 +293,6 @@ def update():
if(fmid<>fmid0 or frange<>frange0):
if fmid<1000*nfr.get(): fmid=1000*nfr.get()
if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get()
# draw_axis()
df_mark()
fmid0=fmid
frange0=frange
@ -367,12 +341,6 @@ def draw_axis():
c2.create_text(x,y,text=str(ix))
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
#-------------------------------------------------------- Menu bar
@ -382,34 +350,23 @@ frame.pack()
mbar = Frame(frame)
mbar.pack(fill=X)
#--------------------------------------------------------- Options menu
setupbutton = Menubutton(mbar, text = 'Options', )
#--------------------------------------------------------- Palette menu
setupbutton = Menubutton(mbar, text = 'Palette', )
setupbutton.pack(side = LEFT)
setupmenu = Menu(setupbutton, tearoff=1)
setupmenu = Menu(setupbutton,tearoff=0)
setupbutton['menu'] = setupmenu
setupmenu.add_checkbutton(label='Flatten spectra',variable=nflat)
setupmenu.add_checkbutton(label='Mark JT65 tones only if Freeze is checked',
variable=nmark)
setupmenu.add_separator()
setupmenu.add_radiobutton(label='Frequency axis',command=df_mark,
value=0,variable=naxis)
setupmenu.add_radiobutton(label='JT65 DF axis',command=df_mark,
value=1,variable=naxis)
setupmenu.add_separator()
setupmenu.palettes=Menu(setupmenu,tearoff=0)
setupmenu.palettes.add_radiobutton(label='Gray0',command=pal_gray0,
setupmenu.add_radiobutton(label='Gray0',command=pal_gray0,
value=0,variable=npal)
setupmenu.palettes.add_radiobutton(label='Gray1',command=pal_gray1,
setupmenu.add_radiobutton(label='Gray1',command=pal_gray1,
value=1,variable=npal)
setupmenu.palettes.add_radiobutton(label='Linrad',command=pal_linrad,
setupmenu.add_radiobutton(label='Linrad',command=pal_linrad,
value=2,variable=npal)
setupmenu.palettes.add_radiobutton(label='Blue',command=pal_blue,
setupmenu.add_radiobutton(label='Blue',command=pal_blue,
value=3,variable=npal)
setupmenu.palettes.add_radiobutton(label='Hot',command=pal_Hot,
setupmenu.add_radiobutton(label='Hot',command=pal_Hot,
value=4,variable=npal)
setupmenu.palettes.add_radiobutton(label='AFMHot',command=pal_AFMHot,
setupmenu.add_radiobutton(label='AFMHot',command=pal_AFMHot,
value=5,variable=npal)
setupmenu.add_cascade(label = 'Palette',menu=setupmenu.palettes)
lab1=Label(mbar,padx=20,bd=0)
lab1.pack(side=LEFT)
@ -420,17 +377,9 @@ fdf2.pack(side=LEFT)
lab3=Label(mbar,padx=13,bd=0)
lab3.pack(side=LEFT)
#bbw=Button(mbar,text='BW',command=set_frange,padx=1,pady=1)
#bbw.pack(side=LEFT)
lab0=Label(mbar,padx=10,bd=0)
lab0.pack(side=LEFT)
#bfmid1=Button(mbar,text='<',command=change_fmid1,padx=1,pady=1)
#bfmid2=Button(mbar,text='>',command=change_fmid2,padx=1,pady=1)
#bfmid3=Button(mbar,text='|',command=set_fmid,padx=3,pady=1)
#bfmid1.pack(side=LEFT)
#bfmid3.pack(side=LEFT)
#bfmid2.pack(side=LEFT)
#------------------------------------------------- Speed selection buttons
for i in (5, 4, 3, 2, 1):
@ -446,13 +395,10 @@ c.pack(side=TOP)
Widget.bind(c,"<Shift-Button-1>",freq_range)
Widget.bind(c,"<Shift-Button-2>",freq_range)
Widget.bind(c,"<Shift-Button-3>",freq_range)
#Widget.bind(c,"<Control-Button-1>",freq_center)
graph1=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair')
graph1.pack(side=TOP)
Widget.bind(graph1,"<Motion>",fdf_change)
#Widget.bind(graph1,"<Button-1>",decode_request)
#Widget.bind(graph1,"<Button-3>",decode_request)
Widget.bind(graph1,"<Button-1>",set_fqso)
Widget.bind(graph1,"<Double-Button-1>",freeze_decode)
iframe1.pack(expand=1, fill=X)
@ -462,7 +408,6 @@ c2.pack(side=TOP)
Widget.bind(c2,"<Shift-Button-1>",freq_range)
Widget.bind(c2,"<Shift-Button-2>",freq_range)
Widget.bind(c2,"<Shift-Button-3>",freq_range)
#Widget.bind(c2,"<Control-Button-1>",freq_center)
graph2=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair')
graph2.pack(side=TOP)