Hauptmenü
CW ist die älteste Funkbetriebsart und erfreut sich nach wie vor großer Beliebtheit. Gerade weil es nicht jeder kann, verleiht es dem Kundigen eine gewisse 'Exklusivität'. Wir sollten stolz darauf sein, dass der Amateurfunk der einzige Funkdienst ist, in dem die Morsetelegrafie weiterhin gepflegt wird.
CW mit dem PC
Nachdem der PC Einzug in die Shacks der Funkamateure gehalten hat, ist auch CW in den Fokus der Programmierer geraten. Es wurden Anwendungen zum automatischen Dekodieren von CW entwickelt. Welchen praktischen Nutzen solche Programme haben, vermag ich nicht zu beurteilen, da ich noch keines benutzt habe. Auf der Sendeseite aber habe ich Hand angelegt, und ein Progrämmchen zum automatischen Aussenden beliebiger Texte in CW entwickelt.
Genau wie in PSK erhöht das manuelle Geben ständig gleichbleibender Texte nicht die Authentizität. Und es entlastet den Operator doch etwas, wenn er z. B. die Stationsbeschreibung per Mausklick senden lässt und währenddessen noch einen Schluck Kaffee trinken kann.
Hezstück des Programms ist ein Teil, das gar nicht in dem Programm enthalten ist, nämlich eine Datenbanktabelle. Darin sind alle alfanumerischen Zeichen gespeichert, die das Morsealphabet kennt, der entsrechende ASCII-
Zeichen ASCII MorseCode
32 00
( 40 1110101110111010111
) 41 111010111011101
+ 43 1011101011101
, 44 1110111010101110111
-
. 46 10111010111010111
/ 47 1110101011101
0 48 1110111011101110111
1 49 10111011101110111
2 50 101011101110111
3 51 1010101110111
4 52 10101010111
5 53 101010101
6 54 11101010101
7 55 1110111010101
8 56 111011101110101
9 57 11101110111011101
= 61 1110101010111
? 63 101011101110101
@ 64 10111011101011101
A 65 10111
B 66 111010101
C 67 11101011101
D 68 1110101
E 69 1
F 70 101011101
G 71 111011101
H 72 1010101
I 73 101
J 74 1011101110111
K 75 111010111
L 76 101110101
M 77 1110111
N 78 11101
O 79 11101110111
P 80 10111011101
Q 81 1110111010111
R 82 1011101
S 83 10101
T 84 111
U 85 1010111
V 86 101010111
W 87 101110111
X 88 11101010111
Y 89 1110101110111
Z 90 11101110101
Ä 196 10111010111
Ö 214 1110111011101
Ü 220 10101110111
* 223 101010111010111
Procedure MorseAusg(TX$)
Define int1, i, j, MorseCode$
For i = 1 To Len(TX$)
DatabaseQuery(iDB, "SELECT MorseCode FROM Tab_Morsezeichen WHERE Zeichen = '" + Mid(TX$, i, 1) + "'")
FirstDatabaseRow(iDB)
MorseCode$ = GetDatabaseString(iDB, 0) + "000"
For j = 1 To Len(MorseCode$)
SetSerialPortStatus(COM_K3, #PB_SerialPort_RTS, Val(Mid(MorseCode$, j, 1)))
Select WindowEvent()
Case #PB_Event_Menu
If EventMenu() = 140
bTX = ~ bTX
Break 2
EndIf
Case #PB_Event_Gadget
If EventGadget() = #Btn_Stop
Break 2
EndIf
EndSelect
Delay(iElLen)
Next
Next
SetSerialPortStatus(COM_K3, #PB_SerialPort_RTS, 0) : bTXStop = #False : MorseAusgEnde()
SetActiveGadget(GetGadgetData(#Fme_Log))
EndProcedure
An die Prozedur MorseAusg() wird der zu sendende Text als String übergeben und in TX$ gespeichert.
In einer For...Next-
Dann wird Zeichen für Zeichen des Morsecodes als Wert auf die Steuerleitung RTS gegeben und damit der Sender getastet.
Die Geschwindigkeit hängt ab von Delay(iElLen). Mit Delay() wird die Programmausführung für die Anzahl der Millisekunden angehalten, die in iElLen gespeichert sind. Je kleiner dieser Wert ist, desto schneller ist die Morseausgabe.
Das ist alles. Einfach, aber wirkungsvoll.