Hauptmenü
Computer Aided Transceiver (Computerunterstützter Transceiver)
Mit Hilfe von CAT ist es möglich, den Transceiver vom PC aus zu steuern. Idealerweise kann man damit alle manuellen Bedienungshandlungen nachahmen.
Nachdem in der Vergangenheit jeder Hersteller sein eigenes CAT-
folgen der gleichen Syntax, wenngleich sich die Befehle im Einzelnen unterscheiden können.
Die grundlegenden Befehle zur Frequenz-
Das war für mich eine große Erleichterung, als ich vom TS-
Außer dem K3 besitze ich z. Zt. einen FT-
Beim K3 allerdings mit einer Ausnahme: er lässt sich nicht per CAT-
Das bedeutet allerdings zusätzliche Hardware.
Ich hatte anfangs die geniale Idee, beides miteinander zu kombinieren und habe den Pin der ACC-
Das funktionierte gut, zu gut. Wie das?
Nun, Windows testet beim Booten offensichtlich die seriellen Schnittstellen, so dass bei jedem Windows-
Beim FT-
Das erledige ich in einer FOR-
WriteSerialPortString(COM_3, "PS1;")
Delay(10)
Next
Damit schaltet der TRX sicher ein.
Für beide Geräte kann man sich die Handbücher für die CAT-
FT-
Beim FT-
Voraussetzung ist aber, dass vorher mit angeschlossenem Bedienteil im SET-
Jetzt können vom steuernden PC, bei mir ein Tablet HiBook, CAT-
Da ich ohne das Bedienteil aber keine Anzeige wichtiger Parameter habe (Spannung, Leistung, SWR, ALC), werden diese aus dem TRX ausgelesen und auf dem Tablet angezeigt.
Die ICOM-
Da hier nur hexadezimale Werte übertragen werden, muss der Befehl
Vor dem eigentlichen Befehlscode ist ein Präambelcode zu senden. Die ersten beiden Bytes sind FEFE, gefolgt von der Adresse des Transceivers (88) sowie der des steuernden Gerätes (E0). Am Schluss steht das Befehlsendezeichen FD.
Eine Besonderheit stellt der Befehl zum Einschalten des TRX dar. Hier soll vor dem eigentlichen Befehl eine Anzahl FE gesendet werden, abhängig von der Baudrate. Bei 19200 Bd sollen es 25 sein
Der PureBasic-
PokeQ(*CommBuf + 25, $FD0118E088FEFE)
WriteSerialPortData(#COM_IC7100, *CommBuf, 32)
Bei den Pokebefehlen muss die Reihenfolge der Bytes umgekehrt werden. Im *CommBuf stimmt die Reihenfolge dann wieder.
Um diese Schwierigkeit bei den normalen Befehlen zu umgehen, werden dort die Befehlsbytes in Strings verarbeitet und erst zum Schluss als Hexwerte byteweise in den Comm-
Define i
PurgeComm_(hCOM_IC7100, #PURGE_RXCLEAR
PurgeComm_(hCOM_IC7100, #PURGE_TXCLEAR
Delay(10)
CmdDat$ = "FEFE88EO" + CmdDat$ + "FD"
For i = 0 to Len(CmdDat$) >> 1
PokeB(*CommBuf + i, Val("$" + Mid(CmdDat$, (i << 1) + 1, 2)))
Next
WriteSerialPortData(#COM_IC7100, *CommBuf, i)
Delay(10)
PurgeComm_(hCOM_IC7100, #PURGE_RXCLEAR
Delay(10)
If bRead
i = AvailableSerialPortInput(#COM_IC7100)
If i
ReadSerialPortData(#COM_IC7100, *CommBuf, i)
Endif
Endif
EndProcedure
Eine Besonderheit des ICOM CAT-
Die Zeilen
PurgeComm_(hCOM_IC7100, #PURGE_RXCLEAR
beseitigen das Echo. Danach kann, falls erforderlich, die Antwort ausgewertet werden.
Vebindung PC <-
Die Verbindung zwischen PC und Transceiver erfolgt über die serielle Schnittstelle, die sich durch einfache Programmierbarkeit auszeichnet.
Die originale serielle Schnittstelle findet sich aber heute kaum noch am PC, sie wird zumeist durch USB-
Und auch wo ein USB-
Vor der Benutzung des CommPorts, wie die Schnittstelle auch genannt wird, muss dieser geöffnet werden.
In PureBasic sieht die allgemeine Anweisung zum Öffnen wie folgt aus:
OpenSerialPort(#SerialPort, SerialPortName$, Bauds, Parity, Data, Stop, HandshakeMode, InputBufferSize, OutputBufferSize)
Die einzelnen Parameter werden folgendermaßen besetzt:
#SerialPort eine frei wählbare Zahl, mit der der Port im Programm angesprochen wird
SerialPortName$ die Bezeichnung des Ports als Zeichenkette, z. B. "COM3"
Bauds die Baudrate, muss die gleiche sein wie die des Transceivers
Parity die Parität, wird vom Transceiver vorgegeben
Data die Anzahl der Datenbits, wird vom Transceiver vorgegeben
Stop die Anzahl der Stopbits, wird vom Transceiver vorgegeben
HandshakeMode Datenflusssteuerung, wird vom Transceiver vorgegeben
InputBufferSize Größe des Eingangspuffers, kann frei gewählt werden, muss aber für den Zweck ausreichend sein
OutputBufferSize Größe des Ausgangspuffers, sonst wie vor
In meinem Logprogramm sieht der Befehl zum Öffnen des Ports für den K3 so aus:
OpenSerialPort(#COM_K3, "COM3", 38400, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 128, 128)
Jetzt können Befehle an den Port gesendet werden.
PC -
Je nach Empfänger können die Anweisungen als Daten oder String gesendet werden.
Die Kenwood-
Der entsprechende Befehl lautet:
In der Kenwood-
Grundsätzlich gibt es Befehle, die mit oder ohne Parameter zum Transceiver geschickt werden.
Als Beispiel für einen Befehl mit Parameter: WriteSerialPortString(0, "FA00007039750;") stellt den VFO A auf die Frequenz von 7039,750 KHz ein.
Die Frequenz wird mit 11 Stellen mit 1 Hz Auflösung angegeben, wobei führende Nullen unbedingt erforderlich sind.
Befehl ohne Parameter
Der Befehl WriteSerialPortString(0, "FA;") fordert den K3 auf, die am VFO A eingestellte Frequenz auszugeben.
Als Antwort werden grundsätzlich Daten gesendet. Das Programm muss einen Puffer bereitstellen, in den diese Daten geschrieben werden.
TRX -
Mit der Anweisung
ReadSerialPortData(#SerialPort, *Puffer, Länge)
werden die Empfangsdaten in den Puffer geschrieben. Der Parameter *Puffer ist ein Zeiger auf den Puffer, also die Adresse des Speicherbereichs. Die Größe wird mit Länge festgelegt und sollte der zu erwartenden Datenmenge entsprechen.
Da PureBasic ab Version 5.50 Strings grundsätzlich in Unicode darstellt, die Daten vom TRX aber als ASCII-
Der Befehl
erledigt diese Aufgabe.
Eine zentrale CAT-
wie die Sende/Empfangsumschaltung im Amateurjargon genannt wird (PTT = Push To Talk = Sprechtaste drücken).
Dabei kann man zwei Methoden anwenden:
1. die Befehle RX und TX
Bei Kenwood/Elecraft werden diese Befehle ohne Parameter gesendet.
Beim FT-
Beim IC-
2. die Steuerleitungen DTR und RTS mit der Anweisung SetSerialPortStatus(#SerialPort, Attribute, Value)
Attribute ist entweder #PB_SerialPort_DTR oder #PB_SerialPort_RTS
Value ist 1 zum Aktivieren und 0 zum Deaktivieren der Leitung.
Welche Leitung benutzt wird, hängt davon ab, welche im Transceivermenü ausgewählt wurde.
Das folgende Bild zeigt die PTT-