2017-10-05 13 views
0

私は、gpsで速度に達するたびにイベントを生成するプログラムを開発しています。私は現在、修正しようとしているコードは以下の通りです:私は文の最初の速度を見てプログラムに送信し、されている「場合」の印刷やイベントを有効にするには速度が到達するたびに追加したいと思っていますgpsイベントとifステートメント

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" 

特定の番号。

"if"コードを追加する場所と時期はわかりません。

答えて

0

whileループで最も理にかなっています。 「特定の金額」に当たったときにイベントが1回または複数回起こるべきかどうかに関する指定はなかった。

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: 
      if gspc.fix.speed > event_trigger_amt: 
       print "speed (m/s) ", gpsc.fix.speed 
       doEvent() 
      time.sleep(1) 

    #Ctrl C 
    except KeyboardInterrupt: 
     print "User cancelled" 

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

私はスピードを見て、イベントをトリガーする連続ループになることを忘れていました。私はイベントのトリガーが瞬間的に点滅することによってそれをテストします。ご協力ありがとうございました! – Byrne

関連する問題