diff --git a/decode1.F90 b/decode1.F90 index 55fb3afed..950e47a57 100644 --- a/decode1.F90 +++ b/decode1.F90 @@ -28,7 +28,7 @@ subroutine decode1(iarg) newdat2=0 kbuf=1 kk=NSMAX - kkdone=-1 + kkdone=0 newdat=1 endif diff --git a/map65a.f90 b/map65a.f90 index c80ca8884..4a16d8abd 100644 --- a/map65a.f90 +++ b/map65a.f90 @@ -38,6 +38,7 @@ subroutine map65a(newdat) df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz ftol=0.020 !Frequency tolerance (kHz) + fselect=mousefqso + 1.6 nfilt=1 dphi=310/57.2957795 @@ -306,8 +307,8 @@ subroutine map65a(newdat) 999 nagain=0 close(23) if(kbuf.eq.1) kkdone=60*96000 - if(kbuf.eq.2) kkdone=0 + if(kbuf.eq.2 .or. ndiskdat.eq.1) kkdone=0 kk=kkdone - print*,'E ',mod(mid_sec(),60),nutc,kk,kbuf,kkdone,nhsym + print*,'E ',mod(mid_sec(),60),nutc,kk,kbuf,kkdone,ndiskdat return end subroutine map65a diff --git a/recvpkt.F90 b/recvpkt.F90 index c46d0d75e..94c0ee1dd 100644 --- a/recvpkt.F90 +++ b/recvpkt.F90 @@ -12,6 +12,7 @@ subroutine recvpkt(iarg) real*8 d8(NSZ) integer*1 userx_no,iusb integer*2 nblock,nblock0 + integer txnow logical first real*8 center_freq,buf8 common/plrscom/center_freq,msec,fqso,iptr,nblock,userx_no,iusb,buf8(174) @@ -23,104 +24,99 @@ subroutine recvpkt(iarg) data sqave/0.0/,u/0.001/,rxnoise/0.0/,kbuf/1/ save -! Open a socket to receive multicast data from Linrad - call setup_rsocket + call setup_rsocket ! Open socket to receive multicast data nreset=-1 k=0 nsec0=-999 10 call recv_pkt(center_freq) - if(monitoring.eq.1) then - lost=nblock-nblock0-1 - nblock0=nblock - if(lost.ne.0 .and. .not.first) then -! print*,'Lost packets:',nblock,nblock0,lost - nlost=nlost + lost ! Insert zeros for the lost data. - do i=1,174*lost - k=k+1 - d8(k)=0 - enddo - endif - first=.false. + isec=mid_sec() + imin=isec/60 + if((monitoring.eq.0) .or. (lauto.eq.1 .and. mod(imin,2).eq.(1-TxFirst))) then + first=.true. + go to 10 + endif - nsec=msec/1000 - if(mod(nsec,60).eq.1) nreset=1 - if(mod(nsec,60).eq.0 .and. nreset.eq.1) then + lost=nblock-nblock0-1 + nblock0=nblock + + if(lost.ne.0 .and. .not.first) then +! print*,'Lost packets:',nblock,nblock0,lost + nlost=nlost + lost ! Insert zeros for the lost data. + do i=1,174*lost + k=k+1 + d8(k)=0 + enddo + endif + first=.false. + + nsec=msec/1000 + if(mod(nsec,60).eq.1) nreset=1 + if(mod(nsec,60).eq.0 .and. nreset.eq.1) then ! This is the start of a new minute, switch buffers - nreset=0 - kb=3-kb - k=0 - if(kb.eq.2) k=NSMAX - nlost=0 + nreset=0 + kb=3-kb + k=0 + if(kb.eq.2) k=NSMAX + nlost=0 + endif + + if(kb.eq.1 .and. (k+174).gt.NSMAX) go to 20 + if(kb.eq.2 .and. (k+174).gt.2*NSMAX) go to 20 + + sq=0. + do i=1,174 + k=k+1 + d8(k)=buf8(i) + sq=sq + float(int(id(1,k,1)))**2 + float(int(id(1,k,1)))**2 + & + float(int(id(1,k,1)))**2 + float(int(id(1,k,1)))**2 + enddo + sqave=sqave + u*(sq-sqave) + rxnoise=10.0*log10(sqave) - 48.0 + + if(mode.eq.'Measur') then + npkt=npkt+1 + if(npkt.ge.551) then + npkt=0 + nw=nw+1 + write(11,1000) nw,rxnoise +1000 format(i6,f8.2) + call flushqqq(11) + ndecdone=1 + write(24,1000) nw,rxnoise endif + else + nw=0 + endif - if(kb.eq.1 .and. (k+174).gt.NSMAX) go to 20 - if(kb.eq.2 .and. (k+174).gt.2*NSMAX) go to 20 + if(k.lt.1 .or. k.gt.NSZ) then + print*,'Error in recvpkt: ',k,NSZ,NSMAX + stop + endif - if(transmitting.eq.0) then - sq=0. - do i=1,174 - k=k+1 - d8(k)=buf8(i) - sq=sq + float(int(id(1,k,1)))**2 + float(int(id(1,k,1)))**2 + & - float(int(id(1,k,1)))**2 + float(int(id(1,k,1)))**2 - enddo - sqave=sqave + u*(sq-sqave) - rxnoise=10.0*log10(sqave) - 48.0 +20 if(nsec.ne.nsec0) then + mutch=nsec/3600 + mutcm=mod(nsec/60,60) + mutc=100*mutch + mutcm + ns=mod(nsec,60) + nsec0=nsec + ntx=ntx+transmitting + print*,ns,kb,kbuf,k,kk,kkdone - if(mode.eq.'Measur') then - npkt=npkt+1 - if(npkt.ge.551) then - npkt=0 - nw=nw+1 - write(11,1000) nw,rxnoise -1000 format(i6,f8.2) - call flushqqq(11) - ndecdone=1 - write(24,1000) nw,rxnoise - endif - else - nw=0 - endif - - else -! We're transmitting, zero out this packet. - do i=1,174 - k=k+1 - d8(k)=0.d0 - enddo + if(ns.eq.48) then + nutc=mutc + kbuf=kb + kk=k + print*,'A1',mod(mid_sec(),60),nutc,kk,kbuf,kkdone endif - if(k.lt.1 .or. k.gt.NSZ) then - print*,'Error in recvpkt: ',k,NSZ,NSMAX - stop + if(ns.eq.52) then + nutc=mutc + kbuf=kb + kk=k + ndiskdat=0 + print*,'A2',mod(mid_sec(),60),nutc,kk,kbuf,kkdone endif - -20 if(nsec.ne.nsec0) then - mutch=nsec/3600 - mutcm=mod(nsec/60,60) - mutc=100*mutch + mutcm - ns=mod(nsec,60) - nsec0=nsec - ntx=ntx+transmitting -!### -! kk=k -! kbuf=kb -!### - if(ns.eq.48) then - nutc=mutc - kbuf=kb - kk=k - print*,'A1',mod(mid_sec(),60),nutc,kk,kbuf,kkdone - endif - if(ns.eq.52) then - nutc=mutc - kbuf=kb - kk=k - print*,'A2',mod(mid_sec(),60),nutc,kk,kbuf,kkdone - endif - endif - endif go to 10 diff --git a/specjt.py b/specjt.py index c76cdbebb..42e4c5ea0 100644 --- a/specjt.py +++ b/specjt.py @@ -300,7 +300,7 @@ def update(): df_mark() nmark0=nmark.get() - if newspec: Audio.gcom2.ndiskdat=0 +# if newspec: Audio.gcom2.ndiskdat=0 Audio.gcom2.nlines=0 Audio.gcom2.nflat=nflat.get() frange=nfr.get()*2000 diff --git a/symspec.f90 b/symspec.f90 index 29881f0e2..0de6f7e8b 100644 --- a/symspec.f90 +++ b/symspec.f90 @@ -19,7 +19,7 @@ subroutine symspec(id,kbuf,kk,kkdone,nutc,t00,newdat) ntot=322 !Half symbols per transmission ! ntot=279 !Half symbols in 51.8 sec - if(kbuf.ne.kbuf0 .or. kkdone.eq.-1) then + if(kbuf.ne.kbuf0 .or. ndiskdat.eq.1) then kkdone=0 kbuf0=kbuf ts=1.d0 - hsym