WinKeyer is a low-cost fully featured external Morse keyer capable of being fully controlled via a serial interface. It enables software developers to create a fully integrated Morse keyer within their programs, which will operate under all versions of DOS or Windows, including Windows XP.
Few if any serious contesters or DXers would contemplate operating without using a computer-based logging program these days. Contest logging was one of the first serious Amateur Radio applications to appear on the PC and within a few years there were many excellent logging programs on the market. Virtually all of these programs had two things in common:
1. They were DOS-based
2. They offered some form of CW keying
The DOS environment lent itself well to the task of internal CW generation. Firstly, it was possible to capture the internal system clock and harness it to provide the timing for the code generator. Second, DOS inherently supported an interrupt system, which provided an easy way to implement CW keying as a background task. Finally, unfettered access to the parallel or serial port meant that the key output could be easily interfaced to the rig.
All this changed with the advent of Windows. Indeed it is fair to state that the huge step forward that Windows represented to the general PC user was at least equalled for Radio Amateurs by the step backwards in CW keying capability. For a while, most developers were able to side-step the issue, since, up to Windows ’98, DOS programs could still access the computer’s ports. However, with the advent of Windows 2000, ME and, especially, XP, even this grudging concession to the DOS world has been removed. Programmers are therefore left with the unfortunate situation that their software simply will not run any more, or at least, that the CW generator will not work.
WinKeyer is specifically designed to completely overcome this problem.
Developing the WinKeyer concept Steve, K1EL had, for some time been developing PIC-based keyers that, to some extent supported ASCII interfacing. Other products supported external keyer features such as a speed “pot”. John, G3WGV was the original developer of TurboLog and has gained a lot of experience of the needs of DXers and Contesters, through the development of DXpedition software for 9M0C and D68C.
Between them, Steve and John created the specification for the ideal Morse Keyer:
1. Fully integrating with a logging program via a standard RS232 port
2. Supporting standard Iambic paddles
3. Providing a physical speed control knob
4. Capable of supporting functions such as callsign type-ahead, paddle interrupt, keyboard CW etc. matching the best practices of internal keyers in existing logging software
5. Simple character by character serial interface, capable of implementation on all platforms and operating systems
6. Fully featured specification, matching or exceeding the best of the current standalone keyers
7. Capable of being operated standalone or in conjunction with a host
8. Low cost, simple to build kit
9. Compact, unit capable of being powered directly by the RS232 port or operate off a USB port
10. Open architecture, with schematic (circuit) diagram and full interface specifications published, to enable anyone to integrate the keyer into their software project. A sample 32-bit Windows program is also available.
WinKeyer host requirements
WinKeyer is genuinely host and operating system independent and it is easy to implement in all the following environments:
DOS – all versions
Windows – all versions including ME, 2000 and XP
Linux – all versions
Apple Mac – all versions
WinKeyer requires a single RS232 port. A possible concern for developers might be the recent trend away from direct provision of RS232 ports, especially on portable PCs. However, there is no evidence that the RS232 interface is itself being superseded. It continues to be used in a myriad of devices and support through PCMCIA cards, USB hubs, etc. is assured for the foreseeable future.
The WinKeyer hardware interface WinKeyer interfaces asynchronously with the host via a single 1200 baud RS232 port. No interrupts are required, so ports derived from USB adapters work perfectly. Data are coded as simple 8-bit bytes with no parity. Hardware flow control is not implemented and should not be used. WinKeyer behaves as a full duplex Data Communication Equipment (DCE) and presents a 9-pin female DIN connector, which is connected to the host via a straight through cable (not null modem). Only TX data, RX data, DTR, RTS and ground connections need be implemented. Power for WinKeyer is derived from DTR (+V) and RTS (-V). These control lines are not used for any other purpose so programmers should ensure that DTR is asserted and RTS is clear at all times. WinKeyer directly keys all modern rigs via a 2N7000 MosFet. Keying voltages of up to +60VDC can be accommodated. A separate PTT line is provided with similar switching capabilities. The timing relationship between the PTT and Keying lines is determined by host software.
The WinKeyer software interface
WinKeyer receives single byte commands, generally supported by one or occasionally two parameter bytes. WinKeyer responds to these commands with single byte responses. Under certain circumstances, WinKeyer will send unsolicited status information, so the host program must be able to accept inbound data at any time. WinKeyer implements a proprietary flow control mechanism for the sole purpose of preventing send buffer overflow when a large CW message is sent from host to WinKeyer. This flow control mechanism is easier to implement than XON/XOFF and simplifies the command structure.
WinKeyer sends the following information to the Host:
Speed pot setting. This allows the host to know what speed CW WinKeyer is sending. The speed byte is sent whenever the speed pot is turned.
Character echo. This permits the implementation of callsign type-ahead and other similar features
WinKeyer status. This includes busy/idle, flow control, paddle break-in, etc.
WinKeyer receives the following commands from the host (NB this list is not exhaustive):
ASCII characters to send, including prosigns
Set CW speed. The host can override the speed pot
Get CW speed
Set CW pot speed range
Set mode (includes paddle swapping, Iambic A/B, bug mode, etc.)
Set key compensation
Set dit/dah trigger point (including the ability to disable stores)
Get WinKeyer status
Force key down
Set PTT characteristics (lead-in and tail delays, 1st code bit extension)
It is possible to put together a simple WK interface in a couple of hours. Developers have interfaced to WK from MS Windows, Linux and the MAC using Visual Basic, C, C++, and Java. K1EL offers a free WK DLL and test platform written in C that gives a good foundation to work from.
Copyright 2002-2013 Hamcrafters and K1EL Systems All Rights Reserved