Tick marks on waterfall displays.

Display percent of deopped packets.
Save all decodes to ALL65.txt.
Shift F12/F11 to inrecment/decrement fqso.
Save even/odd ip00 separately.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@414 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-06-24 23:26:17 +00:00
parent 51fa6435bc
commit 370f113b8a
6 changed files with 78 additions and 64 deletions

View File

@ -11,7 +11,7 @@
! 18 test file to be transmitted (wsjtgen.f90)
! 19 bandmap.txt
! 20 bandmap2.txt
! 21 ALL.TXT
! 21 ALL65.TXT
! 22 kvasd.dat
! 23 CALL3.TXT
@ -88,10 +88,10 @@ subroutine ftn_init
endfile 20
#ifdef Win32
open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown', &
open(21,file=appdir(:iz)//'/ALL65.TXT',status='unknown', &
access='append',share='denynone',err=950)
#else
open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown', &
open(21,file=appdir(:iz)//'/ALL65.TXT',status='unknown', &
access='append',err=950)
do i=1,9999999
read(21,*,end=10) cjunk
@ -135,7 +135,7 @@ subroutine ftn_init
stop
940 print*,'Error opening DEBUG.TXT'
stop
950 print*,'Error opening ALL.TXT'
950 print*,'Error opening ALL65.TXT'
stop
end subroutine ftn_init

View File

@ -6,6 +6,7 @@ real s2 !2d spectrum for horizontal waterfall GUI
real ccf !CCF in time (blue curve) Decoder
real green !Data for green line GUI
real fselect !Specified QSO frequency GUI
real pctlost !Percent of lost packets Decoder
real rxnoise !Rx noise in dB recvpkt
integer ngreen !Length of green GUI
real dgain !Digital audio gain setting GUI
@ -89,18 +90,18 @@ character*80 filetokillb
character*12 pttport
character*8 utcdata !HHMM UTC for the processed data Decoder
common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), &
green(500),fselect,rxnoise,ngreen,dgain,iter,ndecoding, &
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, &
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, &
shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, &
idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow, &
ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), &
mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, &
fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate,pttport, &
mousedf,mousefqso,neme,nsked,naggressive,ntx2,nagain,nsavelast, &
shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, &
idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow,&
ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), &
mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, &
fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate,pttport, &
utcdata
!### volatile /gcom2/

View File

@ -879,6 +879,14 @@ def left_arrow(event=NONE):
if n<0: n=n-5
if n==Audio.gcom2.mousedf: n=n-5
Audio.gcom2.mousedf=n
#------------------------------------------------------ inc_fqso
def inc_fqso(event=NONE):
Audio.gcom2.mousefqso=Audio.gcom2.mousefqso + 1
#------------------------------------------------------ dec_fqso
def dec_fqso(event=NONE):
Audio.gcom2.mousefqso=Audio.gcom2.mousefqso - 1
#------------------------------------------------------ GenStdMsgs
def GenStdMsgs(event=NONE):
@ -1086,8 +1094,10 @@ def update():
t=time.strftime('%Y %b %d\n%H:%M:%S',utc)
Audio.gcom2.utcdate=t[:12]
ldate.configure(text=t)
t="Rx noise: %.1f" % Audio.gcom2.rxnoise
t="Rx noise: %.1f dB" % Audio.gcom2.rxnoise
msg5.configure(text=t)
t="Drop: %.1f %%" % Audio.gcom2.pctlost
msg6.configure(text=t)
root_geom=root.geometry()
try:
bm_geom=bm.geometry()
@ -1363,7 +1373,7 @@ filemenu.add_separator()
filemenu.add('command', label = 'Delete all *.WAV files in RxWav', \
command = delwav)
filemenu.add_separator()
filemenu.add('command', label = 'Erase ALL.TXT', command = del_all)
filemenu.add('command', label = 'Erase ALL65.TXT', command = del_all)
filemenu.add_separator()
filemenu.add('command', label = 'Exit', command = quit)
@ -1528,7 +1538,9 @@ root.bind_all('<Control-F8>', ModeJT65C)
root.bind_all('<F10>', showspecjt)
root.bind_all('<Shift-F10>', astro1)
root.bind_all('<F11>',left_arrow)
root.bind_all('<Shift-F11>',dec_fqso)
root.bind_all('<F12>',right_arrow)
root.bind_all('<Shift-F12>',inc_fqso)
root.bind_all('<Alt-Key-1>',btx1)
root.bind_all('<Alt-Key-2>',btx2)
root.bind_all('<Alt-Key-3>',btx3)
@ -1754,6 +1766,8 @@ msg4=Message(iframe6, text="", width=300,relief=SUNKEN)
msg4.pack(side=LEFT, fill=X, padx=1)
msg5=Message(iframe6, text="", width=300,relief=SUNKEN)
msg5.pack(side=LEFT, fill=X, padx=1)
msg6=Message(iframe6, text="", width=300,relief=SUNKEN)
msg6.pack(side=LEFT, fill=X, padx=1)
msg7=Message(iframe6, text=' ', width=300,relief=SUNKEN)
msg7.pack(side=RIGHT, fill=X, padx=1)
iframe6.pack(expand=1, fill=X, padx=4)

