RS232 - Amateurfunk-Station DK1IO

Direkt zum Seiteninhalt

Hauptmenü

RS232

Die serielle Schnittstelle, auch CommPort genannt, ist nach wie vor das wichtigste Bindeglied zwischen PC und Funkgerät.
Mit den entsprechenden Steuerbefehlen kann die Bedienung des Geräts vom Computer aus erfolgen.
Es gibt inzwischen viele Programme, die davon Gebrauch machen.
Bei einigen Programmen beschränkt sich die Ausnutzung des CommPorts auf die Steuerung der PTT über die Leitungen RTS und/oder DTR. Andere senden ganze Befehlsequenzen in Stringform an das Funkgerät.
Die häufige Verwendung der seriellen Schnittstelle zur Steuerung von Funkgeräten steht jedoch in krassem Gegensatz zu ihrem Vorhandensein in PC und Laptop. Moderne Motherboards haben zwar noch eine Schnittstelle, die jedoch nicht herausgeführt ist. Darum muss sich der Besitzer selber kümmern. Bei Laptops/Tablets fehlen sie völlig. Dafür besitzen aber alle Rechner mindestens einen USB-Anschluss.
Hier springen die USB/Seriell-Adapter in die Bresche, die am Rechner an einen USB-Port angeschlossen werden und am Funkgerät an den RS232-Anschluss. Damit wird idealerweise ein kompletter CommPort nachgeahmt, der dann auch im Windows-Gerätemanager zu finden ist. Da aber auch Software in Form von Treibern beteiligt ist, beginnt hier das Problem. Es gibt nämlich zwar keine Vielzahl, aber doch einige unterschiedlich Chipsätze für die USB-Seriell-Adapter, und natürlich benötigen diese unterschiedliche Treiber. Wer das Problem umgehen will, nimmt Adapter mit FTDI-Chipsatz. Damit ist er aus dem Schneider. Beim Anschluss des Adapters an den Rechner wird von Windows der Treiber automatisch geladen, in diesem Fall also wiklich 'Plug and Play'.
Aber egal, ob eine originäre RS232-Schnittstelle oder ein Adapter, einige Dinge sind zu beachten.
Unter Windows ist die Verwendung der Schnittstelle sehr restriktiv. Nur die Anwendung, die den Port öffnet, kann ihn auch verwenden. Zugriffe von anderen Programmen werden abgewiesen. Das ist ärgerlich, wenn man selber mit einem Zusatzprogramm Funktionen steuern will. Eine Möglichkeit ist ein Y-Adapter für den Commport des Funkgeräts, so dass von zwei Rechneranschlüssen darauf zugegriffen werden kann. Das kann aber zu Konflikten führen.
Die gängige Methode ist deshalb die Verwendung von virtuellen CommPorts.
Moderne Transceiver verfügen über einen USB-Anschluss, häufig in Form einer USB-B-Buchse. Nach dem Laden eines entsprechenden Treibers stellen diese eine serielle Schnittstelle zur Verfügung, oft aber auch zwei. Dann braucht man keinen zusätzlichen virtuellen Port.
Die USB-Anschlüsse haben noch den großen Vorteil, dass auch die Audiodaten darüber laufen. Statt dreier Kabel (Seriell, Line-In, Line-Out) braucht man nur ein einziges USB-Kabel.
Mein Stations-Transceiver verfügt auch über einen USB-Anschluss, der jedoch nur eine serielle Schnittstelle bereitstellt. Deshalb benötige ich noch einen virtuellen CommPort zur Steuerung von Zusatzfunktioenen außerhalb des Digimode-Programms (WSJT-X).
Es gibt Programme (Virtual Serial Port Driver, Virtual Serial Port Emulator) die es erlauben, mit Hilfe virtueller Ports von mehereren Anwendungen auf den real vorhandenen Port zuzugreifen. Diese Programme sind jedoch kostenpflichtig und sehr teuer.
Deshalb habe ich nach eienem anderen Weg gesucht und gefunden. Mit com0com gibt es ein kostenloses Programm, mit dem man beliebig viele virtuelle serielle Nullmodemkabel erzeugen kann. Diese sind geddacht für die Verbindung zwischen verschiedenen Anwendungen.

Bild 1



