mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 12:23:37 -05:00
Code for JT4 deep search now working well. (Needs some fine tuning, though.)
Message averaging has been tested, works well also. Next: need to integrate these features and back-port into WSJT9. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2969 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
3bae368d89
commit
fdb3ff464b
31
lib/chkmsg.f90
Normal file
31
lib/chkmsg.f90
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
subroutine chkmsg(message,cok,nspecial,flip)
|
||||||
|
|
||||||
|
character message*22,cok*3
|
||||||
|
|
||||||
|
nspecial=0
|
||||||
|
flip=1.0
|
||||||
|
cok=" "
|
||||||
|
|
||||||
|
do i=22,1,-1
|
||||||
|
if(message(i:i).ne.' ') go to 10
|
||||||
|
enddo
|
||||||
|
i=22
|
||||||
|
|
||||||
|
10 if(i.ge.11) then
|
||||||
|
if((message(i-3:i).eq.' OOO') .or. (message(20:22).eq.' OO')) then
|
||||||
|
cok='OOO'
|
||||||
|
flip=-1.0
|
||||||
|
if(message(20:22).eq.' OO') then
|
||||||
|
message=message(1:19)
|
||||||
|
else
|
||||||
|
message=message(1:i-4)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if(message(1:2).eq.'RO') nspecial=2
|
||||||
|
if(message(1:3).eq.'RRR') nspecial=3
|
||||||
|
if(message(1:2).eq.'73') nspecial=4
|
||||||
|
|
||||||
|
return
|
||||||
|
end subroutine chkmsg
|
@ -1,17 +1,20 @@
|
|||||||
subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
||||||
nlim,deepmsg,qual,submode)
|
deepmsg,qual,submode)
|
||||||
|
|
||||||
! Decodes JT65 data, assuming that DT and DF have already been determined.
|
! Decodes JT65 data, assuming that DT and DF have already been determined.
|
||||||
|
|
||||||
parameter (MAXAVE=120)
|
parameter (MAXAVE=120)
|
||||||
real dat(npts) !Raw data
|
real dat(npts) !Raw data
|
||||||
character decoded*22,deepmsg*22
|
character decoded*22,deepmsg*22
|
||||||
|
character*12 mycall,hiscall
|
||||||
|
character*6 hisgrid
|
||||||
character*72 c72
|
character*72 c72
|
||||||
character submode*1
|
character submode*1
|
||||||
real*8 dt,df,phi,f0,dphi,twopi,phi1,dphi1
|
real*8 dt,df,phi,f0,dphi,twopi,phi1,dphi1
|
||||||
complex*16 cz,cz1,c0,c1
|
complex*16 cz,cz1,c0,c1
|
||||||
integer*1 symbol(207)
|
integer*1 symbol(207)
|
||||||
real*4 rsymbol(207,7)
|
real*4 rsymbol(207,7)
|
||||||
|
real*4 sym(207)
|
||||||
integer nsum(7)
|
integer nsum(7)
|
||||||
integer*1 data1(13) !Decoded data (8-bit bytes)
|
integer*1 data1(13) !Decoded data (8-bit bytes)
|
||||||
integer data4a(9) !Decoded data (8-bit bytes)
|
integer data4a(9) !Decoded data (8-bit bytes)
|
||||||
@ -46,6 +49,9 @@ subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
|||||||
if(istart.lt.0) istart=0
|
if(istart.lt.0) istart=0
|
||||||
nchips=0
|
nchips=0
|
||||||
ich=0
|
ich=0
|
||||||
|
qbest=0.
|
||||||
|
deepmsg=' '
|
||||||
|
ichbest=-1
|
||||||
|
|
||||||
! Should amp be adjusted according to signal strength?
|
! Should amp be adjusted according to signal strength?
|
||||||
|
|
||||||
@ -103,20 +109,23 @@ subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
|||||||
if(i4.gt.127) i4=i4-256
|
if(i4.gt.127) i4=i4-256
|
||||||
if(j.ge.1) then
|
if(j.ge.1) then
|
||||||
symbol(j)=i4
|
symbol(j)=i4
|
||||||
rsymbol(j,ich)=rsymbol(j,ich) + rsym
|
! rsymbol(j,ich)=rsymbol(j,ich) + rsym
|
||||||
|
rsymbol(j,ich)=rsym
|
||||||
|
sym(j)=rsym
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!### The following does simple message averaging:
|
!### The following does simple message averaging:
|
||||||
nsum(ich)=nsum(ich)+1
|
! nsum(ich)=nsum(ich)+1
|
||||||
do j=1,207
|
! do j=1,207
|
||||||
r=rsymbol(j,ich)/nsum(ich) + 128.
|
! sym(j)=rsymbol(j,ich)/nsum(ich)
|
||||||
if(r.gt.255.0) r=255.0
|
! r=sym(j) + 128.
|
||||||
if(r.lt.0.0) r=0.0
|
! if(r.gt.255.0) r=255.0
|
||||||
i4=nint(r)
|
! if(r.lt.0.0) r=0.0
|
||||||
if(i4.gt.127) i4=i4-256
|
! i4=nint(r)
|
||||||
symbol(j)=i4
|
! if(i4.gt.127) i4=i4-256
|
||||||
enddo
|
! symbol(j)=i4
|
||||||
|
! enddo
|
||||||
!###
|
!###
|
||||||
|
|
||||||
nbits=72+31
|
nbits=72+31
|
||||||
@ -129,6 +138,20 @@ subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
|||||||
call fano232(symbol(2),nbits,mettab,delta,limit,data1,ncycles,metric,ncount)
|
call fano232(symbol(2),nbits,mettab,delta,limit,data1,ncycles,metric,ncount)
|
||||||
nlim=ncycles/nbits
|
nlim=ncycles/nbits
|
||||||
|
|
||||||
|
!### Try deep search
|
||||||
|
qual=0.
|
||||||
|
neme=1
|
||||||
|
mycall='VK7MO'
|
||||||
|
hiscall='W5LUA'
|
||||||
|
hisgrid='EM13'
|
||||||
|
call deep24(sym(2),neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
||||||
|
if(qual.gt.qbest) then
|
||||||
|
qbest=qual
|
||||||
|
deepmsg=decoded
|
||||||
|
ichbest=ich
|
||||||
|
endif
|
||||||
|
!###
|
||||||
|
|
||||||
if(ncount.ge.0) go to 100
|
if(ncount.ge.0) go to 100
|
||||||
if(mode.eq.7 .and. nchips.lt.mode4) go to 40
|
if(mode.eq.7 .and. nchips.lt.mode4) go to 40
|
||||||
|
|
||||||
@ -137,27 +160,26 @@ subroutine decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded,ncount, &
|
|||||||
if(i4.lt.0) i4=i4+256
|
if(i4.lt.0) i4=i4+256
|
||||||
data4a(i)=i4
|
data4a(i)=i4
|
||||||
enddo
|
enddo
|
||||||
! call cs_lock('decode24')
|
|
||||||
write(c72,1100) (data4a(i),i=1,9)
|
write(c72,1100) (data4a(i),i=1,9)
|
||||||
1100 format(9b8.8)
|
1100 format(9b8.8)
|
||||||
read(c72,1102) data4
|
read(c72,1102) data4
|
||||||
1102 format(12b6)
|
1102 format(12b6)
|
||||||
! call cs_unlock
|
|
||||||
|
|
||||||
decoded=' '
|
decoded=' '
|
||||||
submode=' '
|
submode=' '
|
||||||
if(ncount.ge.0) then
|
if(ncount.ge.0) then
|
||||||
call unpackmsg(data4,decoded)
|
call unpackmsg(data4,decoded)
|
||||||
submode=char(ichar('A')+ich-1)
|
submode=char(ichar('A')+ich-1)
|
||||||
|
else
|
||||||
|
decoded=deepmsg
|
||||||
|
submode=char(ichar('A')+ichbest-1)
|
||||||
|
qual=qbest
|
||||||
endif
|
endif
|
||||||
if(decoded(1:6).eq.'000AAA') then
|
if(decoded(1:6).eq.'000AAA') then
|
||||||
decoded='***WRONG MODE?***'
|
decoded='***WRONG MODE?***'
|
||||||
ncount=-1
|
ncount=-1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
qual=0.
|
|
||||||
deepmsg=' '
|
|
||||||
|
|
||||||
! Save symbol spectra for possible decoding of average.
|
! Save symbol spectra for possible decoding of average.
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
subroutine deep24(sym,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
||||||
|
|
||||||
! Have barely begun converting this from JT65 to JT4
|
! Have barely begun converting this from JT65 to JT4
|
||||||
|
|
||||||
parameter (MAXCALLS=7000,MAXRPT=63)
|
parameter (MAXCALLS=7000,MAXRPT=63)
|
||||||
real s3(64,63)
|
real*4 sym(206)
|
||||||
character callsign*12,grid*4,message*22,hisgrid*6,c*1,ceme*3
|
character callsign*12,grid*4,message*22,hisgrid*6,c*1,ceme*3
|
||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
character mycall0*12,hiscall0*12,hisgrid0*6
|
character mycall0*12,hiscall0*12,hisgrid0*6
|
||||||
@ -12,10 +12,10 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
character*15 callgrid(MAXCALLS)
|
character*15 callgrid(MAXCALLS)
|
||||||
character*180 line
|
character*180 line
|
||||||
character*4 rpt(MAXRPT)
|
character*4 rpt(MAXRPT)
|
||||||
integer ncode(63,2*MAXCALLS + 2 + MAXRPT)
|
integer ncode(206)
|
||||||
|
real*4 code(206,2*MAXCALLS + 2 + MAXRPT)
|
||||||
real pp(2*MAXCALLS + 2 + MAXRPT)
|
real pp(2*MAXCALLS + 2 + MAXRPT)
|
||||||
common/mrscom/ mrs(63),mrs2(63)
|
! common/c3com/ mcall3a
|
||||||
common/c3com/ mcall3a
|
|
||||||
|
|
||||||
data neme0/-99/
|
data neme0/-99/
|
||||||
data rpt/'-01','-02','-03','-04','-05', &
|
data rpt/'-01','-02','-03','-04','-05', &
|
||||||
@ -78,7 +78,7 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
j3=index(mycall,'/') ! j3>0 means compound mycall
|
j3=index(mycall,'/') ! j3>0 means compound mycall
|
||||||
j4=index(callsign,'/') ! j4>0 means compound hiscall
|
j4=index(callsign,'/') ! j4>0 means compound hiscall
|
||||||
callgrid(icall)=callsign(1:j2)
|
callgrid(icall)=callsign(1:j2)
|
||||||
|
|
||||||
mz=1
|
mz=1
|
||||||
! Allow MyCall + HisCall + rpt (?)
|
! Allow MyCall + HisCall + rpt (?)
|
||||||
if(n.eq.1 .and. j3.lt.1 .and. j4.lt.1 .and. &
|
if(n.eq.1 .and. j3.lt.1 .and. j4.lt.1 .and. &
|
||||||
@ -89,15 +89,16 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
message=mycall(1:j1)//' '//callgrid(icall)
|
message=mycall(1:j1)//' '//callgrid(icall)
|
||||||
k=k+1
|
k=k+1
|
||||||
testmsg(k)=message
|
testmsg(k)=message
|
||||||
! call encode65(message,ncode(1,k))
|
call encode4(message,ncode)
|
||||||
|
code(1:206,k)=2*ncode(1:206)-1
|
||||||
if(n.ge.2) then
|
if(n.ge.2) then
|
||||||
! Insert CQ message
|
! Insert CQ message
|
||||||
if(j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid
|
if(j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid
|
||||||
message='CQ '//callgrid(icall)
|
message='CQ '//callgrid(icall)
|
||||||
k=k+1
|
k=k+1
|
||||||
testmsg(k)=message
|
testmsg(k)=message
|
||||||
! call encode65(message,ncode(1,k))
|
call encode4(message,ncode)
|
||||||
|
code(1:206,k)=2*ncode(1:206)-1
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
10 continue
|
10 continue
|
||||||
@ -110,10 +111,13 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
30 mycall0=mycall
|
30 mycall0=mycall
|
||||||
hiscall0=hiscall
|
hiscall0=hiscall
|
||||||
hisgrid0=hisgrid
|
hisgrid0=hisgrid
|
||||||
ref0=0.
|
|
||||||
do j=1,63
|
sq=0.
|
||||||
ref0=ref0 + s3(mrs(j),j)
|
do j=1,206
|
||||||
|
sq=sq + sym(j)**2
|
||||||
enddo
|
enddo
|
||||||
|
rms=sqrt(sq/206.0)
|
||||||
|
sym=sym/rms
|
||||||
|
|
||||||
p1=-1.e30
|
p1=-1.e30
|
||||||
p2=-1.e30
|
p2=-1.e30
|
||||||
@ -121,14 +125,11 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
pp(k)=0.
|
pp(k)=0.
|
||||||
! Test all messages if flip=+1; skip the CQ messages if flip=-1.
|
! Test all messages if flip=+1; skip the CQ messages if flip=-1.
|
||||||
if(flip.gt.0.0 .or. testmsg(k)(1:3).ne.'CQ ') then
|
if(flip.gt.0.0 .or. testmsg(k)(1:3).ne.'CQ ') then
|
||||||
sum=0.
|
p=0.
|
||||||
ref=ref0
|
do j=1,206
|
||||||
do j=1,63
|
i=code(j,k)+1
|
||||||
i=ncode(j,k)+1
|
p=p + code(j,k)*sym(j)
|
||||||
sum=sum + s3(i,j)
|
|
||||||
if(i.eq.mrs(j)) ref=ref - s3(i,j) + s3(mrs2(j),j)
|
|
||||||
enddo
|
enddo
|
||||||
p=sum/ref
|
|
||||||
pp(k)=p
|
pp(k)=p
|
||||||
if(p.gt.p1) then
|
if(p.gt.p1) then
|
||||||
p1=p
|
p1=p
|
||||||
@ -142,15 +143,20 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
! ### DO NOT REMOVE ###
|
! ### DO NOT REMOVE ###
|
||||||
rewind 77
|
! rewind 77
|
||||||
write(77,*) p1,p2
|
! write(77,*) p1,p2
|
||||||
! ### Works OK without it (in both Windows and Linux) if compiled
|
! ### Works OK without it (in both Windows and Linux) if compiled
|
||||||
! ### without optimization. However, in Windows this is a colossal
|
! ### without optimization. However, in Windows this is a colossal
|
||||||
! ### pain because of the way F2PY wants to run the compile step.
|
! ### pain because of the way F2PY wants to run the compile step.
|
||||||
|
|
||||||
|
|
||||||
|
bias=1.1*p2
|
||||||
|
! if(mode65.eq.1) bias=max(1.12*p2,0.335)
|
||||||
|
! if(mode65.eq.2) bias=max(1.08*p2,0.405)
|
||||||
|
! if(mode65.ge.4) bias=max(1.04*p2,0.505)
|
||||||
|
|
||||||
if(p2.eq.p1 .and. p1.ne.-1.e30) stop 'Error in deep24'
|
if(p2.eq.p1 .and. p1.ne.-1.e30) stop 'Error in deep24'
|
||||||
qual=100.0*(p1-bias)
|
qual=10.0*(p1-bias)
|
||||||
|
|
||||||
decoded=' '
|
decoded=' '
|
||||||
c=' '
|
c=' '
|
||||||
@ -169,5 +175,8 @@ subroutine deep24(s3,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
|
|||||||
decoded(i:i)=char(ichar(decoded(i:i))-32)
|
decoded(i:i)=char(ichar(decoded(i:i))-32)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
! write(*,3010) p1,p2,p1-p2,p1/p2,qual,decoded
|
||||||
|
!3010 format('DS:',5f9.1,2x,a22)
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine deep24
|
end subroutine deep24
|
||||||
|
20
lib/encode4.f90
Normal file
20
lib/encode4.f90
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
subroutine encode4(message,ncode)
|
||||||
|
|
||||||
|
parameter (MAXCALLS=7000,MAXRPT=63)
|
||||||
|
integer ncode(206)
|
||||||
|
character*22 message !Message to be generated
|
||||||
|
character*3 cok !' ' or 'OOO'
|
||||||
|
integer dgen(13)
|
||||||
|
integer*1 data0(13),symbol(216)
|
||||||
|
logical text
|
||||||
|
|
||||||
|
call chkmsg(message,cok,nspecial,flip)
|
||||||
|
call packmsg(message,dgen,text) !Pack 72-bit message into 12 six-bit symbols
|
||||||
|
call entail(dgen,data0)
|
||||||
|
call encode232(data0,206,symbol) !Convolutional encoding
|
||||||
|
call interleave24(symbol,1) !Apply JT4 interleaving
|
||||||
|
do i=1,206
|
||||||
|
ncode(i)=symbol(i)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
end subroutine encode4
|
86
lib/gen24.f90
Normal file
86
lib/gen24.f90
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
subroutine gen24(message,mode4,samfac,ntxdf,iwave,nwave,sendingsh,msgsent,nmsg)
|
||||||
|
|
||||||
|
! Encode a JT4 message into a wavefile.
|
||||||
|
|
||||||
|
parameter (NMAX=60*11025) !Max length of wave file
|
||||||
|
character*22 message !Message to be generated
|
||||||
|
character*22 msgsent !Message as it will be received
|
||||||
|
character*3 cok !' ' or 'OOO'
|
||||||
|
real*8 t,dt,phi,f,f0,dfgen,dphi,pi,twopi,samfac,tsymbol
|
||||||
|
integer*2 iwave(NMAX) !Generated wave file
|
||||||
|
integer sendingsh
|
||||||
|
integer dgen(13)
|
||||||
|
integer*1 data0(13),symbol(216)
|
||||||
|
logical first
|
||||||
|
include 'prcom2.f'
|
||||||
|
data first/.true./
|
||||||
|
save
|
||||||
|
|
||||||
|
nsym=207 !Symbols per transmission
|
||||||
|
if(first) then
|
||||||
|
do i=1,nsym
|
||||||
|
pr2(i)=2*npr2(i)-1
|
||||||
|
enddo
|
||||||
|
pi=4.d0*atan(1.d0)
|
||||||
|
twopi=2.d0*pi
|
||||||
|
first=.false.
|
||||||
|
endif
|
||||||
|
|
||||||
|
call chkmsg(message,cok,nspecial,flip)
|
||||||
|
call packmsg(message,dgen) !Pack 72-bit message into 12 six-bit symbols
|
||||||
|
call entail(dgen,data0)
|
||||||
|
call unpackmsg(dgen,msgsent)
|
||||||
|
|
||||||
|
nbytes=(72+31+7)/8
|
||||||
|
call encode(data0,nbytes,symbol(2)) !Convolutional encoding
|
||||||
|
symbol(1)=0 !Reference phase
|
||||||
|
sendingsh=0
|
||||||
|
if(iand(dgen(10),8).ne.0) sendingsh=-1 !Plain text flag
|
||||||
|
call interleave24(symbol(2),1) !Apply JT4 interleaving
|
||||||
|
|
||||||
|
! Set up necessary constants
|
||||||
|
tsymbol=2520.d0/11025.d0
|
||||||
|
dt=1.d0/(samfac*11025.d0)
|
||||||
|
f0=118*11025.d0/1024 + ntxdf
|
||||||
|
dfgen=11025.d0/2520 !4.375 Hz
|
||||||
|
t=0.d0
|
||||||
|
phi=0.d0
|
||||||
|
j0=0
|
||||||
|
ndata=(nsym*11025.d0*samfac*tsymbol)/2
|
||||||
|
ndata=2*ndata
|
||||||
|
do i=1,ndata
|
||||||
|
t=t+dt
|
||||||
|
j=int(t/tsymbol) + 1 !Symbol number, 1-207
|
||||||
|
if(j.ne.j0) then
|
||||||
|
f=f0 + (npr2(j)+2*symbol(j)-1.5) * dfgen * mode4
|
||||||
|
if(flip.lt.0.0) f=f0+((1-npr2(j))+2*symbol(j)-1.5)*dfgen*mode4
|
||||||
|
dphi=twopi*dt*f
|
||||||
|
j0=j
|
||||||
|
endif
|
||||||
|
phi=phi+dphi
|
||||||
|
iwave(i)=32767.0*sin(phi)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do j=1,5512 !Put another 0.5 sec of silence at end
|
||||||
|
i=i+1
|
||||||
|
iwave(i)=0
|
||||||
|
enddo
|
||||||
|
nwave=i
|
||||||
|
|
||||||
|
if(flip.lt.0.0) then
|
||||||
|
do i=22,1,-1
|
||||||
|
if(msgsent(i:i).ne.' ') goto 10
|
||||||
|
enddo
|
||||||
|
10 msgsent=msgsent(1:i)//' OOO'
|
||||||
|
endif
|
||||||
|
do i=22,1,-1
|
||||||
|
if(msgsent(i:i).ne.' ') goto 20
|
||||||
|
enddo
|
||||||
|
20 nmsg=i
|
||||||
|
|
||||||
|
! write(*,3002) (symbol(i),i=1,207)
|
||||||
|
! 3002 format(70i1)
|
||||||
|
|
||||||
|
return
|
||||||
|
end subroutine gen24
|
||||||
|
|
@ -92,7 +92,7 @@ subroutine wsjt24(dat,npts,cfile6,NClearAve,MinSigdB, &
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded, &
|
call decode24(dat,npts,dtx,dfx,flip,mode,mode4,decoded, &
|
||||||
ncount,nlim,deepmsg,qual,submode)
|
ncount,deepmsg,qual,submode)
|
||||||
|
|
||||||
200 kvqual=0
|
200 kvqual=0
|
||||||
if(ncount.ge.0) kvqual=1
|
if(ncount.ge.0) kvqual=1
|
||||||
@ -112,8 +112,8 @@ subroutine wsjt24(dat,npts,cfile6,NClearAve,MinSigdB, &
|
|||||||
|
|
||||||
! call cs_lock('wsjt24')
|
! call cs_lock('wsjt24')
|
||||||
write(line,1010) cfile6,nsync,nsnr,dtx-1.0,jdf,nint(width), &
|
write(line,1010) cfile6,nsync,nsnr,dtx-1.0,jdf,nint(width), &
|
||||||
csync,special,decoded(1:19),cooo,kvqual,nqual,submode,nlim
|
csync,special,decoded(1:19),cooo,kvqual,nqual,submode
|
||||||
1010 format(a6,i3,i5,f5.1,i5,i3,1x,a1,1x,a5,a19,1x,a3,i4,i4,1x,a1,i8)
|
1010 format(a6,i3,i5,f5.1,i5,i3,1x,a1,1x,a5,a19,1x,a3,i3,i5,1x,a1)
|
||||||
|
|
||||||
! Blank all end-of-line stuff if no decode
|
! Blank all end-of-line stuff if no decode
|
||||||
if(line(31:40).eq.' ') line=line(:30)
|
if(line(31:40).eq.' ') line=line(:30)
|
||||||
|
@ -5,6 +5,7 @@ program wsjt24d
|
|||||||
character*12 arg
|
character*12 arg
|
||||||
real ccfblue(-5:540) !X-cor function in JT65 mode (blue line)
|
real ccfblue(-5:540) !X-cor function in JT65 mode (blue line)
|
||||||
real ccfred(450) !Average spectrum of the whole file
|
real ccfred(450) !Average spectrum of the whole file
|
||||||
|
integer dftolerance
|
||||||
|
|
||||||
nargs=iargc()
|
nargs=iargc()
|
||||||
if(nargs.ne.2) then
|
if(nargs.ne.2) then
|
||||||
@ -16,6 +17,7 @@ program wsjt24d
|
|||||||
call getarg(2,arg)
|
call getarg(2,arg)
|
||||||
read(arg,*) ifile2
|
read(arg,*) ifile2
|
||||||
|
|
||||||
|
open(23,file='CALL3.TXT',status='old')
|
||||||
open(50,file='vk7mo.dat',form='unformatted',status='old')
|
open(50,file='vk7mo.dat',form='unformatted',status='old')
|
||||||
|
|
||||||
do ifile=1,ifile2
|
do ifile=1,ifile2
|
||||||
@ -27,6 +29,10 @@ program wsjt24d
|
|||||||
! write(*,3000) ifile,cfile6,jz,mode,mode4,idf
|
! write(*,3000) ifile,cfile6,jz,mode,mode4,idf
|
||||||
!3000 format(i3,2x,a6,i10,3i5)
|
!3000 format(i3,2x,a6,i10,3i5)
|
||||||
|
|
||||||
|
dftolerance=100
|
||||||
|
nfreeze=1
|
||||||
|
neme=0
|
||||||
|
|
||||||
! call wsjt24(dat(4097),jz-4096,cfile6,NClearAve,MinSigdB,DFTolerance, &
|
! call wsjt24(dat(4097),jz-4096,cfile6,NClearAve,MinSigdB,DFTolerance, &
|
||||||
call wsjt24(dat,jz,cfile6,NClearAve,MinSigdB,DFTolerance, &
|
call wsjt24(dat,jz,cfile6,NClearAve,MinSigdB,DFTolerance, &
|
||||||
NFreeze,mode,mode4,Nseg,MouseDF2,NAgain,idf,lumsg,lcum,nspecial, &
|
NFreeze,mode,mode4,Nseg,MouseDF2,NAgain,idf,lumsg,lcum,nspecial, &
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//-------------------------------------------------------------- MainWindow
|
//------------------------------------------------------------- MainWindow
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
#include "devsetup.h"
|
#include "devsetup.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user