mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-29 04:42:28 -04:00
- remove CRLF
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@196 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
ee414f517f
commit
cb77c96b21
@ -1,283 +1,283 @@
|
|||||||
WSJT DEVELOPMENT OVERVIEW
|
WSJT DEVELOPMENT OVERVIEW
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
1 Introduction
|
1 Introduction
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
WSJT is a computer program designed to facilitate Amateur Radio
|
WSJT is a computer program designed to facilitate Amateur Radio
|
||||||
communication under extreme weak-signal conditions. Three very
|
communication under extreme weak-signal conditions. Three very
|
||||||
different coding and modulation methods are provided: one for
|
different coding and modulation methods are provided: one for
|
||||||
communication by "meteor scatter" techniques on the VHF bands; one for
|
communication by "meteor scatter" techniques on the VHF bands; one for
|
||||||
meteor and ionospheric scatter, primarily on the 6 meter band; and one
|
meteor and ionospheric scatter, primarily on the 6 meter band; and one
|
||||||
for the very challenging EME (Earth-Moon-Earth) path.
|
for the very challenging EME (Earth-Moon-Earth) path.
|
||||||
|
|
||||||
|
|
||||||
2 Program Overview
|
2 Program Overview
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
WSJT's user interface is written in Python. The major Python
|
WSJT's user interface is written in Python. The major Python
|
||||||
source-code files include:
|
source-code files include:
|
||||||
|
|
||||||
1. wsjt.py Defines the main-screen GUI for user interactions;
|
1. wsjt.py Defines the main-screen GUI for user interactions;
|
||||||
acts as "traffic cop" for orchestrating all
|
acts as "traffic cop" for orchestrating all
|
||||||
event-driven and time-shared activities.
|
event-driven and time-shared activities.
|
||||||
|
|
||||||
2. specjt.py Provides real-time display of received signals as
|
2. specjt.py Provides real-time display of received signals as
|
||||||
two-dimensional "waterfall" spectra.
|
two-dimensional "waterfall" spectra.
|
||||||
|
|
||||||
3. options.py Provides entry fields for user-defined parameters.
|
3. options.py Provides entry fields for user-defined parameters.
|
||||||
|
|
||||||
4. astro.py Displays astronomical data for sun, moon, sky
|
4. astro.py Displays astronomical data for sun, moon, sky
|
||||||
temperature, etc.
|
temperature, etc.
|
||||||
|
|
||||||
Smaller Python files serve various utility purposes.
|
Smaller Python files serve various utility purposes.
|
||||||
|
|
||||||
Both wsjt.py and specjt.py make calls to external procedures compiled
|
Both wsjt.py and specjt.py make calls to external procedures compiled
|
||||||
from Fortran and C. A variety of global data is shared among modules
|
from Fortran and C. A variety of global data is shared among modules
|
||||||
through common blocks defined in Fortran. The Python code runs in a
|
through common blocks defined in Fortran. The Python code runs in a
|
||||||
single thread, although timers make the functions of the several main
|
single thread, although timers make the functions of the several main
|
||||||
modules appear concurrent. Fortran routines create additional threads
|
modules appear concurrent. Fortran routines create additional threads
|
||||||
to be used for soundcard I/O and the decoding of received messages.
|
to be used for soundcard I/O and the decoding of received messages.
|
||||||
|
|
||||||
As a small part of its overall task, the decoder for JT65 invokes an
|
As a small part of its overall task, the decoder for JT65 invokes an
|
||||||
external program named KVASD.EXE or KVASD, located in the main
|
external program named KVASD.EXE or KVASD, located in the main
|
||||||
WSJT directory. If this program is present it uses information on
|
WSJT directory. If this program is present it uses information on
|
||||||
received 64-FSK symbols and attempts to decipher it according to a
|
received 64-FSK symbols and attempts to decipher it according to a
|
||||||
Reed Solomon (63,12) code, using the algebraic soft-decision algorithm
|
Reed Solomon (63,12) code, using the algebraic soft-decision algorithm
|
||||||
of Koetter and Vardy. If KVASD is not present, WSJT uses its own
|
of Koetter and Vardy. If KVASD is not present, WSJT uses its own
|
||||||
internal hard-decision Reed Solomon decoder instead. Interprocess
|
internal hard-decision Reed Solomon decoder instead. Interprocess
|
||||||
communication between WSJT and KVASD takes place through a shared disk
|
communication between WSJT and KVASD takes place through a shared disk
|
||||||
file. KVASD is not an integral part of WSJT. Its algorithm is
|
file. KVASD is not an integral part of WSJT. Its algorithm is
|
||||||
patented, and the source code is the property of CodeVector
|
patented, and the source code is the property of CodeVector
|
||||||
Technologies, LLC. However, compiled versions of KVASD may be freely
|
Technologies, LLC. However, compiled versions of KVASD may be freely
|
||||||
used in conjunction with WSJT for the purposes of amateur radio
|
used in conjunction with WSJT for the purposes of amateur radio
|
||||||
weak-signal communication.
|
weak-signal communication.
|
||||||
|
|
||||||
|
|
||||||
3 Some Functional Details
|
3 Some Functional Details
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
WSJT execution starts at the top of Python file wsjt.py. The
|
WSJT execution starts at the top of Python file wsjt.py. The
|
||||||
other Python modules are loaded and executed as needed. Fortran
|
other Python modules are loaded and executed as needed. Fortran
|
||||||
routines are called to start a high-priority thread to handle
|
routines are called to start a high-priority thread to handle
|
||||||
continuous A/D and D/A streams, and a background thread to decode
|
continuous A/D and D/A streams, and a background thread to decode
|
||||||
received or previously recorded signals. The top-level Python
|
received or previously recorded signals. The top-level Python
|
||||||
code determines the overall state of program operation, e.g.,
|
code determines the overall state of program operation, e.g.,
|
||||||
Idle, Monitoring, or Transmitting. In normal usage the operator
|
Idle, Monitoring, or Transmitting. In normal usage the operator
|
||||||
puts the program into Auto mode, resulting in a timed sequence of
|
puts the program into Auto mode, resulting in a timed sequence of
|
||||||
alternating transmission and reception intervals.
|
alternating transmission and reception intervals.
|
||||||
|
|
||||||
|
|
||||||
4 Other Open-Source Software used in WSJT
|
4 Other Open-Source Software used in WSJT
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
WSJT 5.9 uses the following open source libraries:
|
WSJT 5.9 uses the following open source libraries:
|
||||||
|
|
||||||
1. FFTW, by Matteo Frigo and Steven Johnson, for computing Fourier
|
1. FFTW, by Matteo Frigo and Steven Johnson, for computing Fourier
|
||||||
transforms
|
transforms
|
||||||
|
|
||||||
2. PortAudio, by Ross Bencina and Phil Burk, for audio I/O
|
2. PortAudio, by Ross Bencina and Phil Burk, for audio I/O
|
||||||
|
|
||||||
3. "Secret Rabbit Code" or "libsamplerate", by Erik de Castro, for
|
3. "Secret Rabbit Code" or "libsamplerate", by Erik de Castro, for
|
||||||
accomplishing band-limited resampling of data
|
accomplishing band-limited resampling of data
|
||||||
|
|
||||||
4. RS, by Phil Karn, KA9Q, for Reed Solomon encoding and
|
4. RS, by Phil Karn, KA9Q, for Reed Solomon encoding and
|
||||||
hard-decision decoding.
|
hard-decision decoding.
|
||||||
|
|
||||||
|
|
||||||
5 Platform-Dependent Notes
|
5 Platform-Dependent Notes
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
The Python code should run on any supported Python platform. Most of
|
The Python code should run on any supported Python platform. Most of
|
||||||
the remaining code can be compiled for Linux, FreeBSD, unix, or OS/X,
|
the remaining code can be compiled for Linux, FreeBSD, unix, or OS/X,
|
||||||
as well as Windows. Platform-dependent versions of FFTW, PortAudio,
|
as well as Windows. Platform-dependent versions of FFTW, PortAudio,
|
||||||
and libsamplerate may need to be installed.
|
and libsamplerate may need to be installed.
|
||||||
|
|
||||||
Methods are provided for creating additional threads and setting their
|
Methods are provided for creating additional threads and setting their
|
||||||
runtime priorities in Windows, Linux, and FreeBSD.
|
runtime priorities in Windows, Linux, and FreeBSD.
|
||||||
|
|
||||||
|
|
||||||
6 Partial List of Functions and Subroutines, and their purposes
|
6 Partial List of Functions and Subroutines, and their purposes
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Routines for audio startup, decoding, display computations
|
Routines for audio startup, decoding, display computations
|
||||||
blanker.f90 Noise blanker
|
blanker.f90 Noise blanker
|
||||||
fivehz.f90 Called by PortAudio callback
|
fivehz.f90 Called by PortAudio callback
|
||||||
flat2.f Flatten the spectrum for waterfall display
|
flat2.f Flatten the spectrum for waterfall display
|
||||||
pix2d65.f90 Computes pixels for waterfall display
|
pix2d65.f90 Computes pixels for waterfall display
|
||||||
pix2d.f90 Computes pixels for waterfall display
|
pix2d.f90 Computes pixels for waterfall display
|
||||||
runqqq.f90 Executes another process
|
runqqq.f90 Executes another process
|
||||||
|
|
||||||
wsjtgen.f90 Generates Tx waveforms
|
wsjtgen.f90 Generates Tx waveforms
|
||||||
abc441.f90 Part of FSK441 generator
|
abc441.f90 Part of FSK441 generator
|
||||||
gen65.f Generate JT65 waveform
|
gen65.f Generate JT65 waveform
|
||||||
chkmsg.f Check a JT65 message for presence of 'OOO'
|
chkmsg.f Check a JT65 message for presence of 'OOO'
|
||||||
encode65.f Encode a JT65 message
|
encode65.f Encode a JT65 message
|
||||||
getpfx1.f Handle extra DXCC prefixes
|
getpfx1.f Handle extra DXCC prefixes
|
||||||
getpfx2.f ...
|
getpfx2.f ...
|
||||||
graycode.f Convert binary to/from Gray code
|
graycode.f Convert binary to/from Gray code
|
||||||
nchar.f Convert number, letter, space to 0-36
|
nchar.f Convert number, letter, space to 0-36
|
||||||
packcall.f Routines for JT65 source encoding
|
packcall.f Routines for JT65 source encoding
|
||||||
packdxcc.f ...
|
packdxcc.f ...
|
||||||
packgrid.f ...
|
packgrid.f ...
|
||||||
packmsg.f ...
|
packmsg.f ...
|
||||||
packtext.f ...
|
packtext.f ...
|
||||||
pfx.f ...
|
pfx.f ...
|
||||||
gen6m.f Generate JT6M waveform
|
gen6m.f Generate JT6M waveform
|
||||||
gentone.f Generate tone for JT6M message
|
gentone.f Generate tone for JT6M message
|
||||||
gencw.f Generate CW waveform
|
gencw.f Generate CW waveform
|
||||||
morse.f Convert ascii to morse dits
|
morse.f Convert ascii to morse dits
|
||||||
gencwid.f Generate a CW ID message
|
gencwid.f Generate a CW ID message
|
||||||
grid2k.f Convert grid locator to integer
|
grid2k.f Convert grid locator to integer
|
||||||
interleave63.f Interleave JT65 symbols
|
interleave63.f Interleave JT65 symbols
|
||||||
|
|
||||||
gcom1.f90 Global commons for sharing data among Fortran routines
|
gcom1.f90 Global commons for sharing data among Fortran routines
|
||||||
gcom2.f90 and between Fortran and Python
|
gcom2.f90 and between Fortran and Python
|
||||||
gcom3.f90
|
gcom3.f90
|
||||||
gcom4.f90
|
gcom4.f90
|
||||||
|
|
||||||
makedate.f90 Gererates makedate_sub.f90
|
makedate.f90 Gererates makedate_sub.f90
|
||||||
|
|
||||||
Astronomical calculations:
|
Astronomical calculations:
|
||||||
|
|
||||||
astro.f Computes Az, El, Doppler for Sun, Moon, etc.
|
astro.f Computes Az, El, Doppler for Sun, Moon, etc.
|
||||||
astropak.f "Includes" for astro supoport routines
|
astropak.f "Includes" for astro supoport routines
|
||||||
azdist.f Computes azimuth, distance, etc., between two locators
|
azdist.f Computes azimuth, distance, etc., between two locators
|
||||||
coord.f Spherical trig utility
|
coord.f Spherical trig utility
|
||||||
dcoord.f Spherical trig utility in double precision
|
dcoord.f Spherical trig utility in double precision
|
||||||
deg2grid.f Convert lat/long (degrees) to grid locator
|
deg2grid.f Convert lat/long (degrees) to grid locator
|
||||||
dot.f Compute dot product
|
dot.f Compute dot product
|
||||||
ftsky.f Get sky temperature from data file
|
ftsky.f Get sky temperature from data file
|
||||||
geocentric.f Convert geodetic to geocentric coords
|
geocentric.f Convert geodetic to geocentric coords
|
||||||
GeoDist.f Compute azimuth and distance between two locators
|
GeoDist.f Compute azimuth and distance between two locators
|
||||||
grid2deg.f Convert grid locator to lat/long
|
grid2deg.f Convert grid locator to lat/long
|
||||||
moon2.f Compute moon location at specified date and time
|
moon2.f Compute moon location at specified date and time
|
||||||
MoonDop.f Compute lunar doppler shift and related quantities
|
MoonDop.f Compute lunar doppler shift and related quantities
|
||||||
sun.f Compure sun location at specified date and time
|
sun.f Compure sun location at specified date and time
|
||||||
toxyz.f Convert between polar and cartesian coords
|
toxyz.f Convert between polar and cartesian coords
|
||||||
|
|
||||||
Utilities:
|
Utilities:
|
||||||
db.f Compute decibels from ratio
|
db.f Compute decibels from ratio
|
||||||
gasdev.f Generate Gaussian random numbers
|
gasdev.f Generate Gaussian random numbers
|
||||||
igray.f Gray code
|
igray.f Gray code
|
||||||
indexx.f Sort routine
|
indexx.f Sort routine
|
||||||
set.f Move, add, zero, ...
|
set.f Move, add, zero, ...
|
||||||
pctile.f Sort an array and get specified percentile
|
pctile.f Sort an array and get specified percentile
|
||||||
ran1.f Uniform random numbers
|
ran1.f Uniform random numbers
|
||||||
rfile2.f Read a binary file (Linux)
|
rfile2.f Read a binary file (Linux)
|
||||||
sort.f Sort an array
|
sort.f Sort an array
|
||||||
|
|
||||||
FFTs:
|
FFTs:
|
||||||
fftw3.f Fortran definitions for FFTW
|
fftw3.f Fortran definitions for FFTW
|
||||||
four2a.f Wrapper to make FFTW look like four2
|
four2a.f Wrapper to make FFTW look like four2
|
||||||
four2.f FFT in Fortran (a;ternative to using FFTW)
|
four2.f FFT in Fortran (a;ternative to using FFTW)
|
||||||
ps.f Compute power spectrum
|
ps.f Compute power spectrum
|
||||||
xfft.f Real to complex FFT wrapper
|
xfft.f Real to complex FFT wrapper
|
||||||
|
|
||||||
|
|
||||||
Routines for Decoding:
|
Routines for Decoding:
|
||||||
wsjt1.f Top-level decoding routine; handles FSK441 especially
|
wsjt1.f Top-level decoding routine; handles FSK441 especially
|
||||||
avesp2.f Computes average spectrum
|
avesp2.f Computes average spectrum
|
||||||
bzap.f Find and remove birdies
|
bzap.f Find and remove birdies
|
||||||
detect.f Measure power in FSK441 tones
|
detect.f Measure power in FSK441 tones
|
||||||
flatten.f Flatten the spectrum
|
flatten.f Flatten the spectrum
|
||||||
longx.f Decode normal FSK441 messages
|
longx.f Decode normal FSK441 messages
|
||||||
lpf1.f Quick-and-dirty lowpass filter
|
lpf1.f Quick-and-dirty lowpass filter
|
||||||
mtdecode.f Multi-tone decoding
|
mtdecode.f Multi-tone decoding
|
||||||
ping.f Find pings
|
ping.f Find pings
|
||||||
s2shape.f Flatten the 2d spectrum
|
s2shape.f Flatten the 2d spectrum
|
||||||
smooth.f Smooth by boxcar averaging
|
smooth.f Smooth by boxcar averaging
|
||||||
spec2d.f Compute 2d spectrum for FSK441
|
spec2d.f Compute 2d spectrum for FSK441
|
||||||
stdecode.f Decode FSK441 shorthand messages
|
stdecode.f Decode FSK441 shorthand messages
|
||||||
sync.f Synchronize FSK441 data
|
sync.f Synchronize FSK441 data
|
||||||
|
|
||||||
wsjt65.f JT65 decoder
|
wsjt65.f JT65 decoder
|
||||||
afc65.f AFC for JT65
|
afc65.f AFC for JT65
|
||||||
avemsg65.f Decode average message
|
avemsg65.f Decode average message
|
||||||
decode65.f Decode JT65 message
|
decode65.f Decode JT65 message
|
||||||
deep65.f Deep search decoder
|
deep65.f Deep search decoder
|
||||||
demod64a.f Compute probabilities of transmitted symbols
|
demod64a.f Compute probabilities of transmitted symbols
|
||||||
extract.f Extract message from JT65 symbol probabilities
|
extract.f Extract message from JT65 symbol probabilities
|
||||||
flat1.f Flatten the passband
|
flat1.f Flatten the passband
|
||||||
getsnr.f Compute snr or shorthand message
|
getsnr.f Compute snr or shorthand message
|
||||||
k2grid.f Convert integer to 4-digit grid locator
|
k2grid.f Convert integer to 4-digit grid locator
|
||||||
limit.f Clipper for JT65
|
limit.f Clipper for JT65
|
||||||
peakup.f Interpolate to find fractional-bin peak
|
peakup.f Interpolate to find fractional-bin peak
|
||||||
setup65.f Initialize pseudorandom sync vector
|
setup65.f Initialize pseudorandom sync vector
|
||||||
short65.f Detect JT65 shorthand messages
|
short65.f Detect JT65 shorthand messages
|
||||||
slope.f Remove a straight-line slope
|
slope.f Remove a straight-line slope
|
||||||
spec2d65.f Compute 2d spectrum for JT65
|
spec2d65.f Compute 2d spectrum for JT65
|
||||||
spec441.f Compute spectra for FSK441 decoding
|
spec441.f Compute spectra for FSK441 decoding
|
||||||
sync65.f Synchronize a JT65 signal
|
sync65.f Synchronize a JT65 signal
|
||||||
unpackcall.f Unpack JT65 message parts ...
|
unpackcall.f Unpack JT65 message parts ...
|
||||||
unpackgrid.f ...
|
unpackgrid.f ...
|
||||||
unpackmsg.f ...
|
unpackmsg.f ...
|
||||||
unpacktext.f ...
|
unpacktext.f ...
|
||||||
xcor.f Compute cross-correlation for JT65 sync
|
xcor.f Compute cross-correlation for JT65 sync
|
||||||
|
|
||||||
decode6m.f Decode JT65 signal
|
decode6m.f Decode JT65 signal
|
||||||
syncf0.f First frequency sync
|
syncf0.f First frequency sync
|
||||||
syncf1.f Second freq sync
|
syncf1.f Second freq sync
|
||||||
synct.f First time sync
|
synct.f First time sync
|
||||||
avemsg6m.f Get average JT65 message
|
avemsg6m.f Get average JT65 message
|
||||||
|
|
||||||
JT65code.f Program to illustrate and test JT65 coding
|
JT65code.f Program to illustrate and test JT65 coding
|
||||||
|
|
||||||
Hard-Decision Reed Solomon Codec
|
Hard-Decision Reed Solomon Codec
|
||||||
decode_rs.c Decoder
|
decode_rs.c Decoder
|
||||||
encode_rs.c Encoder
|
encode_rs.c Encoder
|
||||||
init_rs.c Initialization routine
|
init_rs.c Initialization routine
|
||||||
wrapkarn.c Wapper for Fortran
|
wrapkarn.c Wapper for Fortran
|
||||||
|
|
||||||
cutil.c Fortran wrappers for some basic C functions
|
cutil.c Fortran wrappers for some basic C functions
|
||||||
jtaudio.c Audio I/O, calls PortAudio routines
|
jtaudio.c Audio I/O, calls PortAudio routines
|
||||||
padevsub.c Select desired audio device
|
padevsub.c Select desired audio device
|
||||||
ptt.c PTT via serial port DTR/RTS
|
ptt.c PTT via serial port DTR/RTS
|
||||||
ptt_linux.c Ditto for Linux (dummy at present)
|
ptt_linux.c Ditto for Linux (dummy at present)
|
||||||
resample.c Wrapper for resample routine
|
resample.c Wrapper for resample routine
|
||||||
start_threads.c Start audio and decoder threads
|
start_threads.c Start audio and decoder threads
|
||||||
|
|
||||||
|
|
||||||
7 Compiling Instructions
|
7 Compiling Instructions
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Scripts are provided for compiling WSJT in both Windows and Linux.
|
Scripts are provided for compiling WSJT in both Windows and Linux.
|
||||||
They are presently set up to use Compaq Visual Fortran (v6.6) and
|
They are presently set up to use Compaq Visual Fortran (v6.6) and
|
||||||
Microsoft C (v6.0) in Windows, and g95 and gcc in Linux. My
|
Microsoft C (v6.0) in Windows, and g95 and gcc in Linux. My
|
||||||
installation has Python 2.3. Additional tools include f2py, which
|
installation has Python 2.3. Additional tools include f2py, which
|
||||||
compiles Fortran and C to make Python extensions; the Python Imaging
|
compiles Fortran and C to make Python extensions; the Python Imaging
|
||||||
Library; Numeric Python; and the SciPy distribution utilities.
|
Library; Numeric Python; and the SciPy distribution utilities.
|
||||||
|
|
||||||
Linux Windows Function
|
Linux Windows Function
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
g0 g0.bat Compiles the hard-decision Reed Solomon Decoder
|
g0 g0.bat Compiles the hard-decision Reed Solomon Decoder
|
||||||
Needs to be done only once.
|
Needs to be done only once.
|
||||||
g1 g1.bat Compiles the remaining Fortran and C to produce Python
|
g1 g1.bat Compiles the remaining Fortran and C to produce Python
|
||||||
extension module audio.pyd (Windows) or audio.so
|
extension module audio.pyd (Windows) or audio.so
|
||||||
(Linux).
|
(Linux).
|
||||||
g2 g2.bat Uses McMillan Installer to create an f2py specification
|
g2 g2.bat Uses McMillan Installer to create an f2py specification
|
||||||
file, wsjt.spec
|
file, wsjt.spec
|
||||||
g3 g3.bat Uses Installer to produce a distributable file WSJT6.EXE
|
g3 g3.bat Uses Installer to produce a distributable file WSJT6.EXE
|
||||||
(Windows).
|
(Windows).
|
||||||
g99 g99.bat Runs all of the g[0-3] scripts.
|
g99 g99.bat Runs all of the g[0-3] scripts.
|
||||||
|
|
||||||
These steps produce a distributable file WSJT6.EXE (Windows) or wsjt6
|
These steps produce a distributable file WSJT6.EXE (Windows) or wsjt6
|
||||||
(Linux) that contains all necessary software components, so that the
|
(Linux) that contains all necessary software components, so that the
|
||||||
end user does not need to install Python or any of its other
|
end user does not need to install Python or any of its other
|
||||||
extensions, or the compilers.
|
extensions, or the compilers.
|
||||||
|
|
||||||
A configuration script and Makefile facility is also provided.
|
A configuration script and Makefile facility is also provided.
|
||||||
Assuming that all of the pre-requisites are properly installed, WSJT
|
Assuming that all of the pre-requisites are properly installed, WSJT
|
||||||
can now be compiled in Windows as follows:
|
can now be compiled in Windows as follows:
|
||||||
|
|
||||||
C> copy Makefile.win Makefile
|
C> copy Makefile.win Makefile
|
||||||
C> nmake
|
C> nmake
|
||||||
|
|
||||||
In Linux or FreeBSD, do the following:
|
In Linux or FreeBSD, do the following:
|
||||||
|
|
||||||
$ ./configure --enable-portaudio (or --enable-alsa or --enable-oss)
|
$ ./configure --enable-portaudio (or --enable-alsa or --enable-oss)
|
||||||
$ make
|
$ make
|
||||||
|
|
||||||
|
|
||||||
8 Present status (January 17, 2006)
|
8 Present status (January 17, 2006)
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
WSJT version 5.9.2 (built from SVN revision 115) has been released for
|
WSJT version 5.9.2 (built from SVN revision 115) has been released for
|
||||||
Windows. It is is fully functional in Linux and BSD, as well, but
|
Windows. It is is fully functional in Linux and BSD, as well, but
|
||||||
presently need to be compiled locally. In due course we plan to
|
presently need to be compiled locally. In due course we plan to
|
||||||
provide distributions for standard *nix distributions.
|
provide distributions for standard *nix distributions.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user