View File

@ -15,17 +15,20 @@ subroutine map65a
character*3 shmsg0(4),shmsg
integer indx(MAXMSG),nsiz(MAXMSG)
logical done(MAXMSG)
logical even
character decoded*22,blank*22
include 'datcom.f90'
common/spcom/ip0,ss(4,322,NFFT),ss5(322,NFFT)
data blank/' '/
data shmsg0/'ATT','RO ','RRR','73 '/
data nfile/0/,nutc0/-999/,nid/0/,ip00/1/
data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/
include 'gcom2.f90'
save
if(nlost.ne.0) write(*,1001) nutc,nlost
1001 format('UTC:',i5.4,' Lost packets:',i6)
pctlost=nlost/331.03
if(nlost.ne.0) write(*,1001) nutc,nlost,pctlost
1001 format('UTC:',i5.4,' Lost packets:',i6,', or',f6.1,' %')
even=mod(nutc,2).eq.0
if(newdat2.eq.0) newdat2=1 !###
if(newdat2.gt.0) nid=1
@ -75,7 +78,8 @@ subroutine map65a
nfilt=2 !nfilt=2 is faster for selected freq
do kpol=0,3
freq=fselect + 0.001*mousedf
ip0=ip00+kpol
if(even) ip0=ip000+kpol
if(.not.even) ip0=ip001+kpol
if(ip0.gt.4) ip0=ip0-4
dt00=2.314240
dt=dt00
@ -91,7 +95,9 @@ subroutine map65a
if(nkv.gt.0) go to 5
enddo
5 ip00=ip0
5 if(even) ip000=ip0
if(.not.even) ip001=ip0
nkHz=nint(freq-1.600)
npol=nint(57.2957795*pol)
nqual=qual
@ -304,6 +310,8 @@ subroutine map65a
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
nsync2,nutc,decoded,nkv,nqual,nhist
write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
nsync2,nutc,decoded,nkv,nqual,nhist
1014 format(f7.3,i5,3i3,f5.1,i5,i3,i4,i5.4,2x,a22,3i3)
endif

View File

