Changed specjt to allow selected BW for upper waterfall.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@490 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-07-10 21:07:19 +00:00
parent 0807ab8cd5
commit c309bf79f7
2 changed files with 73 additions and 61 deletions

View File

@ -56,14 +56,14 @@ subroutine spec(brightness,contrast,ngain,nspeed,a,a2)
gamma=1.3 + 0.01*contrast gamma=1.3 + 0.01*contrast
offset=(brightness+64.0)/2 offset=(brightness+64.0)/2
fac=20.0/nadd fac=20.0/nadd
foffset=0.001*(1270+nfcal)
nbpp=(nfb-nfa)*NFFT/(96.0*NX) !Bins per pixel in wideband (upper) waterfall nbpp=(nfb-nfa)*NFFT/(96.0*NX) !Bins per pixel in wideband (upper) waterfall
fselect=mousefqso + 1.6 fselect=mousefqso + foffset
imid=nint(1000.0*(fselect-125.0+48.0)/df) imid=nint(1000.0*(fselect-125.0+48.0)/df)
fmid=0.5*(nfa+nfb) fmid=0.5*(nfa+nfb) + foffset
imid0=nint(1000.0*(fmid-125.0+48.0)/df) imid0=nint(1000.0*(fmid-125.0+48.0)/df) - nbpp/2 !Last term is empirical
i0=imid-374 i0=imid-375
ii0=imid-374*nbpp ii0=imid0-375*nbpp
if(nfullspec.eq.1) then if(nfullspec.eq.1) then
nbpp=NFFT/NX nbpp=NFFT/NX
ii0=0 ii0=0

122
specjt.py
View File

