Implement (very basic) Rx capability for a potential WSPR-LF mode.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7673 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-05-12 14:39:38 +00:00
parent 9c0d691ac7
commit d381c16c27
3 changed files with 41 additions and 22 deletions

View File

@ -1314,7 +1314,7 @@ install (TARGETS udp_daemon message_aggregator
) )
install (TARGETS jt9 jt65code qra64code qra64sim jt9code jt4code install (TARGETS jt9 jt65code qra64code qra64sim jt9code jt4code
msk144code wsprd fmtave fcal fmeasure msk144code wsprd wspr5d fmtave fcal fmeasure
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
) )

View File

@ -18,7 +18,8 @@ program wspr5d
include 'wsprlf_params.f90' include 'wsprlf_params.f90'
parameter (NMAX=300*12000) parameter (NMAX=300*12000)
character arg*8,message*22,cbits*50,infile*80,fname*16 character arg*8,message*22,cbits*50,infile*80,fname*16,datetime*11
character*120 data_dir
complex csync(0:NZ-1) !Sync symbols only, from cbb complex csync(0:NZ-1) !Sync symbols only, from cbb
complex c(0:NZ-1) !Complex waveform complex c(0:NZ-1) !Complex waveform
complex c1(0:NZ-1) !Complex waveform complex c1(0:NZ-1) !Complex waveform
@ -42,12 +43,26 @@ program wspr5d
nargs=iargc() nargs=iargc()
if(nargs.lt.2) then if(nargs.lt.2) then
print*,'Usage: wspr5d maxn file1 [file2 ...]' print*,'Usage: wspr5d [-a <data_dir>] [-f fMHz] file1 [file2 ...]'
go to 999 go to 999
endif endif
call getarg(1,arg) iarg=1
read(arg,*) maxn data_dir="."
call getarg(iarg,arg)
if(arg(1:2).eq.'-a') then
call getarg(iarg+1,data_dir)
iarg=iarg+2
endif
call getarg(iarg,arg)
if(arg(1:2).eq.'-f') then
call getarg(iarg+1,arg)
read(arg,*) fMHz
iarg=iarg+2
endif
open(13,file=trim(data_dir)//'/ALL_WSPR.TXT',status='unknown', &
position='append')
maxn=6 !Default value
twopi=8.0*atan(1.0) twopi=8.0*atan(1.0)
fs=NSPS*12000.0/NSPS0 !Sample rate fs=NSPS*12000.0/NSPS0 !Sample rate
dt=1.0/fs !Sample interval (s) dt=1.0/fs !Sample interval (s)
@ -87,24 +102,24 @@ program wspr5d
endif endif
enddo enddo
do ifile=1,nargs-1 do ifile=iarg,nargs
call getarg(ifile+1,infile) call getarg(ifile,infile)
open(10,file=infile,status='old',access='stream') open(10,file=infile,status='old',access='stream')
if(index(infile,'.c5').gt.0) then j1=index(infile,'.c5')
j2=index(infile,'.wav')
if(j1.gt.0) then
read(10,end=999) fname,ntrmin,fMHz,c read(10,end=999) fname,ntrmin,fMHz,c
close(10)
read(fname(8:11),*) nutc read(fname(8:11),*) nutc
else if(index(infile,'.wav').gt.0) then else if(j2.gt.0) then
read(10,end=999) ihdr,iwave read(10,end=999) ihdr,iwave
read(infile(j2-4:j2-1),*) nutc
datetime=infile(j2-11:j2-1)
call wspr5_downsample(iwave,c) call wspr5_downsample(iwave,c)
else else
print*,'Wrong file format?' print*,'Wrong file format?'
go to 999 go to 999
endif endif
! do i=0,NZ-1 close(10)
! write(40,4001) i,c(i),csync(i)
!4001 format(i8,4f12.6)
! enddo
call getfc1w(c,fs,fc1,xsnr) !First approx for freq call getfc1w(c,fs,fc1,xsnr) !First approx for freq
call getfc2w(c,csync,fs,fc1,fc2,fc3) !Refined freq call getfc2w(c,csync,fs,fc1,fc2,fc3) !Refined freq
@ -137,8 +152,6 @@ program wspr5d
amax=abs(z) amax=abs(z)
jpk=j jpk=j
endif endif
! write(45,4501) j,j/fs,abs(z)
!4501 format(i8,2f12.3)
enddo enddo
xdt=jpk/fs xdt=jpk/fs
do i=0,NZ-1 do i=0,NZ-1
@ -186,11 +199,17 @@ program wspr5d
1102 format(6b8,b2) 1102 format(6b8,b2)
idat(7)=ishft(idat(7),6) idat(7)=ishft(idat(7),6)
call wqdecode(idat,message,itype) call wqdecode(idat,message,itype)
endif
nsnr=nint(xsnr) nsnr=nint(xsnr)
write(*,1110) nutc,nsnr,xdt,fc1+fc2,message freq=fMHz + 1.d-6*(fc1+fc2)
1110 format(i4.4,i5,f7.2,f7.2,2x,a22) nfdot=0
write(13,1110) datetime,0,nsnr,xdt,freq,message,nfdot
1110 format(a11,2i4,f6.2,f12.7,2x,a22,i3)
write(*,1112) datetime(8:11),nsnr,xdt,freq,nfdot,message
1112 format(a4,i4,f5.1,f11.6,i3,2x,a22)
endif
enddo ! ifile loop enddo ! ifile loop
write(*,1120)
1120 format("<DecodeFinished>")
999 end program wspr5d 999 end program wspr5d

View File

@ -1278,7 +1278,6 @@ void MainWindow::dataSink(qint64 frames)
if(m_diskData) { if(m_diskData) {
cmnd='"' + m_appDir + '"' + "/wsprd -a \"" + cmnd='"' + m_appDir + '"' + "/wsprd -a \"" +
QDir::toNativeSeparators(m_dataDir.absolutePath()) + "\" \"" + m_path + "\""; QDir::toNativeSeparators(m_dataDir.absolutePath()) + "\" \"" + m_path + "\"";
// QDir::toNativeSeparators(m_dataDir.absolutePath()) + "\" " + t2 + " " + m_path + "\"";
} else { } else {
cmnd='"' + m_appDir + '"' + "/wsprd -a \"" + cmnd='"' + m_appDir + '"' + "/wsprd -a \"" +
QDir::toNativeSeparators(m_dataDir.absolutePath()) + "\" " + QDir::toNativeSeparators(m_dataDir.absolutePath()) + "\" " +
@ -1287,6 +1286,7 @@ void MainWindow::dataSink(qint64 frames)
QString t3=cmnd; QString t3=cmnd;
int i1=cmnd.indexOf("/wsprd "); int i1=cmnd.indexOf("/wsprd ");
cmnd=t3.mid(0,i1+7) + t3.mid(i1+7); cmnd=t3.mid(0,i1+7) + t3.mid(i1+7);
if(m_mode=="WSPR-LF") cmnd=cmnd.replace("/wsprd ","/wspr5d ");
if (ui) ui->DecodeButton->setChecked (true); if (ui) ui->DecodeButton->setChecked (true);
m_cmndP1=QDir::toNativeSeparators(cmnd); m_cmndP1=QDir::toNativeSeparators(cmnd);
p1Timer.start(1000); p1Timer.start(1000);