Mein neustes Projekt zu dem eine Webseite gehört. http://www.qrg-liste.de.vu ist ein Konsolenprogramm das ein Link von der Webseite auswertet und den Empfänger auf die Frequenz Stellt.
Wenn du da eine Frequenz anklickst wird folgender Link aufgerufen qrg://006.165.000;000.000.000;AM;;
Auf der Konsole funktioniert es einwandfrei wenn die Parameter in Anführungszeichen gesetzt werden.
qsynow "006.165.000;000.000.000;AM;;"
die Konsole mag keine Semikolon. Das muss ich noch ändern. Auch weiß ich nicht wie ich dem System das Protokoll qrg:// bekannt mache. Viellicht kann jemand etwas dazu schreiben.
Das Programm braucht das Paket hamlieb genauer das Programm rigctl aus dem Paket.
Zuerst wird überprüft ob rigctl vorhanden ist und wen ja dann wird eine Konfigurationsdatei angelegt in der die Parameter angepasst werden müssen.
In zeile 50 - 66 werden die Parameter aus der Datei eingelesen.
in zeile 69 wird überprüft ob der Parameter "-g" übergeben wurde wen ja dann den zweiten abfragen. Ein "-g f" bewirkt das die aktuelle Frequenz aus dem Funkgerät
ausgelesen wird. Dient auch zum Überprüfen der Com Verbindung.
in Zeile 76 - 79 wird auf "-l" überprüft wen ja dann werden alle bekannten Funkgeräte aufgelistet.
ab Zeile 83 wird der Übergebene String ausgewertet und zerlegt und die Frequenz am Funkgerät eingestellt.
gambas code
' Gambas module file Public Sub Main() Dim ausgabe As String Dim hWhich As Process Dim hFile As File Dim mytrx As String Dim myport As String Dim myspeed As String Dim zeile As String Dim tmp As String[] Dim machma As String[] Dim txbefehl As String ' existiert rigctl hWhich = Exec ["which", "rigctl"] Wait For Read If hWhich.Value = 0 Then ' rigctl existiert If Exist("/home/" & user.Name & "/.qsynow.config") = False Then Print "lege Datei '.qsynow.config' an." hFile = Open "/home/" & user.Name & "/.qsynow.config" For Create Print #hFile, "########################################################" & Chr(13) Print #hFile, "# Konfigurationsdatei für qsynow (c) by DL8AAX #" & Chr(13) Print #hFile, "# qsynow benötigt rigctl aus dem Paket hamlib #" & Chr(13) Print #hFile, "# #" & Chr(13) Print #hFile, "# aufruf mit qsynow QRGa;QRGb;Mode #" & Chr(13) Print #hFile, "########################################################" & Chr(13) Print #hFile, " " & Chr(13) Print #hFile, "#TRX=Nr. Die Nummer deines TRX." & Chr(13) Print #hFile, "#Abfragen kannst du die Nr.mir rigctl -l " & Chr(13) Print #hFile, "trx=1 " & Chr(13) Print #hFile, " " & Chr(13) Print #hFile, "#Port an dem der TRX angeschlossen ist " & Chr(13) Print #hFile, "port=/dev/ttyS0 " & Chr(13) Print #hFile, "#port=/dev/ttyS1 " & Chr(13) Print #hFile, "#port=/dev/ttyS2 " & Chr(13) Print #hFile, "#port=/dev/ttyS3 " & Chr(13) Print #hFile, "#port=/dev/ttyUSB0" & Chr(13) Print #hFile, "#port=/dev/ttyUSB1" & Chr(13) Print #hFile, " " & Chr(13) Print #hFile, "# speed Die geschwindigkeit der schnittstelle " & Chr(13) Print #hFile, "speed=4800 " & Chr(13) Print #hFile, " " & Chr(13) Close hFile Else hFile = Open "/home/" & user.Name & "/.qsynow.config" For Read While Not Eof(hFile) Line Input #hFile, zeile If InStr(zeile, "=") Then tmp = Split(zeile, "=") Select Case tmp[0] Case "port" myport = tmp[1] Case "trx" mytrx = tmp[1] Case "speed" myspeed = tmp[1] End Select End If Wend Close hFile Endif If Application.Args[1] = "-h" Then Print "Hilfe" If Application.Args[1] = "-g" Then If Application.Args[2] = "f" Then txbefehl = "rigctl -m " & mytrx & " -s " & myspeed & " -r " & myport & " f" Shell txbefehl To ausgabe Print ausgabe Endif Endif If Application.Args[1] = "-l" Then Shell "rigctl -l" To ausgabe Print ausgabe End If If Application.Args[1] = "-c" Then Print "Standard TRX Nr. = " & Application.Args[2] Endif If InStr(Application.Args[1], ";") Then '' Ist ein ; im Srtring ? '' Ein Semikolon ist enthalten also eine Frequenz machma = Split(Application.Args[1], ";") '' String zerlegen machma[0] = Replace(machma[0], ".", "") '' Punkte entfernen machma[1] = Replace(machma[1], ".", "") '' rigctl aufrufen txbefehl = "rigctl -m " & mytrx & " -s " & myspeed & " -r " & myport & " F " & machma[0] & " M " & machma[2] Shell txbefehl To ausgabe Print txbefehl Print ausgabe End If Else Print " rigctl wurde nicht gefunden. \nDu must erst Hamlib installieren es enthält rigctl" Endif End