mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
Merged changes to wsjt.py, specjt.py from tags/release-5.9.2.
Added README_592.TXT and WSJT592.iss. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@85 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
930a5ab2b1
commit
8b4755d8b7
81
README_592.TXT
Executable file
81
README_592.TXT
Executable file
@ -0,0 +1,81 @@
|
||||
Changes in WSJT 5.9.2: January 10, 2006
|
||||
---------------------------------------
|
||||
|
||||
Enhancements
|
||||
------------
|
||||
|
||||
1. Thread priorities have been adjusted for smoother operation. One
|
||||
result is that there will be fewer audio glitches caused by the
|
||||
Windows O/S paying attention to other programs.
|
||||
|
||||
2. The JT65 decoder has improved immunity to "garbage data," and
|
||||
it exhibits better performance on strong signals.
|
||||
|
||||
3. The FSK441 decoder produces less on-screen gibberish when you do
|
||||
mouse-picked decodes.
|
||||
|
||||
4. The JT6M decoder now makes better use of Freeze and Tol. You can
|
||||
set the value of "Freeze DF" by using the Right/Left arrow keys.
|
||||
|
||||
5. On-screen font sizes can be set by using Windows Notepad to edit
|
||||
the file wsjtrc.win. If your screen has resolution greater than
|
||||
1024 x 768, or if you have old eyes (like mine), you may want to
|
||||
increase the sizes from 8 and 9 (first three lines of the file) to
|
||||
9 and 10, say.
|
||||
|
||||
6. Dividing lines are now provided on the waterfall display between
|
||||
spectra corresponding to wave files read from disk.
|
||||
|
||||
7. The PTT line is explicitly set low on program startup.
|
||||
|
||||
8. The F10 key brings up the SpecJT screen (if it was hidden) and
|
||||
toggles focus between the WSJT and SpecJT screens.
|
||||
|
||||
9. Use the Alt-F keyboard shortcut to toggle "Freeze", and Alt-Z to
|
||||
toggle "Zap".
|
||||
|
||||
10. "Accelerated decoding" HAS BEEN removed from the Setup menu.
|
||||
In effect, it is now always ON.
|
||||
|
||||
|
||||
Bug Fixes:
|
||||
----------
|
||||
1. The use of non-threadsafe code for FFTs caused occasional and
|
||||
unpredictable program crashes. Fixed.
|
||||
|
||||
2. A bug in the JT65 decoder could (rarely) cause large errors in the
|
||||
reported level of strong signals. Fixed.
|
||||
|
||||
3. The program could be made to crash by trying to read a very short
|
||||
wave file. Fixed.
|
||||
|
||||
|
||||
Information for Programmers
|
||||
---------------------------
|
||||
|
||||
WSJT is no longer a one-person effort. It has become a full-fledged
|
||||
Open Source project, with an active working group making contributions
|
||||
to future development. Source code is now stored in a public
|
||||
repository under control of the Subversion (SVN) version control
|
||||
system. You can learn more at
|
||||
http://developer.berlios.de/projects/wsjt/.
|
||||
|
||||
The first significant result of the group effort has been to create
|
||||
versions of WSJT that run under the Linux and FreeBSD operating
|
||||
systems. If you are interested in testing and using WSJT on your own
|
||||
Linux or FreeBSD system, we'd like to hear from you.
|
||||
|
||||
If you feel that you can usefully contribute to the future development
|
||||
of WSJT on any platform, we would also like to hear from you!
|
||||
|
||||
The present WSJT working group consists of:
|
||||
|
||||
Diane Bruce, VA3DB
|
||||
James Courtier-Dutton
|
||||
Bob McGwier, N4HY
|
||||
Jonathan Naylor, ON/G4KLX
|
||||
Stewart Nelson, KK7A
|
||||
Joe Taylor, K1JT
|
||||
Kaj Wiik, OH6EH
|
||||
|
||||
|
24
WSJT592.iss
Executable file
24
WSJT592.iss
Executable file
@ -0,0 +1,24 @@
|
||||
[Setup]
|
||||
AppName=WSJT
|
||||
AppVerName=WSJT Version 5.9.2 r77
|
||||
AppCopyright=Copyright (C) 2001-2005 by Joe Taylor, K1JT
|
||||
DefaultDirName={pf}\WSJT6
|
||||
DefaultGroupName=WSJT6
|
||||
|
||||
[Files]
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\WSJT6.EXE"; DestDir: "{app}"
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\README_592.TXT"; DestDir: "{app}"
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\CALL3.TXT"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\wsjt.ico"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\TSKY.DAT"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\libsamplerate.dll"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\kvasd.exe"; DestDir: "{app}";
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\wsjtrc.win"; DestDir: "{app}";
|
||||
Source: "c:\k1jt\svn\wsjt\release-5.9.2\Tutorial_592.txt"; DestDir: "{app}";
|
||||
Source: "c:\k1jt\python\wsjt\rxwav\samples\W8WN_010809_110400.WAV"; DestDir: "{app}\RxWav\Samples\"; Flags: onlyifdoesntexist
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\WSJT6"; Filename: "{app}\WSJT6.EXE"; WorkingDir: {app}
|
||||
Name: "{userdesktop}\WSJT6"; Filename: "{app}\WSJT6.EXE"; WorkingDir: {app}
|
||||
|
||||
|
34
specjt.py
34
specjt.py
@ -19,8 +19,10 @@ from palettes import colormapblue, colormapgray0, colormapHot, \
|
||||
|
||||
def hidespecjt():
|
||||
root.withdraw()
|
||||
g.showspecjt=0
|
||||
def showspecjt():
|
||||
root.deiconify()
|
||||
g.showspecjt=2
|
||||
|
||||
if(__name__=="__main__"):
|
||||
root = Tk()
|
||||
@ -153,17 +155,18 @@ def df_mark():
|
||||
if g.mode[4:5]=='C': fstep=4*fstep
|
||||
|
||||
# Mark sync tone and top JT65 tone (green) and shorthand tones (red)
|
||||
color='green'
|
||||
x1=(Audio.gcom2.mousedf + 6.6*fstep)/df + 288.7
|
||||
c.create_line(x1-0.5,25,x1-0.5,12,fill=color)
|
||||
c.create_line(x1+0.5,25,x1+0.5,12,fill=color)
|
||||
for i in range(5):
|
||||
x1=(Audio.gcom2.mousedf+i*fstep)/df + 288.7
|
||||
j=12
|
||||
if i>0: j=15
|
||||
if i!=1: c.create_line(x1-0.5,25,x1-0.5,j,fill=color)
|
||||
if i!=1: c.create_line(x1+0.5,25,x1+0.5,j,fill=color)
|
||||
color='red'
|
||||
if g.mode[:4]=="JT65":
|
||||
color='green'
|
||||
x1=(Audio.gcom2.mousedf + 6.6*fstep)/df + 288.7
|
||||
c.create_line(x1-0.5,25,x1-0.5,12,fill=color)
|
||||
c.create_line(x1+0.5,25,x1+0.5,12,fill=color)
|
||||
for i in range(5):
|
||||
x1=(Audio.gcom2.mousedf+i*fstep)/df + 288.7
|
||||
j=12
|
||||
if i>0: j=15
|
||||
if i!=1: c.create_line(x1-0.5,25,x1-0.5,j,fill=color)
|
||||
if i!=1: c.create_line(x1+0.5,25,x1+0.5,j,fill=color)
|
||||
color='red'
|
||||
|
||||
#---------------------------------------------------- decode_request
|
||||
def decode_request(event):
|
||||
@ -202,9 +205,8 @@ def update():
|
||||
if isec==0: nscroll=0
|
||||
if isec==59: newMinute=1
|
||||
|
||||
if g.showspecjt:
|
||||
if g.showspecjt==1:
|
||||
showspecjt()
|
||||
g.showspecjt=0
|
||||
nspeed=nspeed0.get() #Waterfall update rate
|
||||
if (nspeed<6 and nspeed00>=6) or (nspeed>=6 and nspeed00<6):
|
||||
draw_axis()
|
||||
@ -279,6 +281,9 @@ def update():
|
||||
nfreeze0=int(Audio.gcom2.nfreeze)
|
||||
|
||||
if g.mode!=mode0:
|
||||
if g.mode[:4]=="JT65" and nspeed0.get()>5: nspeed0.set(3)
|
||||
if g.mode=="FSK441" and nspeed0.get()<6: nspeed0.set(6)
|
||||
if g.mode=="JT6M" and nspeed0.get()<6: nspeed0.set(6)
|
||||
draw_axis()
|
||||
mode0=g.mode
|
||||
|
||||
@ -289,6 +294,8 @@ def update():
|
||||
if newdat: Audio.gcom2.ndiskdat=0
|
||||
Audio.gcom2.nlines=0
|
||||
Audio.gcom2.nflat=nflat.get()
|
||||
if g.focus==2:
|
||||
root.focus_set()
|
||||
ltime.after(200,update) #Reset the timer
|
||||
|
||||
#-------------------------------------------------------- draw_axis
|
||||
@ -484,6 +491,7 @@ Audio.audio_init(ndevin,ndevout) #Start the audio stream
|
||||
ltime.after(200,update)
|
||||
|
||||
root.deiconify()
|
||||
g.showspecjt=2
|
||||
if g.Win32: root.iconbitmap("wsjt.ico")
|
||||
root.title(' SpecJT by K1JT')
|
||||
if(__name__=="__main__"):
|
||||
|
45
wsjt.py
45
wsjt.py
@ -1,4 +1,4 @@
|
||||
#----------------------------------------------------------- WSJT
|
||||
#------------------------------------------------------------ WSJT
|
||||
from Tkinter import *
|
||||
from tkFileDialog import *
|
||||
import Pmw
|
||||
@ -95,9 +95,18 @@ g.freeze_decode=0
|
||||
g.mode=""
|
||||
g.ndevin=IntVar()
|
||||
g.ndevout=IntVar()
|
||||
g.focus=0
|
||||
#------------------------------------------------------ showspecjt
|
||||
def showspecjt(event=NONE):
|
||||
g.showspecjt=1
|
||||
if g.showspecjt>0:
|
||||
if g.focus>=1:
|
||||
root.focus_set()
|
||||
g.focus=0
|
||||
else:
|
||||
g.focus=2
|
||||
else:
|
||||
g.focus=2
|
||||
g.showspecjt=1
|
||||
|
||||
#------------------------------------------------------ restart
|
||||
def restart():
|
||||
@ -113,6 +122,10 @@ def restart2():
|
||||
def toggle_freeze(event=NONE):
|
||||
nfreeze.set(1-nfreeze.get())
|
||||
|
||||
#------------------------------------------------------ toggle_zap
|
||||
def toggle_zap(event=NONE):
|
||||
nzap.set(1-nzap.get())
|
||||
|
||||
#------------------------------------------------------ btx (1-6)
|
||||
def btx1(event=NONE):
|
||||
ntx.set(1)
|
||||
@ -668,10 +681,10 @@ Alt-A Toggle Auto On/Off
|
||||
Alt-D Decode
|
||||
Alt-E Erase
|
||||
Alt-F Toggle Freeze
|
||||
Alt-G Generate Standard Messages
|
||||
Alt-G Generate Standard Messages
|
||||
Alt-I Include
|
||||
Alt-L Lookup
|
||||
CTRL-L Lookup, then Generate Standard Messages
|
||||
Alt-L Lookup
|
||||
CTRL-L Lookup, then Generate Standard Messages
|
||||
Alt-M Monitor
|
||||
Alt-O Tx Stop
|
||||
Alt-P Play
|
||||
@ -679,6 +692,8 @@ Alt-Q Log QSO
|
||||
Alt-S Stop Monitoring or Decoding
|
||||
Alt-V Save Last
|
||||
Alt-X Exclude
|
||||
Alt-Z Toggle Zap
|
||||
Right/Left Arrow Increase/decrease Freeze DF
|
||||
"""
|
||||
Label(scwid,text=t,justify=LEFT).pack(padx=20)
|
||||
scwid.focus_set()
|
||||
@ -692,15 +707,15 @@ def mouse_commands(event=NONE):
|
||||
Click on Action
|
||||
--------------------------------------------------------
|
||||
Waterfall FSK441/JT6M: click to decode ping
|
||||
JT65: Click to set DF for Freeze
|
||||
JT65: Click to set DF for Freeze
|
||||
Double-click to Freeze and Decode
|
||||
|
||||
Main screen, FSK441/JT6M: click to decode ping
|
||||
graphics area JT65: Click to set DF for Freeze
|
||||
Double-click to Freeze and Decode
|
||||
Double-click to Freeze and Decode
|
||||
|
||||
Main screen, Double-click puts callsign in Tx messages
|
||||
text area Right-double-click also sets Auto ON
|
||||
text area Right-double-click also sets Auto ON
|
||||
|
||||
Sync, Clip, Left/Right click to increase/decrease
|
||||
Tol, ...
|
||||
@ -976,11 +991,15 @@ def mouse_up_g1(event):
|
||||
|
||||
#------------------------------------------------------ right_arrow
|
||||
def right_arrow(event=NONE):
|
||||
Audio.gcom2.mousedf=Audio.gcom2.mousedf+10
|
||||
n=5*int(Audio.gcom2.mousedf/5) + 5
|
||||
if n==Audio.gcom2.mousedf: n=n+5
|
||||
Audio.gcom2.mousedf=n
|
||||
|
||||
#------------------------------------------------------ left_arrow
|
||||
def left_arrow(event=NONE):
|
||||
Audio.gcom2.mousedf=Audio.gcom2.mousedf-10
|
||||
n=5*int(Audio.gcom2.mousedf/5)
|
||||
if n==Audio.gcom2.mousedf: n=n-5
|
||||
Audio.gcom2.mousedf=n
|
||||
|
||||
#------------------------------------------------------ GenStdMsgs
|
||||
def GenStdMsgs(event=NONE):
|
||||
@ -1665,6 +1684,8 @@ root.bind_all('<Alt-v>',savelast)
|
||||
root.bind_all('<Alt-V>',savelast)
|
||||
root.bind_all('<Alt-x>',decode_exclude)
|
||||
root.bind_all('<Alt-X>',decode_exclude)
|
||||
root.bind_all('<Alt-z>',toggle_zap)
|
||||
root.bind_all('<Alt-Z>',toggle_zap)
|
||||
root.bind_all('<Control-l>',lookup_gen)
|
||||
root.bind_all('<Control-L>',lookup_gen)
|
||||
root.bind_all('<Left>',left_arrow)
|
||||
@ -1759,11 +1780,11 @@ lsync.grid(column=0,row=0,padx=2,pady=1,sticky='EW')
|
||||
Widget.bind(lsync,'<Button-1>',incsync)
|
||||
Widget.bind(lsync,'<Button-3>',decsync)
|
||||
nzap=IntVar()
|
||||
cbzap=Checkbutton(f5b,text='Zap',variable=nzap)
|
||||
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',variable=nfreeze)
|
||||
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')
|
||||
|
Loading…
Reference in New Issue
Block a user