mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 14:18:38 -05:00
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:
parent
51fa6435bc
commit
370f113b8a
@ -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
|
||||
|
19
gcom2.f90
19
gcom2.f90
@ -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/
|
||||
|
18
map65.py
18
map65.py
@ -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)
|
||||
|
18
map65a.f90
18
map65a.f90
@ -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
|
||||
|
77
specjt.py
77
specjt.py
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user