@ -43,6 +43,7 @@ frange0=2000
isec0=-99
mode0=""
mousedf0=0
mousefqso0=0
naxis=IntVar()
ncall=0
newMinute=0
@ -123,11 +124,13 @@ def fdf_change2(event):
def set_fqso(event):
n=int(g.Freq + 0.5)
Audio.gcom2.mousefqso=n
df_mark()
#---------------------------------------------------- set_freezedf
def set_freezedf(event):
n=int(g.DFreq + 0.5)
Audio.gcom2.mousedf=n
df_mark()
#------------------------------------------------------ ftnstr
def ftnstr(x):
@ -139,40 +142,27 @@ def ftnstr(x):
#---------------------------------------------------- df_mark
def df_mark():
draw_axis()
if nmark.get()==0 or Audio.gcom2.nfreeze:
fstep=10.0*11025.0/4096.0
if g.mode[4:5]=='B': fstep=2*fstep
if g.mode[4:5]=='C': fstep=4*fstep
# if nmark.get()==0 or Audio.gcom2.nfreeze:
# Mark QSO freq in top graph
color='green'
df=96.0/750.0
x1=393.0 + (Audio.gcom2.mousefqso-125)/df
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)
df=96000.0/32768.0
# Mark sync tone and top JT65 tone (green) and shorthand tones (red)
dx=288.7 + (1500-fmid)/df
color='green'
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)
for i in range(5):
x1=(Audio.gcom2.mousedf + i*fstep)/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
##def change_fmid1():
## global fmid
## fmid=fmid+100
## if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get()
##
##def change_fmid2():
## global fmid
## fmid=fmid-100
## if fmid<1000*nfr.get(): fmid=1000*nfr.get()
##
##def set_fmid():
## global fmid
## if nfr.get()==1: fmid=1200
## if nfr.get()==2: fmid=2200
fstep=20.0*11025.0/4096.0
x1=375.0 + (Audio.gcom2.mousedf + 6.6*fstep)/df
c2.create_line(x1-0.5,25,x1-0.5,12,fill=color)
c2.create_line(x1+0.5,25,x1+0.5,12,fill=color)
for i in range(5):
x1=375.0 + (Audio.gcom2.mousedf + i*fstep)/df
j=12
if i>0: j=15
if i!=1: c2.create_line(x1-0.5,25,x1-0.5,j,fill=color)
if i!=1: c2.create_line(x1+0.5,25,x1+0.5,j,fill=color)
color='red'
#---------------------------------------------------- freq_range
def freq_range(event):
@ -221,7 +211,7 @@ def freeze_decode(event):
def update():
global a,a2,b0,c0,g0,im,im2,isec0,line0,line02,newMinute,\
nscroll,pim,pim2, \
root_geom,t0,mousedf0,nfreeze0,tol0,mode0,nmark0, \
root_geom,t0,mousedf0,mousefqso0,nfreeze0,tol0,mode0,nmark0, \
fmid,fmid0,frange,frange0
utc=time.gmtime(time.time()+0.1*Audio.gcom1.ndsec)
@ -299,13 +289,14 @@ def update():
newMinute=0
Audio.gcom2.newspec=0
if (Audio.gcom2.mousedf != mousedf0 or Audio.gcom2.dftolerance != tol0):
if (Audio.gcom2.mousedf != mousedf0 or
Audio.gcom2.mousefqso != mousefqso0):
df_mark()
# The following int() calls are to ensure that the values copied to
# mousedf0 and tol0 are static.
# mousedf0 and mousefqso0 are static.
mousedf0=int(Audio.gcom2.mousedf)
tol0=int(Audio.gcom2.dftolerance)
mousefqso0=int(Audio.gcom2.mousefqso)
if Audio.gcom2.nfreeze != nfreeze0:
if not Audio.gcom2.nfreeze: draw_axis()
@ -376,10 +367,10 @@ 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)
# 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
@ -476,8 +467,6 @@ Widget.bind(c2,"<Shift-Button-3>",freq_range)
graph2=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair')
graph2.pack(side=TOP)
Widget.bind(graph2,"<Motion>",fdf_change2)
#Widget.bind(graph2,"<Button-1>",decode_request)
#Widget.bind(graph2,"<Button-3>",decode_request)
Widget.bind(graph2,"<Button-1>",set_freezedf)
Widget.bind(graph2,"<Double-Button-1>",freeze_decode)
iframe1.pack(expand=1, fill=X)
@ -553,7 +542,9 @@ if g.cmap == "AFMHot":
npal.set(5)
#---------------------------------------------- Display GUI and start mainloop
draw_axis()
#draw_axis()
df_mark()
try:
ndevin=g.ndevin.get()
except:

View File

@ -13,7 +13,7 @@ C Compute spectra at four polarizations, using half-symbol steps.
! fac=1.e-4
! fac=1.7e-4
fac=0.0002 * 10.0**(0.1*(-rxnoise))
fac=0.0002 * 10.0**(0.05*(-rxnoise))
hsym=2048.d0*96000.d0/11025.d0 !Samples per half symbol
npts=hsym !Integral samples per half symbol