Forumradioamatori.it
Software & Hardware – Quando il radioamatore e costretto a diventare informatico! Discutiamo per l’appunto di Software e Hardware => Ham software download => Discussione aperta da: INFORADIO il Lun 30 Aprile, 15:21 2018
CWMonitor – Ricezione CW con modem Baycom (Software MS-DOS)
Disponibile alla seguente pagina: http://www.forumradioamatori.it/download/download-dos/Baycom/Baycom.html
CWMONITOR ver 2.3 by LA0FX
============================
It is very simple program to decode CW signals by using PACKET RADIO
modem 'BAYCOM'. Of course any other interface which keys the one of
those lines: CTS/DSR/RI or DCD of serial port, can be used.
Build-in correction procedure does correct some of the human errors
during CW keying.
Auto-synchro routine will synchronize loop speed to the different
CW speed. It may happen, that in case of receiving very slow CW
(around 20-30WPM) and very fast jump to the station sending fast CW -
dot and (or) dash will not be recognized correctly. Synchro
will hang - use HOME key to retrive loop again or swich to the MANUAL
(F9) and adjust the speed until correct decoding is achived.
You may connect modem to COM1..4 and keying line to CTS,DSR,RI or DCD.
Default for receiving is COM3 and CTS (BAYCOM uses CTS).
To get it run, set receiver on the edge of CW signal (just red LED
should flash with CW).
Length of the SPACE in principle is defined to 7 'units'.
Due to very bad keying of many operators this can be adjusted from
3 until 20 (!) ( LEFT_ or RIGHT_ARROW keys)
By the way - Is quite significant how bad CW-signals most of us sending
on the 'air'. Without build-in correction procedure receiving is simply
impossible from more than 50% of CW operators (!!)
This program is still experimental one, I done it during few evenings,
so don't be disappointed if something missing or working unsuitably...
However, program decodes CW 100% error-free with one condition:
CW keying has to be correct. To prove this I have connected two PC's:
first one running LAZY TELEGRAPHIST (my program for CW-sending) or
CWMONITOR 2.0(up) and CWMONITOR on the other end. During 5 hours of
continuous test no error has been encountered (abt 40 000 char with no
miss!).
P C 1 (TX) P C 2 (RX)
LAZY TELEGRAPHIST or CWMONITOR2.0/up CWMONITOR (any version)
==================================== ==========================
(25pins) | (9pins) (25pins) | (9pins)
----------------|------------- ---------------|---------------
DTR pin.20 | pin.4 --------> pin.5 | pin.8 CTS
SG pin.7 | pin.5 --------> pin.7 | pin.5 SG
----------------|------------- ---------------|---------------
CWMONITOR has been tested even on very slow PC's as 386/16 and run OK.
RECEIVER:
ARROW UP/DN - synchro speed UP/DOWN
ARROW L/R - word separation
ENTER - new correspondent
ALT-1..4 - RX port COM1..4
ALT-5..7 - RX modem to CTS/DSR/RI/DCD
ALT-B - buffers file menu
ALT-H - help
ALT-M - macros file menu
F9 - autosynchro ON/OFF
F10 - toggle TX mode
HOME - retrive synchro loop
DEL - clear text window
ESC/ALT-X - exit
TRANSMITTER:
ALT-1..4 - TX port COM1..4 (always DTR)
ARROW UP/DN - CW speed UP/DOWN
F1..8 or MOUSE_LEFT_B - send buffer/macro 1..8
ARROW UP/DN - CW speed UP/DOWN
MOUSE_RIGHT_B - show text in buffer/macro
DEL - clear transmit window
ESC - TX stop/toggle RX mode
FORMAT OF MACROS FILE (example).
#----------------- BEGIN --------------------
# macro %3 (you dont need to write those lines)
LA0FX
# macro %4
JP40LM
# macro %5
NESBYEN
# macro %6
TED
# macro %7
TS830S PA 6TT WATTS
# macro %8
ANT 3EL YAGI 11M UP
# macro %9 etc...
# macro %A
# macro %B
# macro %C
# macro %D
# macro %E
# -------------- END ------------------------
NOTE! Macros %0 until %2 are defined in the program NEW CORESPONDENT window:
%0 => HIS CALL %1 => HIS RST %2 => HIS NAME
%F => GM/GA/GE (system time depend)
FORMAT OF BUFFERS FILE (example).
#--------- BEGIN ----------------------------
!1
CQ CQ DE %3 %3 PSE K
!2
%0 %0 DE %3 %3 %3 PSE K
!3
%0 %0 DE %3 = %F DR OM TNX FOR THE CALL
UR RST IS %1 %1 MY NAME IS % TED QTH IS %5 =
HW? %0 DE %3 PSE KN
!4
THIS IS TEXT IN BUFFER 4
!5
THIS IS TEXT IN BUFFER 5
!6
THIS IS TEXT IN BUFFER 6
!7
THIS IS TEXT IN BUFFER 7
!8
THIS IS TEXT IN BUFFER 8
#---------------- END -----------------------
Comments lines begins # are ignored - remember to use this char.
Otherwise text will be loaded to the buffer/macro (total mess HI)!
You may create up to 20 different macro- buffer- files.
CWMONIT.CFG is the configuration file.
EXAMPLE of cfg file:
TXPORT2 -> COM2 set as the transmitter port
RXPORT3 -> COM3 set as the receiver port
CTS -> keying to CTS
LA0FX.MAC -> macros from this file will be loaded on start-up
EXAMPLE.BUF -> buffers -"-
TX-INTERFACE.
-------------
You may send CW by very simple interface (function invoked by F10).
The circuit needed to key positive(!) keyed radios from COM's
is a 10K resistor from DTR to the base of an NPN small signal
transistor. The emitter of the transistor and the ground lead
of the TX keying cable are connected to SG.
The collector is connected to the hot side of the TX keying
cable.
For negativ keyed radios (some older models with tubes) circuit
required is the same + one more transistor and two resistors.
Since interface is a very simple one, it can be assembled inside
of the RS232 or 9pin. connector.
RADIO
RS 232 (25pin.) | 9 pin. 10k C =======
================|=========== ___ B / -------------> hot lead
DTR pin. 20 | pin. 4 ----|___|---|
----------------|----------- \ E
SG pin. 7 | pin. 5 -------------|--------------> TX-ground
----------------|----------- NPN
Due to some question how this works I will try to explain the
principles.
Basic part is the INTERRUPT 08H (clock) which runs with resolution
15 times faster than normal (18.2 1/sec divided 15). Timer has to be
reprogrammed by sending two-words-order to the port 40H.
Of course standard service of INT 08H has to be executed each 15-th
clock tick, otherwise timing of whole system will be totaly wrong.
During each tick, COM port is checked for presence of 'high/low
status' on it.
If status is high then corresponding bit of such 4-byte-long variable
is set '1' otherwise '0' and index increased to point to the next bit.
After three of '0's beside, the flag 'DECODE' is set and reading of
current character is ended.
By using this method binary record of letter B looks like this
(in reversed order): 101010111 (- - - ---)
letter "C" : 10111010111 (- --- - ---) etc.
When binary record is converted to integer We get value 343 for "B",
1495 for "C" etc. Easy to assign character to each particular value.
All looks simple in case of correct CW keying, but what happen
when f.example char B "produced" by poor CW operator looks like this:
(--- - - --) or (---- -- -- --) or (--- -- - --). Correction converts
deformed binary record to it right form: (--- - - -). This function
analysing arrays of bits and cut-out those which does the 'harm'.
But there is no way to decode characters without obligatory space of
three low bits. I.e. text "ABC" is send like this:
- --- --- - - - --- - --- -
A ^ B ^ C
just 2 bits of space
Program is simply unable to recognize each char because space between
them is less than 3 bits. No DECODE flag is set, all three letters
will be recorded as long-single-one, and to do the mess even worse,
finaly corrected. This is the common error of many operators...
It should be like this:
- --- --- - - - --- - --- -
^ 3 bits ^ 3 bits
Now about synchronization.
Loop should run with speed similar to the apperance of characters
elements. For example during receiving "A" (- ---), loop should
12345
run 5 times. If the speed is to fast this character will look
like(--- --------) if to slow like(- --).
12345678901234 1234
After each 20-th bit procedure selects the longest record of 11111...
and if less than 3 then speed-up, otherwise slow-down the loop.
I'am fully aware that exists better and more effective methods of
receiving CW, but I simply didn't found them yet....hi.
Thanks for all comments about previous versions !
Comments / suggestions vy welcome .
Nesbyen 20.10.96 Ted (LA0FX/SP9CSO)