Wenn man ein Paar dieser virtuellen Ports erstellt hat, erscheinen diese auch im Geräte-Manager.
Mit einem dieser virtuellen Kabel und etwas Software in einem Zusatzprogramm kann man den gewünschten Zweck erreichen. Bild 2 zeigt das Zusammenspiel der einzelnen Komponenten.
In WSJT-X wird COM11 als CAT-CommPort eingetragen. Die Ports COM12 und COM1 werden vom Zusatzprogramm geöffnet und für die Datenübertragung verwendet. Die von WSJT-X an COM11 übergebenen Anweisungen erscheinen an COM12 und werden vom Zusatzprogramm an COM1 zur Transceiversteuerung weitergeleitet.
Umgekehrt empfängt das Zusatzprogramm über COM1 die Antwort des Transceivers und sendet sie über COM12-COM11 an WSJT-X weiter.
Außerdem nimmt das Zusatzprogramm eigene Befehle entgegen und leitet sie über COM1 an den Transceiver weiter. Diese eigenen Befehle bereffen aktuell nur die Steuerung der Ausgangsleistung des Transceivers.
Neben der Transceiversteuerung übernimmt die Software des Zusatzprogramms auch die Übernahme der Daten des WSJT-X-ADIF-Logs in das eigene SQLite-Log.

Bild 2



Der folgnde Codeschnipsel zeigt, wie WSJT-X und der Transceiver miteinander kommunizieren.
Ein Timer löst periodisch ein Ereignis aus, das in der Hauptereignisschleife des Zusatzprogramms verarbeitet wird. Bei COM12 wird nachgefragt, ob von WSJT-X Daten vorliegen. Positivenfalls werden diese Datenn in einen Puffer geschrieben,
dessen Inhalt anschließend weiter an Port 1 zum Funkgerät gesendet werden. In umgekehrter Richtung wird es genauso gemacht, voila. Kein großes Ding, aber es funktioniert zuverlässig.

Repeat
 Select WaitWindowEvent()
   Case #PB_Event_Timer
     Select EventTimer()
       Case #Tmr_Comm
         int1 = AvailableSerialPortInput(#COM_12)
         If int1
           ReadSerialPortData(#COM_12, *CommBuf, int1)
           WriteSerialPortData(#COM_K3, *CommBuf, int1))
          EndIf
         int1 = AvailableSerialPortInput(#COM_K3)
         If int1
           ReadSerialPortData(#COM_K3, *CommBuf, int1)
           WriteSerialPortData(#COM_12, *CommBuf, int1)
         EndIf



Bluetooth-CommPorts
Es gibt nicht nur virtuelle, sondern auch drahtlose CommPorts, bei denen also die Daten via Funk übertragen werden.
Das ist dann extrem nützlich, wenn man kein Kabel verlegen will oder kann.
Benötigt wird dazu ein USB-Bluetooth-Adapter, der in einen USB-Anschluss des PC gesteckt wird.
Auf der anderen Seite, also an dem Gerät, das gesteuert werden soll, kommt ein Bluetooth-Seriell-Adapter zum Einsatz.
Dieser muss natürlich mit Strom versorgt werden, so dass sich das eingesparte serielle Kabel wieder relativiert.
Ein Akku tut es natürlich auch.
Als erstes müssen beide Adapter verbunden werden. In Windows 10 funktioniert das folgendermaßen:
Start - Einstellungen - Geräte - Bluetooth
Windows sucht nun nach neuen Bluetooth-Geräten. Wenn es den Seriell-Adapter gefunden hat, erscheint eine Meldung
Kopplungsbereit mit dem Namen oder Unbekannt.
Auf die Meldung klicken, dann auf
Koppeln klicken. In dem sich öffnenden Fenster ist die Gerätekennung einzugeben, meist 1234.
Dann auf
Weiter, und wenn alles normal verlaufen ist, kommt die Meldung Verbunden. Man kann sich jetzt ansehen, welche CommPorts Windows für die Bluetooth-Verbindung bereitgestellt hat:
Weitere Bluetooth-Optionen - COM-Anschlüsse
Hier sieht man die beiden neu geschaffenen CommPorts. Der mit
Ausgehend gekenzeichnete Port ist der, der für die Verbindung mit dem zu steuernden Gerät zuständig ist.
Wem die zugewiesenen Port-Nummern nicht genehm sind, kann diese im Gerätemanager ändern.































Zurück zum Seiteninhalt | Zurück zum Hauptmenü