Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 22.09 KB | None | 0 0
  1. #! /usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. # APRS (c) by Dirk Unverzagt, DL8AAX
  6. # http://www.http://www.modellbau-yodi.de/aax/
  7. #
  8. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  9.  
  10. from Tkinter import *
  11. from time import strptime
  12. from calendar import timegm
  13. from ScrolledText import *
  14. import tkMessageBox
  15. import tkSimpleDialog
  16. import thread
  17.  
  18. import time
  19. import os
  20. from socket import *
  21. import string
  22. import sys
  23. import requests
  24. import threading
  25. from PIL import Image, ImageTk
  26. from tkFileDialog import *
  27.  
  28. version = '0.01'
  29. myHome= os.environ.get("HOME")
  30. ## globale Variablen
  31.  
  32. mys = None
  33. thread_flag = 1
  34. #rbtn_a=None
  35. af=0
  36. lastbtime=0
  37.  
  38. imageDisconnect='network_wired_disconnected.jpg'
  39.  
  40. imageConect='/usr/share/icons/gnome/24x24/status/connect_established.png'
  41. imageExit='/usr/share/icons/gnome/32x32/actions/application-exit.png'
  42. imageSendBake='/usr/share/icons/gnome/32x32/actions/go-home.png'
  43.  
  44.  
  45. global e1
  46. global e2
  47. global confi
  48. global einst_zeige
  49. global iststatus
  50. global verbunden
  51. verbunden=0
  52. einst_zeige =0
  53. istlogin=0
  54. istrxsave=0
  55. address = '195.190.142.207'
  56. port = 14577
  57. clx_call= 'DB0ERF-5'
  58. ABOUT_TEXT = "a text"
  59. DISCLAIMER = "b text"
  60. data=None
  61. rxsavedatabytes=0
  62. bakezeitH=0
  63. bakezeitM=0
  64. bakezeitS=0
  65.  
  66. #t = threading.Timer(1.0, machmabakezeit())
  67. #t.start()
  68.  
  69. def lade_liz():
  70.     global licence
  71.     try:
  72.         lic = open("license.txt","r")
  73.         licence = lic.read()
  74.         lic.close()
  75.     except:
  76.         licence="LICENCE.txt is not read..."
  77.  
  78.  
  79. def About():
  80.     abut=Toplevel()
  81.     abut.title("About")
  82.     abut.geometry("480x320")
  83.     abut.configure(bg='#C9C9C9')
  84.     abut.resizable(0,0)
  85.     ab1=Label(abut,text="pyAPRS",bg="#C9C9C9",font=("Sans",16,"bold"))
  86.     ab1.pack()
  87.     ab1_1=Label(abut,text="python APRS for HAM Users",bg="#C9C9C9",font=("Sans",12))
  88.     ab1_1.pack()
  89.     ab2=Label(abut,text="version v"+version,bg="#C9C9C9",font=("Sans",10))
  90.     ab2.pack()
  91.     ab3=Label(abut,text="author: Dirk Unverzagt, DL8AAX",bg="#C9C9C9",font=("Sans",10))
  92.     ab3.pack()
  93.     ab5=Label(abut,text="published in 00.2017",bg="#C9C9C9",font=("Sans",10))
  94.     ab5.pack()
  95.     lade_liz()
  96.     abscrollbar = Scrollbar(abut,orient=VERTICAL)
  97.     abscrollbar.pack(side=RIGHT, fill=Y)
  98.     ab4=Text(abut,font=("Courier",8),yscrollcommand=abscrollbar.set)
  99.     abscrollbar.config(command=ab4.yview)
  100.     ab4.pack()
  101.     ab4.insert(INSERT,licence)
  102.     ab4.config(state=DISABLED)
  103.     abut.protocol("WM_DELETE_WINDOW", about)
  104.     abut.withdraw()
  105. def speichern():
  106.         #print "passwort="+e2.get()
  107.         lic = open(myHome+"/pyaprs/.einstellungen.txt","w")
  108.         lic.write( "# Konfigurationsdatei für pyaprs "+version+" \n")
  109.         lic.write( "# (c) Dirk Ubcerzagt, DL8AAX \n")
  110.         lic.write( "#  \n")
  111.         lic.write( "call ="+e1.get()+"\n")
  112.         lic.write( "name ="+e2.get()+"\n")
  113.         lic.write( "LängengradOst ="+e4.get()+"\n")
  114.         lic.write( "LängengradWest ="+e5.get()+"\n")
  115.         lic.write( "Bakentyp =" +e6.get()+"\n")
  116.         lic.write( "Symbolart =" +e7.get()+"\n")
  117.         lic.write( "Symbolbild ="+e8.get()+"\n")
  118.         lic.write( "Bakentext =" +e9.get()+"\n")
  119.         lic.write( "Kommentar =" +e10.get()+"\n")
  120.         lic.write( "passwort ="  +e3.get()+"\n")
  121.         lic.write( "serverHost ="+e11.get()+"\n")
  122.         lic.write( "serverPort ="+e12.get()+" \n")
  123.         lic.write( "Adresse ="+e13.get()+"\n")
  124.         lic.write( "  \n")
  125.         lic.write( "  \n")
  126.         lic.close()
  127.         confiquit()
  128. def confiquit():
  129.     confi.quit()
  130.     confi.destroy()
  131. def prgende():
  132.     global verbunden
  133.     if verbunden==1:
  134.         mys.close()
  135.         verbunden =0
  136.     fenster.quit()
  137.     fenster.destroy()
  138.  
  139. def einst():
  140.     global einst_zeige
  141.     if einst_zeige==0:
  142.         confi.update()
  143.         confi.deiconify()
  144.         einst_zeige=1
  145.         lieskonfi()
  146.     else:
  147.         confi.withdraw()
  148.         einst_zeige=0      
  149.         #speichern()
  150.  
  151. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  152. # Fenster zu Programmeinstellungen
  153. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  154. confi =Tk()
  155. #confi =Toplevel()
  156. confi.protocol("WM_DELETE_WINDOW", confi)
  157. confi.title("pyAPRS")
  158. confi.geometry('320x440')
  159. if einst_zeige==0:confi.withdraw()
  160. label_call = Label(confi, text="Call",            height=0, width=10).grid(row=0, column=0, sticky=W, pady=4)
  161. label_call = Label(confi, text="Name",            height=0, width=10).grid(row=1, column=0, sticky=W, pady=4)
  162. label_pass = Label(confi, text="passwort",        height=0, width=10).grid(row=2, column=0, sticky=W, pady=4)
  163. label_west = Label(confi, text="Längengrad Ost",  height=0, width=13).grid(row=3, column=0, sticky=W, pady=4)
  164. label_ost  = Label(confi, text="Längengrad West", height=0, width=14).grid(row=4, column=0, sticky=W, pady=4)
  165. label_bt   = Label(confi, text="Bakentyp",        height=0, width=14).grid(row=5, column=0, sticky=W, pady=4)
  166. abel_sart  = Label(confi, text="Symbolart",       height=0, width=14).grid(row=6, column=0, sticky=W, pady=4)
  167. abel_sbild = Label(confi, text="Symbolbild",      height=0, width=14).grid(row=7, column=0, sticky=W, pady=4)
  168. label_btext= Label(confi, text="Bakentext",       height=0, width=14).grid(row=8, column=0, sticky=W, pady=4)
  169. label_komm = Label(confi, text="Kommentar",       height=0, width=14).grid(row=9, column=0, sticky=W, pady=4)
  170. label_sev  = Label(confi, text="serverHost",      height=0, width=14).grid(row=10, column=0, sticky=W, pady=4)
  171. label_sport= Label(confi, text="serverPort",      height=0, width=14).grid(row=11, column=0, sticky=W, pady=4)
  172. label_adr  = Label(confi, text="Adresse",         height=0, width=14).grid(row=12, column=0, sticky=W, pady=4)
  173.  
  174. e1=Entry(confi,width=10) # call
  175. e1.grid(row=0, column=1)
  176. e2=Entry(confi,width=10) # name
  177. e2.grid(row=1, column=1)
  178. e3=Entry(confi,width=10) # passw
  179. e3.grid(row=2, column=1)
  180. e4=Entry(confi,width=12) # lo
  181. e4.grid(row=3, column=1)
  182. e5=Entry(confi,width=12) # lw
  183. e5.grid(row=4, column=1)
  184. e6=Entry(confi,width=4) # Bakentyp
  185. e6.grid(row=5, column=1)
  186. e7=Entry(confi,width=4) # Symbolart
  187. e7.grid(row=6, column=1)
  188. e8=Entry(confi,width=4) # Symbolbild
  189. e8.grid(row=7, column=1)
  190. e9=Entry(confi,width=20) #  Bakentext
  191. e9.grid(row=8, column=1)
  192. e10=Entry(confi,width=20) #  Kommentar
  193. e10.grid(row=9, column=1)
  194. e11=Entry(confi,width=15) #  serverHost
  195. e11.grid(row=10, column=1)
  196. e12=Entry(confi,width=15) #  serverPort
  197. e12.grid(row=11, column=1)
  198. e13=Entry(confi,width=20) #  Adresse
  199. e13.grid(row=12, column=1)
  200. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201. # Eingabefelder mit Daten aus der einstellungendatei füllen
  202. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  203. def lieskonfi():
  204.     file = open(myHome+"/pyaprs/.einstellungen.txt","r")
  205.     for line in file:
  206.         #print(line.rstrip())
  207.         if '#' in line.rstrip():
  208.             print
  209.            
  210.         else:
  211.             l=line.rstrip()
  212.             larr=l.split(' =')
  213.             if 'call' in l:
  214.                 e1.delete(0,END)
  215.                 e1.insert(0,larr[1])
  216.             elif 'name' in l:
  217.                 e2.delete(0,END)
  218.                 e2.insert(0,larr[1])
  219.             elif 'passwort' in l:
  220.                 e3.delete(0,END)
  221.                 e3.insert(0,larr[1])
  222.             elif 'LängengradOst' in l:
  223.                 e4.delete(0,END)
  224.                 e4.insert(0,larr[1])   
  225.             elif 'LängengradWest' in l:
  226.                 e5.delete(0,END)
  227.                 e5.insert(0,larr[1])
  228.             elif 'Bakentyp' in l:
  229.                 e6.delete(0,END)
  230.                 e6.insert(0,larr[1])
  231.             elif 'Symbolart' in l:
  232.                 e7.delete(0,END)
  233.                 e7.insert(0,larr[1])   
  234.             elif 'Symbolbild' in l:
  235.                 e8.delete(0,END)
  236.                 e8.insert(0,larr[1])
  237.             elif 'Bakentext' in l:
  238.                 e9.delete(0,END)
  239.                 e9.insert(0,larr[1])
  240.             elif 'Kommentar' in l:
  241.                 e10.delete(0,END)
  242.                 e10.insert(0,larr[1])
  243.             elif 'serverHost' in l:
  244.                 e11.delete(0,END)
  245.                 e11.insert(0,larr[1])
  246.             elif 'serverPort' in l:
  247.                 e12.delete(0,END)
  248.                 e12.insert(0,larr[1])
  249.             elif 'Adresse' in l:
  250.                 e13.delete(0,END)
  251.                 e13.insert(0,larr[1])
  252.     file.close()
  253.     #~~~
  254.  
  255. btn_save=Button(confi, text='Speichern', command=speichern ).grid(row=13, column=0, sticky=W, pady=4)
  256. btn_quit=Button(confi, text='Abbrechen', command=einst ).grid(    row=13, column=1, sticky=W, pady=4)
  257.  
  258. def karte():
  259.     print ('Karte zeigen')
  260. def verbinde_(event):
  261.     verbinde()
  262. def machmaidentsatz():
  263.     user=e1.get()
  264.     user=user.upper()
  265.     user=user.replace ("\r", "")
  266.     pwt=e3.get()
  267.     pwt=pwt.replace ("\r", "")
  268.     tx_text="user "+user+" pass "+pwt+" vers pyaprs "+version
  269.     senden(tx_text)
  270. def verbindung():
  271.     global thread_flag
  272.     ## Verbindung zum Server aufbauen und periodisch abfragen
  273.     if thread_flag:
  274.         thread.start_new_thread(verbinden, ())
  275.         thread_flag = 0
  276. def verbindema():
  277.     global verbunden,asciiport,istlogin
  278.     if verbunden == 0:
  279.         verbindung()
  280.         machmaidentsatz()#identifikation senden
  281.         verbunden=1
  282.     else:
  283.         mys.close()
  284.         verbunden =0
  285.         istlogin=0
  286.         #print "verbindung getrennt"
  287.         iststatus.config(text="Verbindung getrennt mit "+ address + ', Port: ' + asciiport)
  288. def verbinden():
  289.     global mys, thread_flag,asciiport,istlogin,istrxsave,savedatas,rxsavedatabytes,rbtn_a
  290.    
  291.     mys=socket(AF_INET,SOCK_STREAM)
  292.     asciiport = e12.get()
  293.     asciiport = asciiport.replace ("\r", "")
  294.     address=e11.get()
  295.     address=address.replace ("\r", "")
  296.     iststatus.config(text="Verbinde mit "+ address + ', Port: ' + asciiport)
  297.     #print "Verbinde mit "+ address + ', Port: ' + asciiport
  298.     #textfenster.insert(END, '\n' + 'Verbinde mit ' + address + ', Port: ' + asciiport)
  299.     #textfenster.see(END)
  300.     try:
  301.         mys.connect((address,port))
  302.         verbunden = 1
  303.         ## Verbindung misslungen!
  304.     except:
  305.         iststatus.config(text='Keine Verbindung möglich, Server ist abgestürzt!')
  306.         verbunden = 0
  307.         # los gehts
  308.     else:
  309.        
  310.         iststatus.config(text="Verbinden mit "+ address + ', Port: ' + asciiport)
  311.         im = Image.open(imageConect)
  312.         tk_image = ImageTk.PhotoImage(im)
  313.         #btn_con.image=tk_image
  314.         while 1:
  315.             data=mys.recv(1024)
  316.             print data
  317.             #
  318.             #try:
  319.                 ## Hier muss der Empfangen-Befehl hin!
  320.                 #data=mys.recv(1024)
  321.                 #Verbindung beenden
  322.             if data == 'OAIC':
  323.                 #print 'Verbindung beendet . . .'
  324.                 iststatus.config(text='Verbindung beendet . . .')
  325.                 mys.close()
  326.                 verbunden = 0
  327.                 thread_flag = 1
  328.                 break
  329.             else:
  330.                 #print 'Daten'+time.strftime("%d.%m.%Y %H:%M:%S")+'\r'+data
  331.                 if istrxsave==1: # Alles was reinkommt speichern
  332.                     if len(data)>0:
  333.                         rxsavedatabytes=rxsavedatabytes+len(data)
  334.                         savedatas.write(data)
  335.                         #print 'Speicherere RX Daten '+str(rxsavedatabytes)
  336.                         iststatus.config(text='Speichere RX Daten '+str(rxsavedatabytes))
  337.                 if istlogin==0: # 0= identifizierung noch nichz gesendet
  338.                     machmaidentsatz() # identifikation senden
  339.                     sendbake()        # und gleich eine Bake mit GPS Koordinaten hinterher damit der Datenflus beginnt
  340.                     #print 'sende login'
  341.                     istlogin=1
  342.                     # Eingehende Daten filtern
  343.                 data = data.replace ("\r", "") # Zeilenumbruch am Ende entfernen
  344.                 machmabakezeit()
  345.                 if rbtn_a.get() =="1": # Nur Rohdaten ausgeben
  346.                     textfenster.insert(END, data)
  347.                     textfenster.see(END)
  348.                 elif rbtn_a.get() =="2": # mur MSG Daten ausgeben
  349.                     if "::" in data:
  350.                         pos_anf=string.find(data, "::")
  351.                         txcall=d[0:string.find(data,">")]
  352.                         rx_call=data[pos_anf+2:pos_anf+9+2]
  353.                         msg=data[pospp+9+3:len(d)]
  354.                         msg=msg.replace ("\n", "")
  355.                         posack=string.find(d,"{")
  356.                         msgnr=str(d[posack+3:len(d)]).zfill(3)
  357.                         textfenster.insert(END, txcall+"->"+rx_call+"{"+msgnr+"}:\n"+msg+"\n")
  358.                         textfenster.see(END)
  359.                        
  360.                 elif rbtn_a.get() =="3": # mur MSG Daten für mich ausgeben
  361.                     if "::" in data:
  362.                         pos_anf=string.find(data, "::")
  363.                         txcall=d[0:string.find(data,">")]
  364.                         rx_call=data[pos_anf+2:pos_anf+9+2]
  365.                         if rx_call==e1.get():
  366.                             posack=string.find(d,"{")
  367.                             msgnr=str(d[posack+3:len(d)]).zfill(3)
  368.                             msg=data[pospp+9+3:len(d)]
  369.                             msg=msg.replace ("\n", "")
  370.                             textfenster.insert(END, txcall+"->"+rx_call+"{"+msgnr+"}:\n"+msg+"\n")
  371.                             textfenster.see(END)
  372.                             if int(msgnr)>0:
  373.                                 sendeACK(txcall,msgnr)
  374.                 elif rbtn_a.get()=="4":
  375.                     # keine Ausgabe
  376.                     data=''
  377.                 else:
  378.                     print data
  379.                 time.sleep(0.2)
  380.             #except:
  381.                 #break   ## was schiefgelaufen, das wars . . .
  382.                 #iststatus.config(text='Hm.. mit der Verbindung ist was schief gelaufen...')
  383. def sendeACK(txcall,msgnr):
  384.     adr=e13.get()
  385.     adr=adr.replace ("\n", "")
  386.     mycall=e1.get()
  387.     mycall=user.upper()
  388.     mycall=mycall.replace ("\n", "")
  389.     tx_text=mycall+">"+ adr + "::"+txcall+":ACK"+msgnr
  390.     senden(tx_text)
  391.  
  392. def senden(tx_text):
  393.     global mys, verbunden
  394.     ##
  395.     if verbunden==1:
  396.         #  msg_liste.addEntry(msg)
  397.         tx_text = tx_text + "\n"
  398.         mys.send(tx_text)
  399.         textfenster.insert(END, tx_text)
  400.         textfenster.see(END)
  401.         iststatus.config(text="sende:" +  tx_text)
  402.         #print "sende:" +  tx_text
  403.     else:
  404.        iststatus.config(text="!!!FEHLER!!!  Konte nicht senden, keine Verbindung zum Server!")
  405.  
  406. def machmabakezeit():
  407.     global bakezeitM,bakezeitS
  408.     #bm=time.strftime("%M")
  409.     #bs=time.strftime("%s")
  410.     if verbunden==1:
  411.         bakezeitS=bakezeitS-1
  412.         if bakezeitS<1:
  413.             bakezeitS=59
  414.             bakezeitM=bakezeitM-1
  415.         bakeuhr.config(text=str(bakezeitM)+":"+str(bakezeitS))
  416.         if bakezeitM<1 and bakezeitS<1:
  417.             sendbake()
  418. def sendbake():
  419.     global lastbtimehuman,lastbtime,bakezeitM,bakezeitS
  420.     #
  421.     #  Source Path Header — “AEA” Format
  422.     #
  423.     # DL8AAX    >APRS,TCPIP*:!5138.00N/00952.98Ey DL8AAX Pytonscript www.modellbau-yodi.de/aax/
  424.     # -absender-             !---GPS--!--GPS----! --------------Bakentext----------------------
  425.     #                        !        !         --y=
  426.     #                        !         -- /=
  427.     #                        --!=
  428.     #----------------------------------------------------------------------------------------------------
  429.     # AX.25 UI-FRAME FORMAT                                                                             !
  430.     #----------------------------------------------------------------------------------------------------
  431.     # Flag ! Destination ! Source    ! Digipeater ! Control     !  Protocol !INFORMATION FIELD! FCS!Flag!
  432.     #      ! Addresses   ! Addresses ! Addresses  ! Field  (UI) !     ID    !                 !    !    !
  433.     #----------------------------------------------------------------------------------------------------
  434.     #  1   !     7       !    7      ! 0 - 56     !     1       !     !     !      1-256      !  2  !  1!
  435.     #----------------------------------------------------------------------------------------------------
  436.     if verbunden==1:
  437.        
  438.         user=e1.get()
  439.         user=user.upper()
  440.         user=user.replace ("\n", "")
  441.         adr=e13.get()
  442.         adr=adr.replace ("\n", "")# APRS,TCPIP*:
  443.         lo=e4.get()               # länge ost 00952.98E
  444.         lo=lo.replace ("\n", "")
  445.         lw=e5.get()               # länge west
  446.         lw=lw.replace ("\n", "")
  447.         symbolart=e7.get()
  448.         symbolart=symbolart.replace ("\n", "")
  449.         baketyp=e6.get()
  450.         baketyp.replace ("\n", "")
  451.         sbild=e8.get()
  452.         sbild=sbild.replace ("\n", "")
  453.         Bakentext=e9.get()
  454.         Bakentext.replace ("\n", "")
  455.         #
  456.         tx_text=user +">"+ adr + ":"+ baketyp +lw+symbolart+lo+sbild+Bakentext+"\n"
  457.         #print tx_text
  458.         istbtime=int(time.strftime("%H%M%S"))
  459.         #print str(istbtime)+">"+str(lastbtime+(30*15))
  460.         Bakenpause=5# 15 min pause :)
  461.         if istbtime>lastbtime+Bakenpause:
  462.             senden(tx_text)
  463.             #textfenster.insert(END, tx_text+"\r")
  464.             #textfenster.config(foreground="blue")
  465.             lastbtime=int(time.strftime("%H%M%S"))
  466.             lastbtimehuman=time.strftime("%H:%M")
  467.             bakezeitM=Bakenpause+15
  468.             bakezeitS=int(time.strftime("%S"))
  469.             bakeuhr.config(text=str(bakezeitM)+":"+str(bakezeitS))
  470.  
  471.         else:
  472.             iststatus.config(text="Bake wurde doch erst um "+lastbtimehuman+" gesendet")
  473.  
  474. def rxsave():
  475.     global istrxsave,savedatas
  476.     if istrxsave==0:
  477.         savedatei=asksaveasfilename(parent=fenster, title='Speichern unter...',initialdir=myHome+"/pyaprs/")
  478.         if len(savedatei)>0:
  479.             #print savedatei
  480.             savedatas = open(savedatei,"w")
  481.             istrxsave=1
  482.     else:
  483.         savedatas.close()
  484.         istrxsave=0
  485.  
  486. def ShowChoice():
  487.     print rbtn_a.get()
  488. def msgsendfenster():
  489.     global zielcall,tx_text
  490.     txfenster=Toplevel()
  491.     txfenster.title("pyAPRS MSG senden")
  492.     txfenster.geometry('480'+"x"+'200')
  493.     #
  494.     #-----------------------------------------------------
  495.     #   Buttoneingabefeld                                _
  496.     #-----------------------------------------------------
  497.     zielcall=Entry(txfenster,width=15)
  498.     zielcall.grid(row=1,column=0,sticky=W,padx=5)
  499.     tx_text=Entry(txfenster,width=70)
  500.     tx_text.grid(row=2,column=0,sticky=W,padx=5)
  501.  
  502.     btnTX=Button(txfenster, text='TX MSG',command=msgsenden,   width=3,height=1, foreground='red',bg='#C9C9C9' )
  503.     btnTX.grid(row=3,column=0,sticky=W,padx=5)
  504.  
  505. def msgsenden():
  506.     user=e1.get()
  507.     user=user.upper()
  508.     user=user.replace ("\n", "")
  509.     adr=e13.get()
  510.     adr=adr.replace ("\n", "")
  511.     baketyp=e6.get()
  512.     baketyp.replace ("\n", "")
  513.     msg=tx_text.get()
  514.     #msg=str(msg)
  515.     if len(msg)>67:
  516.         msg=msg[0:67]
  517.     msg_text=user +">"+ adr + baketyp +"::"+zielcall.get().ljust(9)+":"+msg+"\n"
  518.     print user    +">"+ adr + baketyp +"::"+zielcall.get()+":"+tx_text.get()+"\n"
  519.     textfenster.insert(END,msg_text)
  520.     textfenster.see(END)
  521.     tx_text.delete(0,END)
  522.  
  523. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  524. # Hauptfenster
  525. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  526. fenster = Toplevel()
  527. fenster.title("pyAPRS")
  528. fb='800'
  529. fh='425'
  530. fenster.geometry(fb+"x"+fh)
  531.  
  532. lframe=LabelFrame(fenster, text="",padx=5, bg='#C9C9C9')
  533. lframe.grid(row=0,column=0,sticky=W,padx=5)
  534.  
  535. rframe=LabelFrame(fenster,text="",padx=5,bg='#C9C9C9')
  536. rframe.grid(row=0,column=1,padx=5)
  537.  
  538. topframe = LabelFrame(lframe,text="top",bg='#C9C9C9')#.place(x = 5, y = 5, height= 30,width=int(fb)-10)
  539. #topframe.pack(padx=5, expand=0,side=LEFT)
  540. topframe.grid(row=0,column=0)
  541.  
  542. ausgabelabel = LabelFrame(lframe, text="Ausgabe",bg='#C9C9C9' )#.place(x = 5, y = 40, height= 230,width=int(fb)-10)
  543. #ausgabelabel.pack(padx=5, expand=0,side=LEFT)
  544. ausgabelabel.grid(row=2,column=0)
  545.  
  546. statuslabel = LabelFrame(lframe,  text="Status",bg='#C9C9C9')
  547. #statuslabel.pack(padx=5, expand=0,side=LEFT)
  548. statuslabel.grid(row=3,column=0)
  549.  
  550. mhlabel=LabelFrame(rframe, width=100, text="MH", height=400, bg='#C9C9C9')
  551. #mhlabel.pack(padx=605, expand=1,side=RIGHT)
  552. mhlabel.grid(row=0,column=1,padx=5)
  553.  
  554. rbtn_a = StringVar(fenster)
  555. rbtn_a.set(None) # initialize
  556. #v.set(None)
  557.  
  558. b = Radiobutton( ausgabelabel, text="Rohdaten   ",variable=rbtn_a, value="1",bg='#C9C9C9',command=ShowChoice)#.place(x = 50, y = 45)   
  559. b.grid(row=0,column=0,sticky=W,padx=4)
  560. b.select()
  561. b2 = Radiobutton(ausgabelabel, text="Alle MSGs  ",variable=rbtn_a, value="2",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)   
  562. b2.grid(row=0,column=0,sticky=W,padx=99)
  563. b3 = Radiobutton(ausgabelabel, text="Meine MSGs ",variable=rbtn_a, value="3",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)   
  564. b3.grid(row=0,column=0,sticky=W,padx=192)
  565.  
  566.  
  567. b4 = Radiobutton(ausgabelabel, text="keine Ausgabe ",variable=rbtn_a, value="4",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)
  568. b4.grid(row=0,column=0,sticky=W,padx=292)
  569.  
  570. btnTX=Button(ausgabelabel , text='TX MSG',command=msgsendfenster,   width=3,height=1, foreground='red',bg='#C9C9C9' )
  571. #btn_exit=Button(ausgabelabel , text='TX MSG',command=msgsendfenster,   width=3,height=1, foreground='red',bg='#C9C9C9' )
  572. btnTX.grid(row=0,column=0,sticky=W,padx=420)
  573.  
  574. bakestatus=Label(ausgabelabel,text="TX Bake in",bg='#C9C9C9' )
  575. bakestatus.grid(row=0,column=0,sticky=W,padx=480)
  576. bakeuhr=Label(ausgabelabel,text="00:00",bg='#C9C9C9' )
  577. bakeuhr.grid(row=0,column=0,sticky=W,padx=550)
  578. ###
  579. textfenster = ScrolledText(ausgabelabel,width=86,height=14,background='#baeaff')#.place(x = 10, y = 55)
  580. textfenster.grid(row=3,column=0,sticky=W,padx=4)
  581. ###
  582.  
  583. iststatus=Label(statuslabel,text="Moin...", width=90)
  584. iststatus.grid(row=3,column=0)
  585.  
  586. im2 = Image.open(imageExit)
  587. tk_image2 = ImageTk.PhotoImage(im2)
  588. btn_exit=Button(topframe , image = tk_image2,command=prgende,   width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=540, pady=1)
  589.  
  590. im = Image.open(imageDisconnect)
  591. tk_image = ImageTk.PhotoImage(im)
  592. btn_con= Button(topframe ,image = tk_image, command=verbindema,width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=1, pady=1)
  593.  
  594. im3 = Image.open(imageSendBake)
  595. tk_image3 = ImageTk.PhotoImage(im3)
  596. btn_exit=Button(topframe , image = tk_image3,command=sendbake,   width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=80, pady=1)
  597.  
  598. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  599. # Menü Hauptfenster
  600. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  601. menu = Menu(fenster)
  602. fenster.config(menu=menu)
  603. filemenu = Menu(menu)
  604. menu.add_cascade(label="File", menu=filemenu)
  605. filemenu.add_command(label="Karte zeigen", command=karte)
  606. filemenu.add_command(label="Einstellungen", command=einst)
  607. filemenu.add_command(label="RX Daten Speichern", command=rxsave)
  608. filemenu.add_separator()
  609. filemenu.add_command(label="Exit", command=fenster.quit)
  610.  
  611. helpmenu = Menu(menu)
  612. menu.add_cascade(label="Help", menu=helpmenu)
  613. helpmenu.add_command(label="About...", command=About)
  614.  
  615. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  616. # Existiert eine Dateimit den Einstellungen ?
  617. # Wenn nicht wird sie angelegt
  618. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  619. iststatus.config(text="Prüfe Config Datei...")
  620. #  
  621. if os.path.exists(myHome+"/pyaprs/"):
  622.     iststatus.config(text="Config Datei existiert")
  623.     #print "Config Datei existiert"
  624. else:
  625.     iststatus.config(text="Config Datei wird erstellt..."+myHome+"/pyaprs/.einstellungen.txt")
  626.     #print "Config Datei wird erstellt..."+myHome+"/pyaprs/.einstellungen.txt"
  627.     os.mkdir(myHome+"/pyaprs/")
  628.     lic = open(myHome+"/pyaprs/.einstellungen.txt","w")
  629.     lic.write( "# Konfigurationsdatei für pyaprs "+version+" \n")
  630.     lic.write( "# (c) Dirk Ubcerzagt, DL8AAX \n")
  631.     lic.write( "#  \n")
  632.     lic.write( "call =n0call  \n")
  633.     lic.write( "name =otto  \n")
  634.     lic.write( "LängengradOst =00953.25E  \n")
  635.     lic.write( "LängengradWest =5131.04N  \n")
  636.     lic.write( "Bakentyp == \n")
  637.     lic.write( "Symbolart =/  \n")
  638.     lic.write( "Symbolbild =y  \n")
  639.     lic.write( "Bakentext =   \n")
  640.     lic.write( "Kommentar =  \n")
  641.     lic.write( "passwort =12960  \n")
  642.     lic.write( "serverHost =195.190.142.207  \n")
  643.     lic.write( "serverPort = \n")
  644.     lic.write( "Adresse =APRS,TCPIP*:  \n")
  645.     lic.write( "  \n")
  646.     lic.write( "  \n")
  647.     lic.close()
  648.  
  649. iststatus.config(text="Lese Konfigurationsdatei...")
  650. lieskonfi()
  651.  
  652.  
  653. fenster.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement