1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#! /usr/bin/python
# -*- coding: utf-8 -*-
# Written by Dan Mandle http://dan.mandle.me September 2012
# License: GPL 2.0
#Importation des differentes librairies
from gps import *
from Tkinter import *
import threading
from time import *
import time
import os
gpsd = None #Initialise la variable globale
#=========Definition du Thread du GPS=======
class GpsPoller(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global gpsd #donne acces à la variable global gpsp
gpsd = gps(mode=WATCH_ENABLE) #commence la collect des données du GPS
self.current_value = None
self.running = True #setting the thread running to true
def run(self):
global gpsd
while gpsp.running:
gpsd.next() #this will continue to loop and grab EACH set of gpsd info to clear the buffer
print 'GPS Fonctionne' #Affiche un 1 pour voir si le thread fonctionne
#========Fin de la definition du Thread du GPS=======
#=========Definition des fonctions
def MAJ():
global Flag, VarLatitude, VarLongitude, VarTime #Rend ces variables globales visibles
VarLatitude=gpsd.fix.latitude #Acquisition de la Latitude
VarLongitude=gpsd.fix.longitude #Acquisition de la Longitude
VarTime=gpsd.utc #Acquisition de l'heure UTC
TextLatitude.configure(text='Latitude : ' +str(VarLatitude)) #MAJ du Label Latitude
TextLongitude.configure(text='Longitude : '+str(VarLongitude)) #MAJ du Label Longitude
TextTime.configure(text='Heure : '+str(VarTime)) #MAJ du Label Time
print 'MAJ Fonctionne' #Affiche un 2 pour voir si le pseudo-thread fonctionne
if Flag > 0: #Si la variable Flag est > à 0
Fenetre.after(100, MAJ) #On fait de la recursivite, la fonction s'appelle elle meme pour continuer la MAJ
def Quitter():
gpsp.running = False #Arret du Thread gpsp
gpsp.join() #Attend la fin du Thread gpsp
Fenetre.destroy() #Ferme la fenetre et le programme
def Start_it():
global Flag #Rend la variable globale visible
if Flag == 0:
Flag = 1 #Attribue la valeur 1 à la variable Flag
MAJ() #Appel la fonction MAJ
def Stop_it():
global Flag #Rend la variable blobale visible
Flag=0 #Attribue la valeur 0 à la variable Flag
#=========Programme principal==========
#--definition des variables globales--
Flag = 0 #Variable global flag pour sortir d'une boucle
VarLatitude = 0 #Variable pour la Latitude
VarLongitude = 0 #Variable pour la Longitude
VarTime = 0 #Variable pour l'heure
#=========Creation du Thread GPS et lancement du Thread GPS
gpsp = GpsPoller()
gpsp.start()
#=========Création de la fenetre=======
Fenetre=Tk() #Création de la fenetre
Fenetre.geometry("300x100") #Defini la taille de la fenetre
Fenetre.title ('Coordonnées GPS') #Définition du titre de la fenêtre
VarLatitude=gpsd.fix.latitude #Acquisition de la Latitude
VarLongitude=gpsd.fix.longitude #Acquisition de la Longitude
VarTime=gpsd.utc #Acquisition de l'heure UTC
TextLatitude=Label(Fenetre, text='Latitude : ' +str(VarLatitude)) #Création du Label Latitude
TextLatitude.pack(side = TOP) #Positionnement
TextLongitude=Label(Fenetre, text='Longitude : '+str(VarLongitude)) #Création du Label Longitude
TextLongitude.pack(side = TOP) #Positionnement
TextTime=Label(Fenetre, text='Heure : '+str(VarTime)) #Création du Label Time
TextTime.pack(side = TOP) #Positionnement
Button1=Button(Fenetre, text='Commencer MAJ', command=Start_it)
Button1.pack(side = LEFT)
Button2=Button(Fenetre, text='Fin MAJ', command=Stop_it) #Création du bouton FIN
Button2.pack(side = LEFT) #Positionnement
Button3=Button(Fenetre, text='Quitter', command=Quitter) #Creation du bouton QUITTER
Button3.pack(side=RIGHT) #Positionnement
#========Boucle principale========
Fenetre.mainloop() |
Partager