mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-03 16:01:18 -05:00
Starting on the data input and waterfall display necessities ...
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@332 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
4ef03f3b8e
commit
170e192c89
12
Makefile.win
12
Makefile.win
@ -19,12 +19,12 @@ SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \
|
|||||||
i1tor4.f90 pix2d65.f90 rfile.f90 savedata.f90 spec.f90 \
|
i1tor4.f90 pix2d65.f90 rfile.f90 savedata.f90 spec.f90 \
|
||||||
wsjtgen.f90 runqqq.f90 fivehz.f90
|
wsjtgen.f90 runqqq.f90 fivehz.f90
|
||||||
|
|
||||||
SRCS2F77 = wsjt1.f avesp2.f bzap.f \
|
SRCS2F77 = wsjt1.f bzap.f avesp2.f flatten.f \
|
||||||
stdecode.f indexx.f s2shape.f flat2.f gen65.f chkmsg.f \
|
indexx.f flat2.f gen65.f chkmsg.f \
|
||||||
gentone.f \
|
gentone.f gencwid.f \
|
||||||
set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \
|
set.f db.f pctile.f sort.f ssort.f ps.f smooth.f \
|
||||||
peakup.f sync.f detect.f avemsg65.f decode65.f demod64a.f \
|
peakup.f avemsg65.f decode65.f demod64a.f \
|
||||||
encode65.f extract.f flat1.f four2.f gencw.f getpfx1.f \
|
encode65.f extract.f flat1.f four2.f getpfx1.f \
|
||||||
getpfx2.f getsnr.f graycode.f grid2k.f interleave63.f k2grid.f \
|
getpfx2.f getsnr.f graycode.f grid2k.f interleave63.f k2grid.f \
|
||||||
limit.f lpf1.f deep65.f morse.f nchar.f packcall.f packgrid.f \
|
limit.f lpf1.f deep65.f morse.f nchar.f packcall.f packgrid.f \
|
||||||
packmsg.f packtext.f setup65.f short65.f slope.f spec2d65.f \
|
packmsg.f packtext.f setup65.f short65.f slope.f spec2d65.f \
|
||||||
|
@ -36,7 +36,6 @@ integer newdat !New data available for waterfall? GUI
|
|||||||
integer ndsec !Dsec in units of 0.1 s GUI
|
integer ndsec !Dsec in units of 0.1 s GUI
|
||||||
integer ndevin !Device# for audio input GUI
|
integer ndevin !Device# for audio input GUI
|
||||||
integer ndevout !Device# for audio output GUI
|
integer ndevout !Device# for audio output GUI
|
||||||
integer nx !x coordinate for waterfall pixmap GUI
|
|
||||||
integer mfsample !Measured sample rate, input SoundIn
|
integer mfsample !Measured sample rate, input SoundIn
|
||||||
integer mfsample2 !Measured sample rate, output SoundOut
|
integer mfsample2 !Measured sample rate, output SoundOut
|
||||||
integer ns0 !Time at last ALL.TXT date entry Decoder
|
integer ns0 !Time at last ALL.TXT date entry Decoder
|
||||||
@ -46,7 +45,7 @@ common/gcom1/Tbuf(1024),ntrbuf(1024),Tsec,rxdelay,txdelay, &
|
|||||||
samfacin,samfacout,txsnrdb,y1(NRXMAX),y2(NRXMAX), &
|
samfacin,samfacout,txsnrdb,y1(NRXMAX),y2(NRXMAX), &
|
||||||
nmax,iwrite,iread,iwave(NTXMAX),nwave,TxOK,Receiving,Transmitting, &
|
nmax,iwrite,iread,iwave(NTXMAX),nwave,TxOK,Receiving,Transmitting, &
|
||||||
TxFirst,TRPeriod,ibuf,ibuf0,ave,rms,ngo,level,mute,newdat,ndsec, &
|
TxFirst,TRPeriod,ibuf,ibuf0,ave,rms,ngo,level,mute,newdat,ndsec, &
|
||||||
ndevin,ndevout,nx,mfsample,mfsample2,ns0,devin_name,devout_name
|
ndevin,ndevout,mfsample,mfsample2,ns0,devin_name,devout_name
|
||||||
|
|
||||||
!### volatile /gcom1/
|
!### volatile /gcom1/
|
||||||
|
|
||||||
|
@ -120,6 +120,7 @@ static int SoundOut( void *inputBuffer, void *outputBuffer,
|
|||||||
} else {
|
} else {
|
||||||
memset((void*)outputBuffer, 0, 2*sizeof(short)*framesPerBuffer);
|
memset((void*)outputBuffer, 0, 2*sizeof(short)*framesPerBuffer);
|
||||||
}
|
}
|
||||||
|
fivehz_(); //Call fortran routine
|
||||||
fivehztx_(); //Call fortran routine
|
fivehztx_(); //Call fortran routine
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
28
spec.f90
28
spec.f90
@ -1,17 +1,18 @@
|
|||||||
!---------------------------------------------------- spec
|
!---------------------------------------------------- spec
|
||||||
subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||||
|
|
||||||
! Called by SpecJT in its TopLevel Python code.
|
! Called by SpecJT.
|
||||||
! Probably should use the "!f2py intent(...)" structure here.
|
! Probably should use the "!f2py intent(...)" structure here.
|
||||||
|
|
||||||
! Input:
|
! Input:
|
||||||
|
parameter (NX=750,NY=130,NTOT=NX*NY)
|
||||||
integer brightness,contrast !Display parameters
|
integer brightness,contrast !Display parameters
|
||||||
integer ngain !Digital gain for input audio
|
integer ngain !Digital gain for input audio
|
||||||
integer nspeed !Scrolling speed index
|
integer nspeed !Scrolling speed index
|
||||||
! Output:
|
! Output:
|
||||||
integer*2 a(225000) !Pixel values for 750 x 300 array
|
integer*2 a(NTOT) !Pixel values for NX x NY array
|
||||||
|
|
||||||
real a0(225000) !Save the last 300 spectra
|
real a0(NTOT) !Save the last NY spectra
|
||||||
integer nstep(5)
|
integer nstep(5)
|
||||||
integer b0,c0
|
integer b0,c0
|
||||||
real x(4096) !Data for FFT
|
real x(4096) !Data for FFT
|
||||||
@ -45,7 +46,6 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
|||||||
c0=-999
|
c0=-999
|
||||||
logmap0=-999
|
logmap0=-999
|
||||||
nspeed0=-999
|
nspeed0=-999
|
||||||
nx=0
|
|
||||||
ncall=0
|
ncall=0
|
||||||
jza=0
|
jza=0
|
||||||
rms=0.
|
rms=0.
|
||||||
@ -123,15 +123,15 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
|||||||
|
|
||||||
if(nsum.ge.nstep(nspeed)) then !Integrate for specified time
|
if(nsum.ge.nstep(nspeed)) then !Integrate for specified time
|
||||||
nlines=nlines+1
|
nlines=nlines+1
|
||||||
do i=225000,751,-1 !Move spectra up one row
|
do i=NTOT,NX+1,-1 !Move spectra up one row
|
||||||
a0(i)=a0(i-750) ! (will be "down" on display)
|
a0(i)=a0(i-NX) ! (will be "down" on display)
|
||||||
enddo
|
enddo
|
||||||
if(ndiskdat.eq.1 .and. nlines.eq.1) then
|
if(ndiskdat.eq.1 .and. nlines.eq.1) then
|
||||||
do i=1,750
|
do i=1,NX
|
||||||
a0(i)=255
|
a0(i)=255
|
||||||
enddo
|
enddo
|
||||||
do i=225000,751,-1
|
do i=NTOT,NX+1,-1
|
||||||
a0(i)=a0(i-750)
|
a0(i)=a0(i-NX)
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -142,10 +142,10 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
|||||||
i0=182 + nint((nfmid-1500)/df)
|
i0=182 + nint((nfmid-1500)/df)
|
||||||
if(i0.lt.0) ia=1-i0
|
if(i0.lt.0) ia=1-i0
|
||||||
else if(nfrange.eq.4000) then
|
else if(nfrange.eq.4000) then
|
||||||
i0=nint(nfmid/df - 752.0)
|
i0=nint(nfmid/df - (NX+2.0))
|
||||||
if(i0.lt.0) ia=1-i0/2
|
if(i0.lt.0) ia=1-i0/2
|
||||||
endif
|
endif
|
||||||
do i=ia,750 !Insert new data in top row
|
do i=ia,NX !Insert new data in top row
|
||||||
if(nfrange.eq.2000) then
|
if(nfrange.eq.2000) then
|
||||||
a0(i)=5*ss(i+i0)/nsum
|
a0(i)=5*ss(i+i0)/nsum
|
||||||
else if(nfrange.eq.4000) then
|
else if(nfrange.eq.4000) then
|
||||||
@ -158,7 +158,7 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
|||||||
do i=1,nh !Zero the accumulating array
|
do i=1,nh !Zero the accumulating array
|
||||||
ss(i)=0.
|
ss(i)=0.
|
||||||
enddo
|
enddo
|
||||||
if(jz.lt.300) jz=jz+1
|
if(jz.lt.NY) jz=jz+1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(ndiskdat.eq.1) then
|
if(ndiskdat.eq.1) then
|
||||||
@ -171,11 +171,11 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
|||||||
if(npts.ge.4096) go to 10
|
if(npts.ge.4096) go to 10
|
||||||
|
|
||||||
! Compute pixel values
|
! Compute pixel values
|
||||||
iz=750
|
iz=NX
|
||||||
logmap=0
|
logmap=0
|
||||||
if(brightness.ne.b0 .or. contrast.ne.c0 .or. logmap.ne.logmap0 .or. &
|
if(brightness.ne.b0 .or. contrast.ne.c0 .or. logmap.ne.logmap0 .or. &
|
||||||
nspeed.ne.nspeed0 .or. nlines.gt.1) then
|
nspeed.ne.nspeed0 .or. nlines.gt.1) then
|
||||||
iz=225000
|
iz=NTOT
|
||||||
gain=40*sqrt(nstep(nspeed)/5.0) * 5.0**(0.01*contrast)
|
gain=40*sqrt(nstep(nspeed)/5.0) * 5.0**(0.01*contrast)
|
||||||
gamma=1.3 + 0.01*contrast
|
gamma=1.3 + 0.01*contrast
|
||||||
offset=(brightness+64.0)/2
|
offset=(brightness+64.0)/2
|
||||||
|
12
specjt.py
12
specjt.py
@ -68,11 +68,19 @@ tol0=400
|
|||||||
ttot=0.0
|
ttot=0.0
|
||||||
|
|
||||||
c=Canvas()
|
c=Canvas()
|
||||||
a=zeros(225000,'s')
|
|
||||||
im=Image.new('P',(750,300))
|
a=zeros(750*130,'s')
|
||||||
|
im=Image.new('P',(750,130))
|
||||||
line0=Image.new('P',(750,1)) #Image fragment for top line of waterfall
|
line0=Image.new('P',(750,1)) #Image fragment for top line of waterfall
|
||||||
draw=ImageDraw.Draw(im)
|
draw=ImageDraw.Draw(im)
|
||||||
pim=ImageTk.PhotoImage(im)
|
pim=ImageTk.PhotoImage(im)
|
||||||
|
|
||||||
|
a2=zeros(750*130,'s')
|
||||||
|
im2=Image.new('P',(750,130))
|
||||||
|
line02=Image.new('P',(750,1)) #Image fragment for top line of zoomed waterfall
|
||||||
|
draw2=ImageDraw.Draw(im2)
|
||||||
|
pim2=ImageTk.PhotoImage(im2)
|
||||||
|
|
||||||
balloon=Pmw.Balloon(root)
|
balloon=Pmw.Balloon(root)
|
||||||
|
|
||||||
def pal_gray0():
|
def pal_gray0():
|
||||||
|
Loading…
Reference in New Issue
Block a user