From 19f806b2ef7717910c558dc161c2f16e160622d8 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 2 Jul 2007 19:17:07 +0000 Subject: [PATCH] Many tweaks to user interface. Included "ndepth" adjustments of deep search. Changed name of bandmap -> messages, bandmap2 -> bandmap. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@456 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- decode1a.f | 9 ++-- decode65b.f | 13 +++--- deep65.F | 3 +- ftn_init.F90 | 16 +++---- map65.py | 118 +++++++++++++++++++-------------------------------- map65a.f90 | 3 +- 6 files changed, 66 insertions(+), 96 deletions(-) diff --git a/decode1a.f b/decode1a.f index f5b8abcc7..ea9e2ac99 100644 --- a/decode1a.f +++ b/decode1a.f @@ -1,5 +1,6 @@ - subroutine decode1a(id,newdat,nfilt,freq,nflip,dphi,ipol, - + sync2,a,dt,pol,nkv,nhist,qual,decoded) + subroutine decode1a(id,newdat,nfilt,freq,nflip, + + mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi, + + ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) C Apply AFC corrections to a candidate JT65 signal, and then try C to decode it. @@ -21,6 +22,7 @@ C to decode it. integer resample logical first character decoded*22 + character mycall*12,hiscall*12,hisgrid*6 data first/.true./,jjjmin/1000/,jjjmax/-1000/ save @@ -124,7 +126,8 @@ C Adding or subtracting a small number (e.g., 5) to j may make it decode. enddo flip=nflip - call decode65b(s2,flip,nkv,nhist,qual,decoded) + call decode65b(s2,flip,mycall,hiscall,hisgrid,neme,ndepth, + + nqd,nkv,nhist,qual,decoded) dt=dt00 + dtbest return diff --git a/decode65b.f b/decode65b.f index d0146ae8e..ec0dab467 100644 --- a/decode65b.f +++ b/decode65b.f @@ -1,4 +1,5 @@ - subroutine decode65b(s2,flip,nkv,nhist,qual,decoded) + subroutine decode65b(s2,flip,mycall,hiscall,hisgrid,neme,ndepth, + + nqd,nkv,nhist,qual,decoded) real s2(256,126) real s3(64,63) @@ -36,14 +37,9 @@ C Suppress "birdie messages": qual=0. ! if(nkv.eq.0) then - mycall='K1JT' - hiscall='W1ABC' - hisgrid='EM79' - neme=0 - nsked=0 - ndepth=5 if(ndepth.ge.1) call deep65(s3,mode65,neme, - + nsked,flip,mycall,hiscall,hisgrid,deepmsg,qual) + + flip,mycall,hiscall,hisgrid,deepmsg,qual) + if(nqd.ne.1 .and. qual.lt.10.0) qual=0.0 C Save symbol spectra for possible decoding of average. ! do j=1,63 @@ -51,6 +47,7 @@ C Save symbol spectra for possible decoding of average. ! if(flip.lt.0.0) k=mdat2(j) ! call move(s2(8,k),ppsave(1,j,nsave),64) ! enddo + ! endif if(nkv.eq.0 .and. qual.ge.1.0) decoded=deepmsg diff --git a/deep65.F b/deep65.F index a64b2ee08..595fef997 100644 --- a/deep65.F +++ b/deep65.F @@ -1,4 +1,4 @@ - subroutine deep65(s3,mode65,neme,nsked,flip,mycall,hiscall, + subroutine deep65(s3,mode65,neme,flip,mycall,hiscall, + hisgrid,decoded,qual) parameter (MAXCALLS=7000,MAXRPT=63) @@ -100,7 +100,6 @@ C Insert CQ message call encode65(message,ncode(1,k)) nflip(k)=flip enddo - if(nsked.eq.1) go to 20 10 continue enddo 20 ntot=k diff --git a/ftn_init.F90 b/ftn_init.F90 index 7e341d178..871429deb 100644 --- a/ftn_init.F90 +++ b/ftn_init.F90 @@ -9,8 +9,8 @@ ! 16 c:/wsjt.reg ! 17 wave files written to disk ! 18 test file to be transmitted (wsjtgen.f90) -! 19 bandmap.txt -! 20 bandmap2.txt +! 19 messages.txt +! 20 bandmap.txt ! 21 ALL65.TXT ! 22 kvasd.dat ! 23 CALL3.TXT @@ -73,19 +73,19 @@ subroutine ftn_init #endif #ifdef Win32 - open(19,file=appdir(:iz)//'/bandmap.txt',status='unknown', & + open(19,file=appdir(:iz)//'/messages.txt',status='unknown', & share='denynone',err=911) #else - open(19,file=appdir(:iz)//'/bandmap.txt',status='unknown', & + open(19,file=appdir(:iz)//'/messages.txt',status='unknown', & err=911) #endif endfile 19 #ifdef Win32 - open(20,file=appdir(:iz)//'/bandmap2.txt',status='unknown', & + open(20,file=appdir(:iz)//'/bandmap.txt',status='unknown', & share='denynone',err=912) #else - open(20,file=appdir(:iz)//'/bandmap2.txt',status='unknown', & + open(20,file=appdir(:iz)//'/bandmap.txt',status='unknown', & err=912) #endif endfile 20 @@ -135,9 +135,9 @@ subroutine ftn_init 910 print*,'Error opening DECODED.TXT' stop -911 print*,'Error opening bandmap.txt' +911 print*,'Error opening messages.txt' stop -912 print*,'Error opening bandmap2.txt' +912 print*,'Error opening bandmap.txt' stop 920 print*,'Error opening DECODED.AVE' stop diff --git a/map65.py b/map65.py index aae04aff8..6cf92b0dd 100644 --- a/map65.py +++ b/map65.py @@ -1,4 +1,4 @@ -#--------------------------------------------------------------------- MAP65 +#-------------------------------------------------------------------- MAP65 # $Date$ $Revision$ # from Tkinter import * @@ -82,7 +82,6 @@ nopen=0 nosh441=IntVar() noshjt65=IntVar() setseq=IntVar() -textheight=7 tx6alt="" txsnrdb=99. TxFirst=IntVar() @@ -167,8 +166,8 @@ def testmsgs(): tx5.insert(0,"@1000") tx6.insert(0,"@2000") -#------------------------------------------------------ bandmap -def bandmap(event=NONE): +#------------------------------------------------------ +def messages(event=NONE): global Version,bm,bm_geom,bmtext bm=Toplevel(root) bm.title("Messages") @@ -187,8 +186,8 @@ def bandmap(event=NONE): bmtext.tag_configure('age3',foreground='gray50') iframe_bm1.pack(expand=1, fill=X, padx=4) -#------------------------------------------------------ bandmap2 -def bandmap2(event=NONE): +#------------------------------------------------------ bandmap +def bandmap(event=NONE): global Version,bm2,bm2_geom,bm2text bm2=Toplevel(root) bm2.title("Band Map") @@ -518,23 +517,19 @@ def cleartext(): #------------------------------------------------------ ModeJT65 def ModeJT65(): - global isync,textheight,itol + global isync,itol cleartext() Audio.gcom1.trperiod=60 iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4) - textheight=7 - text.configure(height=textheight) bclravg.configure(state=NORMAL) binclude.configure(state=NORMAL) bexclude.configure(state=NORMAL) - graph2.configure(bg='#66FFFF') itol=4 inctol() nfreeze.set(0) ntx.set(1) GenStdMsgs() erase() -# graph2.pack_forget() #------------------------------------------------------ ModeJT65A def ModeJT65A(event=NONE): @@ -607,13 +602,12 @@ Shift+F6 Decode all wave files in directory F8 Set JT65A mode Shift+F8 Set JT65B mode Ctrl+F8 Set JT65C mode -F10 Show SpecJT +F10 Show Waterfall Shift+F10 Show astronomical data Alt+1 to Alt+6 Tx1 to Tx6 Alt+A Toggle Auto On/Off Alt+D Decode Alt+E Erase -Alt+F Toggle Freeze Alt+G Generate Standard Messages Ctrl+G Generate Alternate JT65 Messages Alt+I Include @@ -624,7 +618,6 @@ Alt+O Tx Stop Alt+Q Log QSO Alt+S Stop Monitoring or Decoding Alt+X Exclude -Alt+Z Toggle Zap Right/Left Arrow Increase/decrease Freeze DF """ Label(scwid,text=t,justify=LEFT).pack(padx=20) @@ -638,17 +631,14 @@ def mouse_commands(event=NONE): t=""" Click on Action -------------------------------------------------------- -Waterfall Click to set DF for Freeze - Double-click to Freeze and Decode +Waterfall (upper) Click to set QSO frequency; double-click to set + QSO frequency and Decode -Main screen, Click to set DF for Freeze -graphics area Double-click to Freeze and Decode +Waterfall (lower) Click to set target DF; double-click to set + target DF and Decode -Main screen, Double-click puts callsign in Tx messages -text area Right-double-click also sets Auto ON - -Sync, Clip, Left/Right click to increase/decrease -Tol, ... +Main screen, Double-click puts callsign in Tx messages +text area """ Label(scwid,text=t,justify=LEFT).pack(padx=20) scwid.focus_set() @@ -753,14 +743,12 @@ def decdsec(event): #------------------------------------------------------ erase def erase(event=NONE): - graph1.delete(ALL) text.configure(state=NORMAL) text.delete('1.0',END) text.configure(state=DISABLED) avetext.configure(state=NORMAL) avetext.delete('1.0',END) avetext.configure(state=DISABLED) - lab3.configure(text=" ") Audio.gcom2.decodedfile=" " #------------------------------------------------------ clear_avg def clear_avg(event=NONE): @@ -952,13 +940,17 @@ def update(): if len(HisGrid.get().strip())<4: g.ndop=g.ndop00 g.dfdt=g.dfdt0 - - graph2.delete(ALL) - graph2.create_text(80,13,anchor=CENTER,text="Moon",font=g2font) - graph2.create_text(13,37,anchor=W, text="Az: %6.2f" % g.AzMoon,font=g2font) - graph2.create_text(13,61,anchor=W, text="El: %6.2f" % g.ElMoon,font=g2font) - graph2.create_text(13,85,anchor=W, text="Dop:%6d" % g.ndop,font=g2font) - graph2.create_text(13,109,anchor=W,text="Dgrd:%5.1f" % g.Dgrd,font=g2font) + astrotext.delete(1.0,END) + astrotext.insert(END,' Moon\n') + astrotext.insert(END,"Az: %7.1f\n" % g.AzMoon) + astrotext.insert(END,"El: %7.1f\n" % g.ElMoon) + astrotext.insert(END,"DxAz: %5.1f\n" % g.AzMoonB) + astrotext.insert(END,"DxEl: %5.1f\n" % g.ElMoonB) + astrotext.insert(END,' Sun\n') + astrotext.insert(END,"Az: %7.1f\n" % g.AzSun) + astrotext.insert(END,"El: %7.1f\n\n" % g.ElSun) + astrotext.insert(END,"Dop:%7d\n" % g.ndop) + astrotext.insert(END,"Dgrd:%6.1f\n" % g.Dgrd) if g.freeze_decode and mode.get()[:4]=='JT65': itol=5 @@ -976,10 +968,8 @@ def update(): g.freeze_decode=0 t=g.ftnstr(Audio.gcom2.decodedfile) -# i=t.rfind(".") i=g.rfnd(t,".") t=t[:i] - lab3.configure(text=t) if mode.get() != g.mode or first: msg2.configure(bg='#00FFFF') g.mode=mode.get() @@ -1093,7 +1083,7 @@ def update(): if Audio.gcom2.ndecdone==2: try: - f=open(appdir+'/bandmap.txt',mode='r') + f=open(appdir+'/messages.txt',mode='r') lines=f.readlines() f.close() except: @@ -1116,7 +1106,7 @@ def update(): bmtext.see(END) try: - f=open(appdir+'/bandmap2.txt',mode='r') + f=open(appdir+'/bandmap.txt',mode='r') lines=f.readlines() f.close() except: @@ -1249,8 +1239,8 @@ viewmenu=Menu(viewbutton,tearoff=0) viewbutton['menu']=viewmenu viewmenu.add('command', label = 'SpecJT', command = showspecjt, \ accelerator='F10') -viewmenu.add('command', label = 'Band Map 1', command = bandmap) -viewmenu.add('command', label = 'Band Map 2', command = bandmap2) +viewmenu.add('command', label = 'Messages', command = messages) +viewmenu.add('command', label = 'Band Map', command = bandmap) viewmenu.add('command', label = 'Astronomical data', command = astro1, \ accelerator='Shift+F10') @@ -1288,8 +1278,8 @@ decodemenu.add_radiobutton(label = 'Normal Deep Search', variable=ndepth, value=1) decodemenu.add_radiobutton(label = 'Aggressive Deep Search', variable=ndepth, value=2) -decodemenu.add_radiobutton(label ='Include Average in Aggressive Deep Search', - variable=ndepth, value=3) +#decodemenu.add_radiobutton(label ='Include Average in Aggressive Deep Search', +# variable=ndepth, value=3) #------------------------------------------------------ Save menu savebutton = Menubutton(mbar, text = 'Save') @@ -1331,43 +1321,17 @@ helpmenu.add('command', label = 'Available suffixes and add-on prefixes', \ helpmenu.add('command', label = 'About MAP65', command = about, \ accelerator='Ctrl+F1') -#------------------------------------------------------ Graphics areas -iframe1 = Frame(frame, bd=1, relief=SUNKEN) -graph1=Canvas(iframe1, bg='black', width=500, height=120,cursor='crosshair') -Widget.bind(graph1,"",dtdf_change) -Widget.bind(graph1,"",mouse_click_g1) -Widget.bind(graph1,"",double_click_g1) -Widget.bind(graph1,"",mouse_up_g1) -Widget.bind(graph1,"",mouse_click_g1) -graph1.pack(side=LEFT) -graph2=Canvas(iframe1, bg='black', width=150, height=120,cursor='crosshair') -graph2.pack(side=LEFT) -g2font=graph2.option_get("font","font") -if g2font!="": g.g2font=g2font -iframe1.pack(expand=1, fill=X, padx=4) - #------------------------------------------------------ Labels under graphics -iframe2a = Frame(frame, bd=1, relief=FLAT, height=15) -lab1=Label(iframe2a, text='Time (s)') -lab1.place(x=250, y=6, anchor=CENTER) -lab3=Label(iframe2a, text=' ') -lab3.place(x=400,y=6, anchor=CENTER) -iframe2a.pack(expand=1, fill=X, padx=1) iframe2 = Frame(frame, bd=1, relief=FLAT,height=15) -#lab2=Label(iframe2, text=' UTC dB DT DF W') lab2=Label(iframe2, text='Freq DF Pol UTC dB DT W') lab2.place(x=3,y=6, anchor='w') -lab6=Label(iframe2a,text='0.0',bg='green') -lab6.place(x=40,y=6, anchor=CENTER) -lab7=Label(iframe2a,text='F3',fg='gray85') +lab7=Label(iframe2,text='F3',fg='gray85') lab7.place(x=495,y=6, anchor=CENTER) -lab8=Label(iframe2a,text='1.0000 1.0000',fg='gray85') -lab8.place(x=135,y=6, anchor=CENTER) iframe2.pack(expand=1, fill=X, padx=4) #-------------------------------------------------------- Decoded text -iframe4 = Frame(frame, bd=1, relief=SUNKEN) -text=Text(iframe4, height=6, width=80) +iframe4 = Frame(frame, bd=2, relief=SUNKEN) +text=Text(iframe4, height=16, width=65) text.bind('',dbl_click_text) #text.bind('',dbl_click_text) text.bind('',textkey) @@ -1434,11 +1398,18 @@ root.bind_all('',lookup_gen) text.pack(side=LEFT, fill=X, padx=1) sb = Scrollbar(iframe4, orient=VERTICAL, command=text.yview) -sb.pack(side=RIGHT, fill=Y) +sb.pack(side=LEFT, fill=Y) text.configure(yscrollcommand=sb.set) + +astrotext_font='"Lucida Console" 16' +astrotext=Text(iframe4, bg="#66FFFF",height=10,width=11,font=astrotext_font) +astrotext.pack(side=LEFT, fill=BOTH, padx=4) +g2font=astrotext_font +if g2font!="": g.g2font=g2font + iframe4.pack(expand=1, fill=X, padx=4) -iframe4b = Frame(frame, bd=1, relief=SUNKEN) -avetext=Text(iframe4b, height=2, width=80) +iframe4b = Frame(frame, bd=2, relief=SUNKEN) +avetext=Text(iframe4b, height=2, width=65) avetext.bind('',dbl_click_ave) #avetext.bind('',dbl_click_ave) avetext.bind('',avetextkey) @@ -1467,7 +1438,6 @@ btxstop=Button(iframe4c,text='TxStop',underline=4,command=txstop, padx=1,pady=1) blogqso.pack(side=LEFT,expand=1,fill=X) -#bplay.pack(side=LEFT,expand=1,fill=X) bstop.pack(side=LEFT,expand=1,fill=X) bmonitor.pack(side=LEFT,expand=1,fill=X) bdecode.pack(side=LEFT,expand=1,fill=X) @@ -1728,8 +1698,8 @@ monitor() first=1 if g.Win32: root.iconbitmap("wsjt.ico") root.title(' MAP65 by K1JT') +messages() bandmap() -bandmap2() import astro import specjt diff --git a/map65a.f90 b/map65a.f90 index fcd8e095e..9f5c38856 100644 --- a/map65a.f90 +++ b/map65a.f90 @@ -156,7 +156,8 @@ subroutine map65a(newdat) if(freq-freq0.gt.ftol .or. sync1.gt.sync10 .and. nqd.eq.0) then nflip=nint(flipk) - call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip,dphi, & + call decode1a(id(1,1,kbuf),newdat,nfilt,freq,nflip, & + mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi, & ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) km=km+1 sig(km,1)=nfile