qsynow

Eigene oder Gemeinschaftsprojekte, Klassen, Module, Codeschnipsel, HowTos, ...
Antworten
yoda
Moderator
Beiträge: 431
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge
Kontaktdaten:

qsynow

Beitrag von yoda » Sa 3. Jan 2015, 10:23

Moin,



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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste