mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 22:28:41 -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 \
|
||||
wsjtgen.f90 runqqq.f90 fivehz.f90
|
||||
|
||||
SRCS2F77 = wsjt1.f avesp2.f bzap.f \
|
||||
stdecode.f indexx.f s2shape.f flat2.f gen65.f chkmsg.f \
|
||||
gentone.f \
|
||||
set.f flatten.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 \
|
||||
encode65.f extract.f flat1.f four2.f gencw.f getpfx1.f \
|
||||
SRCS2F77 = wsjt1.f bzap.f avesp2.f flatten.f \
|
||||
indexx.f flat2.f gen65.f chkmsg.f \
|
||||
gentone.f gencwid.f \
|
||||
set.f db.f pctile.f sort.f ssort.f ps.f smooth.f \
|
||||
peakup.f avemsg65.f decode65.f demod64a.f \
|
||||
encode65.f extract.f flat1.f four2.f getpfx1.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 \
|
||||
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 ndevin !Device# for audio input GUI
|
||||
integer ndevout !Device# for audio output GUI
|
||||
integer nx !x coordinate for waterfall pixmap GUI
|
||||
integer mfsample !Measured sample rate, input SoundIn
|
||||
integer mfsample2 !Measured sample rate, output SoundOut
|
||||
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), &
|
||||
nmax,iwrite,iread,iwave(NTXMAX),nwave,TxOK,Receiving,Transmitting, &
|
||||
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/
|
||||
|
||||
|
@ -120,6 +120,7 @@ static int SoundOut( void *inputBuffer, void *outputBuffer,
|
||||
} else {
|
||||
memset((void*)outputBuffer, 0, 2*sizeof(short)*framesPerBuffer);
|
||||
}
|
||||
fivehz_(); //Call fortran routine
|
||||
fivehztx_(); //Call fortran routine
|
||||
return 0;
|
||||
}
|
||||
|
28
spec.f90
28
spec.f90
@ -1,17 +1,18 @@
|
||||
!---------------------------------------------------- spec
|
||||
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.
|
||||
|
||||
! Input:
|
||||
parameter (NX=750,NY=130,NTOT=NX*NY)
|
||||
integer brightness,contrast !Display parameters
|
||||
integer ngain !Digital gain for input audio
|
||||
integer nspeed !Scrolling speed index
|
||||
! 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 b0,c0
|
||||
real x(4096) !Data for FFT
|
||||
@ -45,7 +46,6 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||
c0=-999
|
||||
logmap0=-999
|
||||
nspeed0=-999
|
||||
nx=0
|
||||
ncall=0
|
||||
jza=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
|
||||
nlines=nlines+1
|
||||
do i=225000,751,-1 !Move spectra up one row
|
||||
a0(i)=a0(i-750) ! (will be "down" on display)
|
||||
do i=NTOT,NX+1,-1 !Move spectra up one row
|
||||
a0(i)=a0(i-NX) ! (will be "down" on display)
|
||||
enddo
|
||||
if(ndiskdat.eq.1 .and. nlines.eq.1) then
|
||||
do i=1,750
|
||||
do i=1,NX
|
||||
a0(i)=255
|
||||
enddo
|
||||
do i=225000,751,-1
|
||||
a0(i)=a0(i-750)
|
||||
do i=NTOT,NX+1,-1
|
||||
a0(i)=a0(i-NX)
|
||||
enddo
|
||||
endif
|
||||
|
||||
@ -142,10 +142,10 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||
i0=182 + nint((nfmid-1500)/df)
|
||||
if(i0.lt.0) ia=1-i0
|
||||
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
|
||||
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
|
||||
a0(i)=5*ss(i+i0)/nsum
|
||||
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
|
||||
ss(i)=0.
|
||||
enddo
|
||||
if(jz.lt.300) jz=jz+1
|
||||
if(jz.lt.NY) jz=jz+1
|
||||
endif
|
||||
|
||||
if(ndiskdat.eq.1) then
|
||||
@ -171,11 +171,11 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||
if(npts.ge.4096) go to 10
|
||||
|
||||
! Compute pixel values
|
||||
iz=750
|
||||
iz=NX
|
||||
logmap=0
|
||||
if(brightness.ne.b0 .or. contrast.ne.c0 .or. logmap.ne.logmap0 .or. &
|
||||
nspeed.ne.nspeed0 .or. nlines.gt.1) then
|
||||
iz=225000
|
||||
iz=NTOT
|
||||
gain=40*sqrt(nstep(nspeed)/5.0) * 5.0**(0.01*contrast)
|
||||
gamma=1.3 + 0.01*contrast
|
||||
offset=(brightness+64.0)/2
|
||||
|
14
specjt.py
14
specjt.py
@ -68,11 +68,19 @@ tol0=400
|
||||
ttot=0.0
|
||||
|
||||
c=Canvas()
|
||||
a=zeros(225000,'s')
|
||||
im=Image.new('P',(750,300))
|
||||
line0=Image.new('P',(750,1)) #Image fragment for top line of waterfall
|
||||
|
||||
a=zeros(750*130,'s')
|
||||
im=Image.new('P',(750,130))
|
||||
line0=Image.new('P',(750,1)) #Image fragment for top line of waterfall
|
||||
draw=ImageDraw.Draw(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)
|
||||
|
||||
def pal_gray0():
|
||||
|
Loading…
Reference in New Issue
Block a user