A stdin/stdout application to send Morse code using a serial RTS keying device
Just one example, which I use:
A device such as this will toggle the RTS line of a serial port from its internal USB to RS-232 converter. Most radios have 3.5mm keying ports now, so this little device can be used to key a radio when the radio is set into straight key mode (like a keyer device).
This should work with any RS-232 serial port, however, be mindful of any odd keying voltages particularly from older radios. Modern radios can usually deal with the RTS keying just fine.
Check your signal with a remote SDR or a friend to ensure that there are no keying clicks audible over the air. If so a key click capacitor might have to be introduced to avoid this. I have not found it to be the case using the USB to RS-232 RTS keying device linked above.
The program expects the USB/Serial device to be ready when the program starts.
Once the program starts, you will then notice a prompt "CALLSIGN> ". If no callsign is supplied it will read "rtskeyer>".
Type in the text to send by Morse code and it will be keyed to the radio (or code practice oscillator).
Invocation example: ./rtskeyer 20 /dev/ttyUSB0 ab4mw would start the program
set at 20 WPM speed, using serial port /dev/ttyUSB0 and showing the callsign
'ab4mw' at the command prompt.
The command prompt also includes a couple of commands.
@@nn changes the set speed in WPM, example to change to 22 WPM send @@22 at the command line.
~~ is meant to trigger a save of current configuration to shared_preferences but this is not yet implemented and is left as a placeholder. This may simply be implemented as a config file on the file system, but the thought is to use shared preferences so this may be run on Android/iOS as well as Linux and Windows
The literal command 'exit' at the start of the command line will immediately close the program.
^n will look up the macro substitution text from macros.json and send it. The macros.json file is simply a string list. The index in the list is the index used to send the macro text. See ^^ below.
^^ will print a list of defined macros contained in the macros.json file.
## will clear the screen of all text and return to the cmd line.
INSTALLATION REQUIREMENTS: libserialport-dev (pkg name in Debian and derivatives, so
sudo apt install libserialport-dev
For Windows, there is a libserialport that can be installed as a .dll file, and which can be placed in the working directory with the binary.
Never tested on MacOS but I'm sure something similar is available for libserialport.