qsynow

Eigene oder Gemeinschaftsprojekte, Klassen, Module, Codeschnipsel, HowTos, ...
Antworten
yoda
Moderator
Beiträge: 645
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Nörten-Hardenberg
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 3 Gäste