2017-10-05 1 views
0

Ich entwickle ein Programm, um ein Ereignis zu erzeugen, wann immer eine Geschwindigkeit auf einem GPS erreicht wird. Der Code, den ich zur Zeit zu ändern versuchen unter:gps events und wenn statements

from gps import * 
import time 
import threading 
import math 

class GpsController(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self.gpsd = gps(mode=WATCH_ENABLE) #starting the stream of info 
     self.running = False 

    def run(self): 
     self.running = True 
     while self.running: 
      # grab EACH set of gpsd info to clear the buffer 
      self.gpsd.next() 

    def stopController(self): 
     self.running = False 

    @property 
    def fix(self): 
     return self.gpsd.fix 

    @property 
    def utc(self): 
     return self.gpsd.utc 

    @property 
    def satellites(self): 
     return self.gpsd.satellites 

if __name__ == '__main__': 
    # create the controller 
    gpsc = GpsController() 
    try: 
     # start controller 
     gpsc.start() 
     while True: 
      #print "latitude ", gpsc.fix.laif 
      #print "longitude ", gpsc.fix.longitude 
      #print "time utc ", gpsc.utc, " + ", gpsc.fix.time 
      #print "altitude (m)", gpsc.fix.altitude 
      #print "eps ", gpsc.fix.eps 
      #print "epx ", gpsc.fix.epx 
      #print "epv ", gpsc.fix.epv 
      #print "ept ", gpsc.gpsd.fix.ept 
      print "speed (m/s) ", gpsc.fix.speed 
      #print "climb ", gpsc.fix.climb 
      #print "track ", gpsc.fix.track 
      #print "mode ", gpsc.fix.mode 
      #print "sats ", gpsc.satellites 
      time.sleep(1) 

#Error 
    #except: 
    # print "Unexpected error:", sys.exc_info()[0] 
     # raise 

    #Ctrl C 
    except KeyboardInterrupt: 
     print "User cancelled" 

    finally: 
     print "Stopping gps controller" 
     gpsc.stopController() 
     #wait for the thread to finish 
     gpsc.join() 

    print "Done" 

ich eine „if“ Anweisung, um das Programm hinzuzufügen bin zu wollen, zunächst mit der Geschwindigkeit aussieht übertragen werden und den Druck oder die Aktivierung ein Ereignisses, wenn die Geschwindigkeit einen erreicht bestimmte Nummer.

Ich bin mir nicht sicher, wo und wann ich den "if" Code hinzufügen soll.

Antwort

0

In der while-Schleife wäre am sinnvollsten. Es gab keine Spezifikation, ob das Ereignis einmal oder mehrmals auftreten sollte, wenn der "bestimmte Betrag" erreicht wird.

+0

Ich habe vergessen zu erwähnen, dass es eine kontinuierliche Schleife sein würde, die die Geschwindigkeit betrachtet und das Ereignis auslöst. Ich werde es testen, indem ich in der Zwischenzeit eine blinkende LED auslösen lasse. Danke für Ihre Hilfe! – Byrne