2007-06-26 11:20:28 -04:00
|
|
|
program pulsar
|
|
|
|
|
|
|
|
! Receives timf2 data from Linrad and saves it for pulsar processing.
|
|
|
|
|
|
|
|
parameter (NSPP=174)
|
|
|
|
logical first
|
|
|
|
integer*1 userx_no,iusb
|
|
|
|
integer*2 id
|
|
|
|
integer*2 nblock,nblock0
|
|
|
|
integer*2 id2(1000)
|
|
|
|
real*8 center_freq
|
|
|
|
common/plrscom/center_freq,msec,fselect,iptr,nblock,userx_no,iusb,id(4,NSPP)
|
|
|
|
! 8 4 4 4 2 1 1 1392
|
|
|
|
data first/.true./,nblock0/0/,sqave/0.0/,u/0.001/
|
|
|
|
save
|
|
|
|
|
|
|
|
call setup_rsocket
|
|
|
|
|
|
|
|
k=0
|
|
|
|
|
|
|
|
10 call recv_pkt(center_freq)
|
|
|
|
lost=nblock-nblock0-1
|
|
|
|
if(lost.ne.0 .and. .not.first) print*,'Lost packets:',lost,nblock,nblock0
|
|
|
|
nblock0=nblock
|
|
|
|
|
|
|
|
sq=0.
|
|
|
|
do i=1,NSPP
|
2007-06-26 22:28:25 -04:00
|
|
|
sq=sq + float(int(id(1,i)))**2 + float(int(id(2,i)))**2 + &
|
|
|
|
float(int(id(3,i)))**2 + float(int(id(4,i)))**2
|
2007-06-26 11:20:28 -04:00
|
|
|
enddo
|
|
|
|
sqave=sqave + u*(sq-sqave)
|
|
|
|
rxnoise=10.0*log10(sqave) - 48.0
|
|
|
|
|
|
|
|
k=k+1
|
|
|
|
id2(k)=0.001*sq
|
|
|
|
if(k.eq.1000) then
|
2007-06-26 22:28:25 -04:00
|
|
|
write(*,1000) center_freq,0.001*msec,nblock,sqave,rxnoise,id2(1)
|
|
|
|
write(13,1000) center_freq,0.001*msec,nblock,sqave,rxnoise,id2(1)
|
|
|
|
1000 format(f7.3,f11.3,i7,f10.0,f8.2,i8)
|
|
|
|
write(12) center_freq,msec,nblock,id2
|
2007-06-26 11:20:28 -04:00
|
|
|
call flush(12)
|
|
|
|
call flush(13)
|
|
|
|
k=0
|
|
|
|
endif
|
|
|
|
|
|
|
|
go to 10
|
|
|
|
|
|
|
|
end program pulsar
|
|
|
|
|
|
|
|
! To compile: % gfortran -o pulsar pulsar.f90 plrr_subs.c
|