@ -35,6 +35,7 @@ b0=0
c0=0 c0=0
g0=0 g0=0
g.cmap="Linrad" g.cmap="Linrad"
bw=96.0
df=2.69165 df=2.69165
fmid=1500 fmid=1500
fmid0=1500 fmid0=1500
@ -110,16 +111,14 @@ def pal_AFMHot():
#---------------------------------------------------- fdf_change #---------------------------------------------------- fdf_change
# Readout of graphical cursor location # Readout of graphical cursor location
def fdf_change(event): def fdf_change(event):
global bw
bw=float(Audio.gcom2.nfb - Audio.gcom2.nfa) fmid=0.5*float(Audio.gcom2.nfb + Audio.gcom2.nfa)
fmid=130.0 if Audio.gcom2.nfullspec: fmid=125.0 - 2.2 #Empirical
if Audio.gcom2.nfullspec:
bw=96.0 #Total bw 96 kHz
fmid=125.0 - 2.2 #Empirical
df=bw/NX #kHz per pixel df=bw/NX #kHz per pixel
g.Freq=df*(event.x-375) + fmid g.Freq=df*(event.x-375) + fmid
n=int(g.Freq+0.5) n=int(g.Freq+0.5)
t="%d" % (n,) t="%d" % (n,)
t="%d " % event.x + t ### for tests only
if g.fc[n] != "": if g.fc[n] != "":
t=t + ": " + g.fc[n] t=t + ": " + g.fc[n]
fdf.configure(text=t) fdf.configure(text=t)
@ -149,14 +148,19 @@ def ftnstr(x):
#---------------------------------------------------- df_mark #---------------------------------------------------- df_mark
def df_mark(): def df_mark():
global bw
draw_axis() draw_axis()
# Mark QSO freq in top graph # Mark QSO freq in top graph
color='green' color='green'
df=96.0/750.0 fmid=0.5*float(Audio.gcom2.nfb + Audio.gcom2.nfa)
x1=393.0 + (Audio.gcom2.mousefqso-125)/df if Audio.gcom2.nfullspec: fmid=125.0 - 2.3 #Empirical
df=bw/NX #kHz per pixel
# print 'A ',Audio.gcom2.nfullspec,bw,df,fmid
# These 375's were 393:
x1=375.0 + (Audio.gcom2.mousefqso-fmid)/df
c.create_line(x1,25,x1,12,fill=color,width=2) c.create_line(x1,25,x1,12,fill=color,width=2)
x1=393.0 + (Audio.gcom2.nfa-125)/df x1=375.0 + (Audio.gcom2.nfa-fmid)/df
x2=393.0 + (Audio.gcom2.nfb-125)/df x2=375.0 + (Audio.gcom2.nfb-fmid)/df
c.create_line(x1,25,x2,25,fill=color,width=2) c.create_line(x1,25,x2,25,fill=color,width=2)
df=96000.0/32768.0 df=96000.0/32768.0
@ -174,6 +178,52 @@ def df_mark():
if i!=1: c2.create_line(x1,25,x1,j,fill=color,width=2) if i!=1: c2.create_line(x1,25,x1,j,fill=color,width=2)
color='red' color='red'
#-------------------------------------------------------- draw_axis
def draw_axis():
c.delete(ALL)
xdf=bw/NX #kHz per pixel
xmid=0.5*float(Audio.gcom2.nfb + Audio.gcom2.nfa)
if Audio.gcom2.nfullspec:
xmid=125.0 - 2.3 #Empirical
x1=int(xmid-0.6*bw) #Make it too wide, to be
x2=int(xmid+0.6*bw) #sure to get all the numbers
# print 'B ',Audio.gcom2.nfullspec,bw,xdf,xmid
ilab=10
if bw <= 60.0: ilab=5
if bw <= 30.0: ilab=2
for ix in range(x1,x2,1):
i=0.5*NX + (ix-xmid)/xdf
j=20
if (ix%5)==0: j=16
if (ix%ilab)==0 :
j=16
x=i-1
if ix<100: x=x+1
y=8
c.create_text(x,y,text=str(ix))
c.create_line(i,25,i,j,fill='black') #Draw the upper scale
c2.delete(ALL)
xmid2=0
bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz
x1=int(xmid-0.5*bw2)/100 - 1
x1=100*x1
x2=int(xmid+0.5*bw2)
xdf2=bw2/NX
for ix in range(x1,x2,20):
i=0.5*NX + (ix-xmid2)/xdf2
j=20
# if (ix%5)==0: j=16
if (ix%100)==0 :
j=16
x=i-1
if ix<1000: x=x+2
if ix<0: x=x-2
y=8
c2.create_text(x,y,text=str(ix))
c2.create_line(i,25,i,j,fill='black')
#---------------------------------------------------- freq_range #---------------------------------------------------- freq_range
def freq_range(event): def freq_range(event):
# Move frequency scale left or right in 100 Hz increments # Move frequency scale left or right in 100 Hz increments
@ -203,7 +253,7 @@ def freeze_decode2(event):
#---------------------------------------------------- update #---------------------------------------------------- update
def update(): def update():
global a,a2,b0,c0,g0,im,im2,isec0,line0,line02,newMinute,\ global a,a2,b0,c0,g0,im,im2,isec0,line0,line02,newMinute,\
nscroll,pim,pim2,nfa0,nfb0, \ nscroll,pim,pim2,nfa0,nfb0,bw, \
root_geom,t0,mousedf0,mousefqso0,nfreeze0,tol0,mode0,nmark0, \ root_geom,t0,mousedf0,mousefqso0,nfreeze0,tol0,mode0,nmark0, \
fmid,fmid0,frange,frange0,dftolerance0 fmid,fmid0,frange,frange0,dftolerance0
@ -219,6 +269,12 @@ def update():
if isec==0: nscroll=0 if isec==0: nscroll=0
if isec==59: newMinute=1 if isec==59: newMinute=1
nbpp=int((Audio.gcom2.nfb - Audio.gcom2.nfa)*32768/(96.0*NX))
bw=750.0*(96.0/32768.0)*nbpp
if Audio.gcom2.nfullspec:
nbpp=int(32768.0/NX)
bw=750.0*(96.0/32768.0)*nbpp
if g.showspecjt==1: if g.showspecjt==1:
showspecjt() showspecjt()
nspeed=nspeed0.get() #Waterfall update rate nspeed=nspeed0.get() #Waterfall update rate
@ -321,50 +377,6 @@ def update():
ltime.after(200,update) #Reset the timer ltime.after(200,update) #Reset the timer
#-------------------------------------------------------- draw_axis
def draw_axis():
c.delete(ALL)
bw=float(Audio.gcom2.nfb - Audio.gcom2.nfa)
xmid=130.0
if Audio.gcom2.nfullspec:
bw=96.0 #Total bw 96 kHz
xmid=125.0 - 2.3 #Empirical
xdf=bw/NX #kHz per pixel
x1=int(xmid-0.6*bw) #Make it too wide, to be
x2=int(xmid+0.6*bw) #sure to get all the numbers
# print Audio.gcom2.nfullspec,bw,xdf,x1,x2
for ix in range(x1,x2,1):
i=0.5*NX + (ix-xmid)/xdf
j=20
if (ix%5)==0: j=16
if (ix%10)==0 :
j=16
x=i-1
if ix<100: x=x+1
y=8
c.create_text(x,y,text=str(ix))
c.create_line(i,25,i,j,fill='black') #Draw the upper scale
c2.delete(ALL)
xmid2=0
bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz
x1=int(xmid-0.5*bw2)/100 - 1
x1=100*x1
x2=int(xmid+0.5*bw2)
xdf2=bw2/NX
for ix in range(x1,x2,20):
i=0.5*NX + (ix-xmid2)/xdf2
j=20
# if (ix%5)==0: j=16
if (ix%100)==0 :
j=16
x=i-1
if ix<1000: x=x+2
if ix<0: x=x-2
y=8
c2.create_text(x,y,text=str(ix))
c2.create_line(i,25,i,j,fill='black')
#-------------------------------------------------------- Create GUI widgets #-------------------------------------------------------- Create GUI widgets
#-------------------------------------------------------- Menu bar #-------------------------------------------------------- Menu bar