Hauptmenü
Erweiterung der Funktionalität eines existierenden Prograqmms am Beispiel von WSJT-
Auf dieser Seite zeige ich, wie ich WSJT-
Diese Anforderungen sind:
Loggen in das eigene Log in einer SQLite-
Exportieren des QSO nach eQSL
Ändern der Sendeleistung über CAT
Verhindern von Mehrfach-
Die Anpassung ist keine Änderung von WSJT-
Die Informationen für seine Aktionen erhält das Programm von den UDP-
Die Daten für das Loggen liefert die Datei 'wsjtx_log.adi', die von WSJT-
Wenn die Datei 'wsjtx_log.adi' existiert, wird das QSO in die eigene Datenbank geschrieben und nach eQSL exportiert.
Wenn über CAT auf den Transceiver zugegriffen werden soll, besteht das Problem, dass die serielle Schnittstelle schon von WSJT-
Umgekehrt, wenn das Zusatzprogramm zuerst den CommPort öffnet, kommt WSJT-
Beim Programmstart wird vom Transceiver die Frequenz abgefragt und mittels einer Datenbanktabelle die für das jeweilige Band richtige FT8-
Ursprünglich waren die Zusatzelemente auf dem WSJTX-
Das obere Feld zeigt den Namen des QSO-
Bei den beiden
Die Sendeleistung wird durch Drehen des Mausrades verändert. Dabei muss sich der Cursor im Fenster des Zusatzprogramms befinden.
Da ich kein leeres Stroh dreschen möchte, werden Mehrfach-
Dieses Verhalten kann jedoch geändert werden. Durch Klicken auf das Feld für die Anzeiges des Landes wird dieses rot; jetzt kann jede Station angenommen werden. Das ist besonders sinnvoll bei eigenen CQ-
Bild 1
Der
Quellcode des Zusatzprogramms
kann von der Downloadseite heruntergeladen werden.
Zeitsynchronisierung mit GPS
Wer WSJT-
Bei mir ist es ein Navilock NL-
Bei Anschluss der GPS-
Bei Entfernen des USB-
Bild 2
Das Übertragungsverhalten des GPS wird für unsere Zwecke angepasst.
1. Um mehr Zeit für die Datenverarbeitung zu erreichen, wird die Baudrate auf 38400 erhöht.
2. Die Übertragung unterschiedlicher Datensätze wird auf einen reduziert. Dieser beginnt mit $GPGGA.
Dafür wird SiRF Demo benötigt. Dieses Programm habe ich bei SiRF-
Nach Start von
Jezt Action > Switch to NMEA-
In dem jetzt geöffneten Fenster stellen wir die Parameter für unsere beiden Ziele ein.
1. Rechts bei Baud rate 38400 auswählen
2. In der Spalte links sind die versschiedenen Datensätze aufgeführt. Alle bis auf den obersten mit der Bezeichnung GGA auf 0 setzen.
Jetzt rechts oben auf den Button Send klicken.
Nun sollte das GPS für unsere Zwecke eingerichtet sein.
Beim erstmaligen Start des Programms erscheint ein Fenster, in das die CommPort-
Damit wird der CommPort geöffnet; das Programm geht dann in eine Endlosschleife, in der die Prozedur
Als erstes wird so lange gewartet, bis eine evtl. anstehende Datensatz-
Da das Ändern der Systemzeit Administratorrechte erfordert, musste ich in den Compiler-
Nach dem Aufruf der Prozedur folgt eine Verzögerung, die dem Aktualisierungsintervall entspricht.
In der EXE-
Wer die Kaufversion von PureBasic besitzt, kann das Programm in der Entwicklungsumgebung laufen lassen und sieht dann zu jeder Minute die ersten 13 Zeichen des Datensatzes.
Bild 3
Für Testzwecke ist es sinnvoll, die Verzögerungszeit kleiner zu machen, z. B. auf 3 Sekunden. Also die vorletzte Programmzeile ändern auf
Delay(3000).
Wie gut die Übereinstimmung von DT ist, zeigt folgendes Bild..
Bild 4
Der PureBasic Sourcecode
; GPS-
; Version 190813
; DK1IO 2018-
EnableExplicit
Global hCOM_GPS
Global SP$
Global yST.SYSTEMTIME
Global *CommBuf = AllocateMemory(13)
If ReadFile(0, "GPS_Time.ini")
Define COM$ = ReadString(0, #PB_Ascii)
Else
OpenFile(0, "GPS_Time.ini")
Define COM$ = InputRequester("COM-
WriteStringN(0, COM$)
EndIf
CloseFile(0)
Procedure GPS_Time()
While AvailableSerialPortInput(0)
PurgeComm_(hCOM_GPS, #PURGE_RXCLEAR)
Delay(1)
Wend
ReadSerialPortData(0, *CommBuf, 13)
SP$ = PeekS(*CommBuf, 13, #PB_Ascii)
If SP$ = ""
End
EndIf
Debug SP$
FillMemory(*CommBuf, 13)
GetSystemTime_(yST)
yST\wHour = Val(Mid(SP$, 8, 2))
yST\wMinute = Val(Mid(SP$, 10, 2))
yST\wSecond= Val(Mid(SP$, 12, 2))
yST\wMilliseconds = 1
SetSystemTime_(yST)
EndProcedure
hCOM_GPS = OpenSerialPort(0, COM$, 38400, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 128, 128)
If Not hCOM_GPS
MessageRequester("Fehler", "Der GPS-
End
EndIf
Repeat
GPS_Time()
Delay(60000)
ForEver
Eine ausführbare EXE-
Da das Programm keine Bednutzeroberfläche hat, bietet es keine Möglichkeit für die Beendigung durch Mausklick oder Tastendruck. Deshalb wird das Programm durch Abziehen des USB-
Es dauert also maximal 1 Minute, bis das Programm beendet wird.
Die abgefragte CommPort-
Sollte sich die CommPort-