diff --git a/Makefile.win b/Makefile.win index f2d77a0e7..42f0285da 100644 --- a/Makefile.win +++ b/Makefile.win @@ -18,7 +18,7 @@ SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \ decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \ runqqq.f90 fivehz.f90 flushqqq.f90 map65a0.f90 \ rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.F90 \ - getfile.f90 getfile2.f90 recvpkt.f90 + getfile.f90 getfile2.f90 recvpkt.f90 savetf2.f90 SRCS2F77 = indexx.f gen65.f chkmsg.f \ gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ diff --git a/decode2.f90 b/decode2.f90 deleted file mode 100644 index e8c62fcc5..000000000 --- a/decode2.f90 +++ /dev/null @@ -1,102 +0,0 @@ -!---------------------------------------------------- decode2 -subroutine decode2 - -! Get data and parameters from gcom, then call the decoders - - character fnamex*24 - - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom3.f90' - include 'gcom4.f90' - -! ndecoding data Action -!-------------------------------------- -! 0 Idle -! 1 d2a Standard decode, full file -! 2 y1 Mouse pick, top half -! 3 y1 Mouse pick, bottom half -! 4 d2c Decode recorded file -! 5 d2a Mouse pick, main window - - lenpick=22050 !Length of FSK441 mouse-picked region - if(mode(1:4).eq.'JT6M') then - lenpick=4*11025 - if(mousebutton.eq.3) lenpick=10*11025 - endif - - istart=1.0 + 11025*0.001*npingtime - lenpick/2 - if(mode(1:4).eq.'JT6M') istart=istart+11025 - if(istart.lt.2) istart=2 - if(ndecoding.eq.1) then -! Normal decoding at end of Rx period (or at t=53s in JT65) - istart=1 - call decode3(d2a,jza,istart,fnamea) - else if(ndecoding.eq.2) then - -! Mouse pick, top half of waterfall -! The following is empirical: - k=2048*ibuf0 + istart - 11025*mod(tbuf(ibuf0),dble(trperiod)) -3850 - if(k.le.0) k=k+NRxMax - if(k.gt.NrxMax) k=k-NRxMax - nt=ntime/86400 - nt=86400*nt + tbuf(ibuf0) - if(receiving.eq.0) nt=nt-trperiod - call get_fname(hiscall,nt,trperiod,lauto,fnamex) - do i=1,lenpick - k=k+1 - if(k.gt.NrxMax) k=k-NRxMax - d2b(i)=dgain*y1(k) - enddo - call decode3(d2b,lenpick,istart,fnamex) - else if(ndecoding.eq.3) then - -!Mouse pick, bottom half of waterfall - ib0=ibuf0-161 - if(lauto.eq.1 .and. mute.eq.0 .and. transmitting.eq.1) ib0=ibuf0-323 - if(ib0.lt.1) ib0=ib0+1024 - k=2048*ib0 + istart - 11025*mod(tbuf(ib0),dble(trperiod)) - 3850 - if(k.le.0) k=k+NRxMax - if(k.gt.NrxMax) k=k-NRxMax - nt=ntime/86400 - nt=86400*nt + tbuf(ib0) - call get_fname(hiscall,nt,trperiod,lauto,fnamex) - do i=1,lenpick - k=k+1 - if(k.gt.NrxMax) k=k-NRxMax - d2b(i)=dgain*y1(k) - enddo - call decode3(d2b,lenpick,istart,fnamex) - -!Recorded file - else if(ndecoding.eq.4) then - jzz=jzc - if(mousebutton.eq.0) istart=1 - if(mousebutton.gt.0) then - jzz=lenpick - -! This is a major kludge: - if(mode(1:4).eq.'JT6M') then - jzz=4*11025 - if(mousebutton.eq.3) jzz=10*11025 - else - istart=istart + 3300 - jzz/2 - endif - - if(istart.lt.2) istart=2 - if(istart+jzz.gt.jzc) istart=jzc-jzz - endif - call decode3(d2c(istart),jzz,istart,filename) - - else if(ndecoding.eq.5) then -! Mouse pick, main window (but not from recorded file) - istart=istart - 1512 - if(istart.lt.2) istart=2 - if(istart+lenpick.gt.jza) istart=jza-lenpick - call decode3(d2a(istart),lenpick,istart,fnamea) - endif - fnameb=fnamea - - return - -end subroutine decode2 diff --git a/decode3.F90 b/decode3.F90 deleted file mode 100644 index fdb2245cc..000000000 --- a/decode3.F90 +++ /dev/null @@ -1,83 +0,0 @@ -!---------------------------------------------------- decode3 -subroutine decode3(d2,jz,istart,filename) - -#ifdef Win32 - use dfport -#endif - - integer*2 d2(jz),d2d(65*11025) - character*24 filename - character FileID*40 - include 'gcom1.f90' - include 'gcom2.f90' - - if(ichar(filename(1:1)).eq.0) go to 999 - - FileID=filename - decodedfile=filename - lumsg=11 - nqrn=nclip+5 - nmode=1 - if(mode(1:4).eq.'JT65') then - nmode=2 - if(mode(5:5).eq.'A') mode65=1 - if(mode(5:5).eq.'B') mode65=2 - if(mode(5:5).eq.'C') mode65=4 - endif - if(mode.eq.'Echo') nmode=3 - if(mode.eq.'JT6M') nmode=4 - - sum=0. - do i=1,jz - sum=sum+d2(i) - enddo - nave=nint(sum/jz) - do i=1,jz - d2(i)=d2(i)-nave - d2d(i)=d2(i) - enddo - - nseg=1 - if(mode(1:4).eq.'JT65') then - i=index(FileID,'.')-3 - if(FileID(i:i).eq.'1'.or.FileID(i:i).eq.'3'.or.FileID(i:i).eq.'5' & - .or.FileID(i:i).eq.'7'.or.FileID(i:i).eq.'9') nseg=2 - endif - - open(23,file=appdir(:lenappdir)//'/CALL3.TXT',status='unknown') - if(nadd5.eq.1) then - nzero=5*11025 - do i=jz,nzero+1,-1 - d2d(i)=d2d(i-nzero) - enddo - do i=1,nzero - d2d(i)=0 - enddo - jz=min(60*11025,jz+nzero) - endif -! call wsjt1(d2d,jz,istart,samfacin,FileID,ndepth,MinSigdB, & -! NQRN,DFTolerance,MouseButton,NClearAve, & -! nMode,NFreeze,NAFC,NZap,mode65,idf, & -! MyCall,HisCall,HisGrid,neme,nsked,ntx2,s2, & -! ps0,npkept,lumsg,basevb,rmspower,nslim2,psavg,ccf,Nseg, & -! MouseDF,NAgain,LDecoded,nspecial,ndf,ss1,ss2) - basevb=-999. - close(23) - if(basevb.le.-98.0) go to 999 - -! See whether this file should be saved or erased from disk - if(nsave.eq.1 .and. ldecoded) filetokilla='' - if(nsave.eq.3 .or. (nsave.eq.2 .and. lauto.eq.1)) then - filetokilla='' - filetokillb='' - endif - if(nsavelast.eq.1) filetokillb='' - nsavelast=0 - ierr=unlink(filetokillb) - - nclearave=0 - nagain=0 - call pix2d65(d2d,jz) - -999 return -end subroutine decode3 diff --git a/ftn_init.F90 b/ftn_init.F90 index e6e5009fb..7e341d178 100644 --- a/ftn_init.F90 +++ b/ftn_init.F90 @@ -14,6 +14,9 @@ ! 21 ALL65.TXT ! 22 kvasd.dat ! 23 CALL3.TXT +! 24 meas24.dat +! 25 meas25.dat +! 26 tmp26.tmp !------------------------------------------------ ftn_init subroutine ftn_init @@ -108,10 +111,17 @@ subroutine ftn_init #endif #ifdef Win32 - open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', & + open(24,file=appdir(:iz)//'/meas24.txt',status='unknown', & share='denynone') #else - open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown') + open(24,file=appdir(:iz)//'/meas24.txt',status='unknown') +#endif + +#ifdef Win32 + open(25,file=appdir(:iz)//'/meas25.txt',status='unknown', & + share='denynone') +#else + open(25,file=appdir(:iz)//'/meas25.txt',status='unknown') #endif #ifdef Win32 diff --git a/gcom2.f90 b/gcom2.f90 index 3bd96e218..b5fd37ed6 100644 --- a/gcom2.f90 +++ b/gcom2.f90 @@ -29,7 +29,6 @@ logical LDecoded !Was a message decoded? Decoder logical rxdone !Has the Rx sequence finished? SoundIn,Decoder integer monitoring !Are we monitoring? GUI integer nzap !Is Zap checked? GUI -integer nsavecum !(why is this here?) integer minsigdb !Decoder threshold setting GUI integer nclearave !Set to 1 to clear JT65 avg GUI,Decoder integer nfreeze !Is Freeze checked? GUI @@ -50,7 +49,6 @@ integer nsked !Sked mode for deep search? GUI integer naggressive !Is "Aggressive decoding" checked? GUI integer ntx2 !Is "No shorthands if Tx1" checked? GUI integer nagain !Decode same file again? GUI -integer nsavelast !Save last file? GUI integer shok !Shorthand messages OK? GUI integer sendingsh !Sending a shorthand message? SoundIn integer*2 d2a !Rx data, extracted from y1 Decoder @@ -94,9 +92,9 @@ common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), & green(500),fselect,pctlost,rxnoise,ngreen,dgain,iter,ndecoding, & ndecoding0,mousebutton, & ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, & - dftolerance,LDecoded,rxdone,monitoring,nzap,nsavecum,minsigdb, & - nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,nblank,nport, & - mousedf,mousefqso,neme,nsked,naggressive,ntx2,nagain,nsavelast, & + dftolerance,LDecoded,rxdone,monitoring,nzap,minsigdb, & + nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,nblank, & + nport,mousedf,mousefqso,neme,nsked,naggressive,ntx2,nagain, & shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, & idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow,& ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), & diff --git a/map65.py b/map65.py index b9331e112..64cefb267 100644 --- a/map65.py +++ b/map65.py @@ -73,14 +73,13 @@ ncall=0 ndmiles=0 ndkm=0 ndebug=IntVar() +ndebug.set(0) neme=IntVar() nfreeze=IntVar() nopen=0 nosh441=IntVar() noshjt65=IntVar() -#nsked=IntVar() setseq=IntVar() -slabel="Sync " textheight=7 tx6alt="" txsnrdb=99. @@ -515,20 +514,15 @@ def cleartext(): #------------------------------------------------------ ModeJT65 def ModeJT65(): - global slabel,isync,textheight,itol + global isync,textheight,itol cleartext() Audio.gcom1.trperiod=60 iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4) textheight=7 text.configure(height=textheight) - slabel="Sync " - lsync.configure(text=slabel+str(isync)) bclravg.configure(state=NORMAL) binclude.configure(state=NORMAL) bexclude.configure(state=NORMAL) - cbfreeze.configure(state=NORMAL) - cbafc.configure(state=NORMAL) -# sked.configure(state=NORMAL) graph2.configure(bg='#66FFFF') itol=4 inctol() @@ -722,36 +716,6 @@ def azdist(): else: labDist.configure(text=str(int(1.609344*ndmiles))+" km") -#------------------------------------------------------ incsync -def incsync(event): - global isync - if isync<10: - isync=isync+1 - lsync.configure(text=slabel+str(isync)) - -#------------------------------------------------------ decsync -def decsync(event): - global isync - if isync>-30: - isync=isync-1 - lsync.configure(text=slabel+str(isync)) - -#------------------------------------------------------ incclip -def incclip(event): - global iclip - if iclip<5: - iclip=iclip+1 - if iclip==5: iclip=99 - lclip.configure(text='Clip '+str(iclip)) - -#------------------------------------------------------ decclip -def decclip(event): - global iclip - if iclip>-5: - iclip=iclip-1 - if iclip==98: iclip=4 - lclip.configure(text='Clip '+str(iclip)) - #------------------------------------------------------ inctol def inctol(event=NONE): global itol @@ -804,16 +768,6 @@ def clear_avg(event=NONE): f.close() Audio.gcom2.nclearave=1 -#------------------------------------------------------ defaults -def defaults(): - global slabel,isync,iclip,itol,idsec - isync=1 - iclip=0 - lclip.configure(text='Clip '+str(iclip)) - itol=5 - ltol.configure(text='Tol '+str(ntol[itol])) - lsync.configure(text=slabel+str(isync)) - #------------------------------------------------------ delwav def delwav(): t="Are you sure you want to delete\nall *.WAV files in the RxWav directory?" @@ -882,8 +836,8 @@ def double_click_g1(event): g.freeze_decode=1 #------------------------------------------------------ mouse_up_g1 -#(### What is this for? ###) def mouse_up_g1(event): +# This is a fix for certain mouse-clicks pass #------------------------------------------------------ right_arrow @@ -952,154 +906,6 @@ def GenAltMsgs(event=NONE): tx6.insert(0,tx6alt.upper()) altmsg=1 - -#------------------------------------------------------ plot_large -def plot_large(): - "Plot the green, red, and blue curves in JT65 mode." - graph1.delete(ALL) - y=[] - ngreen=Audio.gcom2.ngreen - if ngreen>0: - for i in range(ngreen): #Find ymax for green curve - green=Audio.gcom2.green[i] - y.append(green) - ymax=max(y) - if ymax<1: ymax=1 - yfac=4.0 - if ymax>75.0/yfac: yfac=75.0/ymax - xy=[] - for i in range(ngreen): #Make xy list for green curve - green=Audio.gcom2.green[i] - n=int(105.0-yfac*green) - xy.append(i) - xy.append(n) - graph1.create_line(xy,fill="green") - - if Audio.gcom2.nspecial==0: - y=[] - for i in range(446): #Find ymax for red curve - psavg=Audio.gcom2.psavg[i+1] - y.append(psavg) - ymax=max(y) - yfac=30.0 - if ymax>85.0/yfac: yfac=85.0/ymax - xy=[] - fac=500.0/446.0 - for i in range(446): #Make xy list for red curve - x=i*fac - psavg=Audio.gcom2.psavg[i+1] - n=int(90.0-yfac*psavg) - xy.append(x) - xy.append(n) - graph1.create_line(xy,fill="red") - else: - y1=[] - y2=[] - for i in range(446): #Find ymax for magenta/orange curves - ss1=Audio.gcom2.ss1[i+1] - y1.append(ss1) - ss2=Audio.gcom2.ss2[i+1] - y2.append(ss2) - ymax=max(y1+y2) - yfac=30.0 - if ymax>85.0/yfac: yfac=85.0/ymax - xy1=[] - xy2=[] - fac=500.0/446.0 - for i in range(446): #Make xy list for magenta/orange curves - x=i*fac - ss1=Audio.gcom2.ss1[i+1] - n=int(90.0-yfac*ss1) - xy1.append(x) - xy1.append(n) - ss2=Audio.gcom2.ss2[i+1] - n=int(90.0-yfac*ss2) - 20 - xy2.append(x) - xy2.append(n) - graph1.create_line(xy1,fill="magenta") - graph1.create_line(xy2,fill="orange") - - x1 = 250.0 + fac*Audio.gcom2.ndf/2.6916504 - x2 = x1 + Audio.gcom2.mode65*Audio.gcom2.nspecial*10*fac - graph1.create_line([x1,85,x1,95],fill="yellow") - graph1.create_line([x2,85,x2,95],fill="yellow") - t="RO" - if Audio.gcom2.nspecial==3: t="RRR" - if Audio.gcom2.nspecial==4: t="73" - graph1.create_text(x2+3,93,anchor=W,text=t,fill="yellow") - - if Audio.gcom2.ccf[0] != -9999.0: - y=[] - for i in range(65): #Find ymax for blue curve - ccf=Audio.gcom2.ccf[i] - y.append(ccf) - ymax=max(y) - yfac=40.0 - if ymax>55.0/yfac: yfac=55.0/ymax - xy2=[] - fac=500.0/64.6 - for i in range(65): #Make xy list for blue curve - x=(i+0.5)*fac - ccf=Audio.gcom2.ccf[i] - n=int(60.0-yfac*ccf) - xy2.append(x) - xy2.append(n) - graph1.create_line(xy2,fill='#33FFFF') - -# Put in the tick marks - for i in range(13): - x=int(i*41.667) - j2=115 - if i==1 or i==6 or i==11: j2=110 - graph1.create_line([x,j2,x,125],fill="red") - if Audio.gcom2.nspecial==0: -# x=int((i-0.8)*41.667) - j1=9 - if i==2 or i==7 or i==12: j1=14 - graph1.create_line([x,0,x,j1],fill="#33FFFF") #light blue - else: - graph1.create_line([x,0,x,125-j2],fill="red") - -#------------------------------------------------------ plot_small -def plot_small(): - graph2.delete(ALL) - xy=[] - xy2=[] - df=11025.0/256.0 - fac=150.0/3500.0 - for i in range(81): - x=int(i*df*fac) - xy.append(x) - psavg=Audio.gcom2.psavg[i] - n=int(150.0-2*psavg) - xy.append(n) - graph2.create_line(xy,fill="magenta") - for i in range(7): - x=i*500*fac - ytop=110 - if i%2: ytop=115 - graph2.create_line([x,120,x,ytop],fill="white") - -#------------------------------------------------------ plot_yellow -def plot_yellow(): - nz=int(Audio.gcom2.ps0[215]) - if nz>10: - y=[] - for i in range(nz): #Find ymax for yellow curve - n=Audio.gcom2.ps0[i] - y.append(n) - ymax=max(y) - fac=1.0 - if ymax>60: fac=60.0/ymax - xy2=[] - for i in range(nz): - x=int(2.34*i) - y=fac*Audio.gcom2.ps0[i] + 8 - n=int(85.0-y) - xy2.append(x) - xy2.append(n) - graph1.create_line(xy2,fill="yellow") - #------------------------------------------------------ update def update(): global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen, \ @@ -1227,7 +1033,6 @@ def update(): if Audio.gcom1.transmitting: nmsg=int(Audio.gcom2.nmsg) t=g.ftnstr(Audio.gcom2.sending) -# if t[:3]=="CQ ": nsked.set(0) t="Txing: "+t[:nmsg] bgcolor='yellow' if Audio.gcom2.sendingsh==1: bgcolor='#66FFFF' #Shorthand (lt blue) @@ -1334,8 +1139,6 @@ def update(): im.putpalette(g.palette) cmap0=g.cmap -# plot_large() - # Save some parameters g.mode=mode.get() Audio.gcom1.txfirst=TxFirst.get() @@ -1347,8 +1150,6 @@ def update(): Audio.gcom1.samfacout=options.samfacout.get() except: Audio.gcom1.samfacout=1.0 -# if Audio.gcom1.samfacin>1.01: Audio.gcom1.samfacin=1.01 -# ... etc. Audio.gcom2.mycall=(options.MyCall.get()+' ')[:12] Audio.gcom2.hiscall=(ToRadio.get()+' ')[:12] Audio.gcom2.hisgrid=(HisGrid.get()+' ')[:6] @@ -1368,7 +1169,6 @@ def update(): Audio.gcom2.dftolerance=ntol[itol] Audio.gcom2.neme=neme.get() Audio.gcom2.ndepth=ndepth.get() -# Audio.gcom2.nsked=nsked.get() try: Audio.gcom2.idinterval=options.IDinterval.get() except: @@ -1382,14 +1182,9 @@ def update(): Audio.gcom2.nport=int(options.PttPort.get()) except: Audio.gcom2.nport=0 - -# print 'About to init Audio.gcom2.PttPort in save some parameters' Audio.gcom2.pttport=(options.PttPort.get() + ' ')[:12] -# print Audio.gcom2.pttport - if altmsg: tx6alt=tx6.get() -# Queue up the next update - ldate.after(100,update) + ldate.after(100,update) # Queue up the next update #------------------------------------------------------ Top level frame frame = Frame(root) @@ -1431,8 +1226,6 @@ setupmenu.add_checkbutton(label = 'F4 sets Tx6',variable=kb8rq) setupmenu.add_checkbutton(label = 'Double-click on callsign sets TxFirst', variable=setseq) setupmenu.add_checkbutton(label = 'GenStdMsgs sets Tx1',variable=k2txb) -setupmenu.add_separator() -setupmenu.add_checkbutton(label = 'Enable diagnostics',variable=ndebug) #------------------------------------------------------ View menu viewbutton=Menubutton(mbar,text='View') @@ -1458,11 +1251,11 @@ modebutton['menu'] = modemenu # state=modemenu.entrycget(0,"state") modemenu.add_radiobutton(label = 'JT65A', variable=mode, command = ModeJT65A, \ - accelerator='F8') + state=DISABLED, accelerator='F8') modemenu.add_radiobutton(label = 'JT65B', variable=mode, command = ModeJT65B, \ accelerator='Shift+F8') modemenu.add_radiobutton(label = 'JT65C', variable=mode, command = ModeJT65C, \ - accelerator='Ctrl+F8') + state=DISABLED, accelerator='Ctrl+F8') #------------------------------------------------------ Decode menu decodebutton = Menubutton(mbar, text = 'Decode') @@ -1488,9 +1281,9 @@ savemenu = Menu(savebutton, tearoff=1) savebutton['menu'] = savemenu nsave=IntVar() savemenu.add_radiobutton(label = 'None', variable=nsave,value=0) -savemenu.add_radiobutton(label = 'Save decoded', variable=nsave,value=1) -savemenu.add_radiobutton(label = 'Save if Auto On', variable=nsave,value=2) -savemenu.add_radiobutton(label = 'Save all', variable=nsave,value=3) +savemenu.add_radiobutton(label = 'Save timf2', variable=nsave,value=1) +savemenu.add_radiobutton(label = 'Measure', variable=nsave,value=2) +savemenu.add_radiobutton(label = 'Pulsar', variable=nsave,value=3) nsave.set(0) #------------------------------------------------------ Band menu @@ -1701,29 +1494,11 @@ f5a.pack(side=LEFT,expand=1,fill=BOTH) #------------------------------------------------------ Receiving parameters f5b=Frame(iframe5,bd=2,relief=GROOVE) -lsync=Label(f5b, bg='white', fg='black', text='Sync 1', width=8, relief=RIDGE) -lsync.grid(column=0,row=0,padx=2,pady=1,sticky='EW') -Widget.bind(lsync,'',incsync) -Widget.bind(lsync,'',decsync) nzap=IntVar() -cbzap=Checkbutton(f5b,text='Zap',underline=0,variable=nzap) -cbzap.grid(column=1,row=0,padx=2,pady=1,sticky='W') -cbnb=Checkbutton(f5b,text='NB',variable=nblank) -cbnb.grid(column=1,row=1,padx=2,pady=1,sticky='W') -cbfreeze=Checkbutton(f5b,text='Freeze',underline=0,variable=nfreeze) -cbfreeze.grid(column=1,row=2,padx=2,sticky='W') -cbafc=Checkbutton(f5b,text='AFC',variable=nafc) -cbafc.grid(column=1,row=3,padx=2,pady=1,sticky='W') -lclip=Label(f5b, bg='white', fg='black', text='Clip 0', width=8, relief=RIDGE) -lclip.grid(column=0,row=1,padx=2,sticky='EW') -Widget.bind(lclip,'',incclip) -Widget.bind(lclip,'',decclip) ltol=Label(f5b, bg='white', fg='black', text='Tol 400', width=8, relief=RIDGE) ltol.grid(column=0,row=2,padx=2,pady=1,sticky='EW') Widget.bind(ltol,'',inctol) Widget.bind(ltol,'',dectol) -Button(f5b,text='Defaults',command=defaults,padx=1,pady=1).grid(column=0, - row=3,sticky='EW') ldsec=Label(f5b, bg='white', fg='black', text='Dsec 0.0', width=8, relief=RIDGE) ldsec.grid(column=0,row=4,ipadx=3,padx=2,pady=5,sticky='EW') Widget.bind(ldsec,'',incdsec) @@ -1735,7 +1510,6 @@ f5b.pack(side=LEFT,expand=1,fill=BOTH) f5c=Frame(iframe5,bd=2,relief=GROOVE) txfirst=Checkbutton(f5c,text='Tx First',justify=RIGHT,variable=TxFirst) f5c2=Frame(f5c,bd=0) -#sked=Checkbutton(f5c,text='Sked',justify=RIGHT,variable=nsked) genmsg=Button(f5c,text='GenStdMsgs',underline=0,command=GenStdMsgs, padx=1,pady=1) auto=Button(f5c,text='Auto is Off',underline=0,command=toggleauto, @@ -1923,8 +1697,6 @@ except: print key,value g.mode=mode.get() -lsync.configure(text=slabel+str(isync)) -lclip.configure(text='Clip '+str(iclip)) Audio.gcom2.appdir=(appdir+' ')[:80] Audio.gcom2.ndepth=ndepth.get() f=open(appdir+'/tmp26.txt','w') @@ -1988,13 +1760,11 @@ f.write("Clip " + str(iclip) + "\n") f.write("Zap " + str(nzap.get()) + "\n") f.write("NB " + str(nblank.get()) + "\n") f.write("NAFC " + str(nafc.get()) + "\n") -#f.write("Sked " + str(nsked.get()) + "\n") f.write("NoSh441 " + str(nosh441.get()) + "\n") f.write("NoShJT65 " + str(noshjt65.get()) + "\n") f.write("NEME " + str(neme.get()) + "\n") f.write("NDepth " + str(ndepth.get()) + "\n") f.write("Debug " + str(ndebug.get()) + "\n") -#f.write("TRPeriod " + str(Audio.gcom1.trperiod) + "\n") mrudir2=mrudir.replace(" ","#") f.write("MRUDir " + mrudir2 + "\n") if g.astro_geom[:7]=="200x200": g.astro_geom="316x373" + g.astro_geom[7:] diff --git a/map65a.f90 b/map65a.f90 index 81556bf34..cdc65778f 100644 --- a/map65a.f90 +++ b/map65a.f90 @@ -41,27 +41,9 @@ subroutine map65a write(utcdata,1002) nutc 1002 format(i4.4) utcdata=utcdata(1:2)//':'//utcdata(3:4) - - fselect=mousefqso + 1.6 - -! fselect=126.0 + 1.6 + 0.290 ! K6MYC (NG??) -! nflip=-1 -! ip0=1 - -! fselect=128.0 + 1.6 + 0.220 ! AA1YN (OK) -! nflip=1 -! ip0=3 - -! fselect=155.0 + 1.6 + 0.454 ! N0AKC (OK) -! nflip=1 -! ip0=2 - -! fselect=103 + 1.6 - 0.07 -! nflip=-1 !May need to try both +/- 1 -! ip0=4 !Try all four? - open(23,file='CALL3.TXT',status='old') + fselect=mousefqso + 1.6 df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz fa=0.0 fb=60000.0 @@ -320,6 +302,8 @@ subroutine map65a enddo call display ndecdone=2 + + if(nsave.gt.0) call savetf2(id(1,1,kbuf),nsave,nutc) 999 newdat2=0 nagain=0 diff --git a/savedata.F90 b/savedata.F90 deleted file mode 100644 index 06ae8d028..000000000 --- a/savedata.F90 +++ /dev/null @@ -1,133 +0,0 @@ -!----------------------------------------------------------- savedata -subroutine savedata - -#ifdef Win32 - use dfport -#endif - - character fname*24,longname*80 - data ibuf0z/1/ - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom3.f90' - save - - if(mode(1:4).eq.'JT65') then - call get_fname(hiscall,ntime,trperiod,lauto,fname0) - ibuf1=ibuf0 - ibuf2=ibuf - go to 1 - else - call get_fname(hiscall,ntime-trperiod,trperiod,lauto,fname0) - endif - - if(ibuf0.eq.ibuf0z) go to 999 !Startup condition, do not save - if(ntrbuf(ibuf0z).eq.1) go to 999 !We were transmitting, do not save - -! Get buffer pointers, then copy completed Rx sequence from y1 to d2a: - ibuf1=ibuf0z - ibuf2=ibuf0-1 -1 jza=2048*(ibuf2-ibuf1) - if(jza.lt.0) jza=jza+NRxMax - if(jza.lt.110250) go to 999 !Don't save files less than 10 s - if(jza.gt.60*11025) go to 999 !Don't save if something's fishy - k=2048*(ibuf1-1) - if(mode(1:4).ne.'JT65') k=k+3*2048 - if(mode(1:4).ne.'JT65' .and. jza.gt.30*11025) then - k=k + (jza-30*11025) - if(k.gt.NRxMax) k=k-NRxMax - jza=30*11025 - endif - -! Check timestamps of buffers used for this data - msbig=0 - i=k/2048 - if(msmax.eq.0) i=i+1 - nz=jza/2048 - if(msmax.eq.0) then - i=i+1 - nz=nz-1 - endif - do n=1,nz - i=i+1 - if(i.gt.1024) i=i-1024 - i0=i-1 - if(i0.lt.1) i0=i0+1024 - dtt=tbuf(i)-tbuf(i0) - ms=0 - if(dtt.gt.0.d0 .and. dtt.lt.80000.0) ms=1000.d0*dtt - msbig=max(ms,msbig) - enddo - - if(ndebug.gt.0 .and. msbig.gt.msmax .and. msbig.gt.330) then - write(*,1020) msbig -1020 format('Warning: interrupt service interval',i11,' ms.') - endif - msmax=max(msbig,msmax) - - do i=1,jza - k=k+1 - if(k.gt.NRxMax) k=k-NRxMax - xx=dgain*y1(k) - xx=min(32767.0,max(-32767.0,xx)) - d2a(i)=nint(xx) - enddo - fnamea=fname0 - - npingtime=0 - fname=fnamea !Save filename for output to disk - nagain=0 - ndecoding=1 !Request decoding - -! Generate file name and write data to file -! if(nsave.ge.2 .and. ichar(fname(1:1)).ne.0) then - if(ichar(fname(1:1)).ne.0) then - -! Generate header for wavefile: - ariff='RIFF' - awave='WAVE' - afmt='fmt ' - adata='data' - lenfmt=16 - nfmt2=1 - nchan2=1 - nsamrate=11025 - nbytesam2=2 - nbytesec=nchan2*nsamrate*nbytesam2 - nbitsam2=16 - ndata=2*jza - nbytes=ndata+44 - nchunk=nbytes-8 - - do i=80,1,-1 - if(appdir(i:i).ne.' ') go to 10 - enddo -10 longname=AppDir(1:i)//'/RxWav/'//fname - -#ifdef Win32 - open(17,file=longname,status='unknown',form='binary',err=20) - write(17) ariff,nchunk,awave,afmt,lenfmt,nfmt2,nchan2,nsamrate, & - nbytesec,nbytesam2,nbitsam2,adata,ndata,(d2a(j),j=1,jza) - close(17) -#else - open(17,file=longname,status='unknown',form='unformatted', & - access='direct',recl=nbytes,err=20) - write(17,rec=1) ariff,nchunk,awave,afmt,lenfmt,nfmt2,nchan2,nsamrate, & - nbytesec,nbytesam2,nbitsam2,adata,ndata,(d2a(j),j=1,jza) - close(17) -#endif - filetokillb=filetokilla - filetokilla=longname - go to 30 -20 print*,'Error opening Fortran unit 17.' - print*,longname -30 continue - endif - -999 if(mode(1:4).ne.'JT65') then - ibuf0z=ibuf0 - call get_fname(hiscall,ntime,trperiod,lauto,fname0) - endif - - return -end subroutine savedata diff --git a/specjt.py b/specjt.py index e88ff1d64..0c9a46e96 100644 --- a/specjt.py +++ b/specjt.py @@ -142,7 +142,6 @@ def ftnstr(x): #---------------------------------------------------- df_mark def df_mark(): draw_axis() -# if nmark.get()==0 or Audio.gcom2.nfreeze: # Mark QSO freq in top graph color='green' df=96.0/750.0 @@ -176,30 +175,6 @@ def freq_range(event): if fmid<1000*nfr.get(): fmid=1000*nfr.get() if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get() -#def set_frange(): -# nfr.set(3-nfr.get()) - -#---------------------------------------------------- freq_center -##def freq_center(event): -### Move clicked location to center of frequency scale -## global fmid,frange -## n=100*int(0.01*df*(event.x-375)) -## fmid = fmid + n -## if fmid<1000: fmid=1000 -## if fmid>1700: fmid=1700 - -#---------------------------------------------------- decode_request -##def decode_request(event): -## if g.mode[:4]!='JT65' and nspeed0.get()>5: -### If decoder is busy or we are not monitoring, ignore request -## if Audio.gcom2.ndecoding==0 and Audio.gcom2.monitoring: -## Audio.gcom2.mousebutton=event.num #Left=1, Right=3 -## Audio.gcom2.npingtime=int(40*event.x) #Time (ms) of selected ping -## if event.y <= 150: -## Audio.gcom2.ndecoding=2 #Mouse pick, top half -## else: -## Audio.gcom2.ndecoding=3 #Mouse pick, bottom half - #---------------------------------------------------- freeze_decode def freeze_decode(event): # If decoder is busy or we are not monitoring, ignore request @@ -318,7 +293,6 @@ def update(): if(fmid<>fmid0 or frange<>frange0): if fmid<1000*nfr.get(): fmid=1000*nfr.get() if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get() -# draw_axis() df_mark() fmid0=fmid frange0=frange @@ -367,12 +341,6 @@ def draw_axis(): c2.create_text(x,y,text=str(ix)) c2.create_line(i,25,i,j,fill='black') -# tol=Audio.gcom2.dftolerance -# x1=(Audio.gcom2.mousedf-tol)/xdf2 + 0.5*NX -# x2=(Audio.gcom2.mousedf+tol)/xdf2 + 0.5*NX -# c2.create_line(x1,25,x2,25,fill='green',width=2) - - #-------------------------------------------------------- Create GUI widgets #-------------------------------------------------------- Menu bar @@ -382,34 +350,23 @@ frame.pack() mbar = Frame(frame) mbar.pack(fill=X) -#--------------------------------------------------------- Options menu -setupbutton = Menubutton(mbar, text = 'Options', ) +#--------------------------------------------------------- Palette menu +setupbutton = Menubutton(mbar, text = 'Palette', ) setupbutton.pack(side = LEFT) -setupmenu = Menu(setupbutton, tearoff=1) +setupmenu = Menu(setupbutton,tearoff=0) setupbutton['menu'] = setupmenu -setupmenu.add_checkbutton(label='Flatten spectra',variable=nflat) -setupmenu.add_checkbutton(label='Mark JT65 tones only if Freeze is checked', - variable=nmark) -setupmenu.add_separator() -setupmenu.add_radiobutton(label='Frequency axis',command=df_mark, - value=0,variable=naxis) -setupmenu.add_radiobutton(label='JT65 DF axis',command=df_mark, - value=1,variable=naxis) -setupmenu.add_separator() -setupmenu.palettes=Menu(setupmenu,tearoff=0) -setupmenu.palettes.add_radiobutton(label='Gray0',command=pal_gray0, +setupmenu.add_radiobutton(label='Gray0',command=pal_gray0, value=0,variable=npal) -setupmenu.palettes.add_radiobutton(label='Gray1',command=pal_gray1, +setupmenu.add_radiobutton(label='Gray1',command=pal_gray1, value=1,variable=npal) -setupmenu.palettes.add_radiobutton(label='Linrad',command=pal_linrad, +setupmenu.add_radiobutton(label='Linrad',command=pal_linrad, value=2,variable=npal) -setupmenu.palettes.add_radiobutton(label='Blue',command=pal_blue, +setupmenu.add_radiobutton(label='Blue',command=pal_blue, value=3,variable=npal) -setupmenu.palettes.add_radiobutton(label='Hot',command=pal_Hot, +setupmenu.add_radiobutton(label='Hot',command=pal_Hot, value=4,variable=npal) -setupmenu.palettes.add_radiobutton(label='AFMHot',command=pal_AFMHot, +setupmenu.add_radiobutton(label='AFMHot',command=pal_AFMHot, value=5,variable=npal) -setupmenu.add_cascade(label = 'Palette',menu=setupmenu.palettes) lab1=Label(mbar,padx=20,bd=0) lab1.pack(side=LEFT) @@ -420,17 +377,9 @@ fdf2.pack(side=LEFT) lab3=Label(mbar,padx=13,bd=0) lab3.pack(side=LEFT) -#bbw=Button(mbar,text='BW',command=set_frange,padx=1,pady=1) -#bbw.pack(side=LEFT) lab0=Label(mbar,padx=10,bd=0) lab0.pack(side=LEFT) -#bfmid1=Button(mbar,text='<',command=change_fmid1,padx=1,pady=1) -#bfmid2=Button(mbar,text='>',command=change_fmid2,padx=1,pady=1) -#bfmid3=Button(mbar,text='|',command=set_fmid,padx=3,pady=1) -#bfmid1.pack(side=LEFT) -#bfmid3.pack(side=LEFT) -#bfmid2.pack(side=LEFT) #------------------------------------------------- Speed selection buttons for i in (5, 4, 3, 2, 1): @@ -446,13 +395,10 @@ c.pack(side=TOP) Widget.bind(c,"",freq_range) Widget.bind(c,"",freq_range) Widget.bind(c,"",freq_range) -#Widget.bind(c,"",freq_center) graph1=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair') graph1.pack(side=TOP) Widget.bind(graph1,"",fdf_change) -#Widget.bind(graph1,"",decode_request) -#Widget.bind(graph1,"",decode_request) Widget.bind(graph1,"",set_fqso) Widget.bind(graph1,"",freeze_decode) iframe1.pack(expand=1, fill=X) @@ -462,7 +408,6 @@ c2.pack(side=TOP) Widget.bind(c2,"",freq_range) Widget.bind(c2,"",freq_range) Widget.bind(c2,"",freq_range) -#Widget.bind(c2,"",freq_center) graph2=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair') graph2.pack(side=TOP)