Ich bin ein wenig neu in Python und ich versuche, eine Aufgabe zu erfüllen.Abrufen endgültigen Wert von while-Anweisung zurückgegeben
Was ich versuche
ich diesen Code haben zu erreichen, die GPS-Daten von einem Thread in einer while-Schleife sammelt und poste ich, dass die Daten auf meinem Webserver.
Problem
Das Problem hier ist, bei der ersten Ausführung die Breite/Länge ist immer Null und korrekte Werte kommen danach. Die while-Schleife ruft die GPS-Koordinaten in zufälliger Anzahl von 5-10 ab und sie werden alle in meine Datenbank geschrieben.
Das ist nicht korrektes Verhalten, da ich will nur eine Instanz der Ergebnisse in die Datenbank zu einem beliebigen Zeitpunkt geschrieben werden. Ich habe versucht, eine IF-Anweisung in der While-Schleife setzen, um zu sagen "Wenn Breite> 0 Upload-Ergebnisse in die Datenbank und brechen sonst Schleifen fortsetzen, aber ich bekomme die Syntax falsch zu bekommen.
Wie Sie den Code sehen, die an meine Post Datenbank ist innerhalb der while-Schleife, so dass alle
try:
gpsp.start() # start it up
print ' GPS'
while True:
print ' GPS reading'
print 'latitude ' , gpsd.fix.latitude
print 'longitude ' , gpsd.fix.longitude
if gpsd.fix.latitude > 0:
payload={'id':"P8",'lat':gpsd.fix.latitude,'lon':gpsd.fix.longitude}
r= requests.post("http://my-server.com/Pi/Loc.php",data=payload)
break
elif gpsd.fix.latutde=0:
except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
print "\nKilling Thread..."
gpsp.running = False
gpsp.join() # wait for the thread to finish what it's doing
print "Done.\nExiting."
Jede mögliche Unterstützung geschätzt.
Mein Problem ist nicht die Koordinaten „Erfassen“, aber für die Unterstützung ich suche die Syntax bei der Korrektur anmelden nur ein Ich bin mir bewusst, dass der Code, den ich gezeigt habe, ein bisschen falsch ist, das ist genau das, was ich für jetzt habe.
Dies ist das Ergebnis der Ausführung des Codes (Ich habe den Einzug behoben und das if entfernt). Es gab tatsächlich viel mehr Zeilen, aber ich habe sie aus Gründen der Einfachheit gelöscht. Ich versuche nur, einen Weg zu finden, die letzten zu meinem Webserver
GPS
GPS reading
latitude 0.0
longitude 0.0
GPS reading
latitude **.292548333
longitude **.379363333
GPS reading
latitude **.292548333
longitude **.379363333
GPS reading
latitude **.292546667
longitude **.379365
GPS reading
latitude **.292546667
longitude **.379365
GPS reading
latitude **.292546667
longitude **.379365
GPS reading
latitude **.292546667
longitude **.379365
GPS reading
latitude **.292503333
longitude **.379376667
GPS reading
latitude **.292498333
longitude **.379376667
Ihr Einzug ist falsch. Python stützt sich stark auf Einrückung. Sie vermissen auch eine Aussage unter dem 'elif' gänzlich. Und die 'elif'-Bedingung ist eine Aufgabe, kein Vergleich. – TigerhawkT3
Die meisten GPS-Systeme benötigen ein paar Sekunden bis zu einigen Minuten, um genügend Satelliten aufzunehmen, um eine Korrektur zu erhalten. Daher sollten Sie vor Ihrer While-Schleife ein 'time.sleep (10)' oder etwas hinzufügen, um dem GPS genügend Zeit zum Aufwärmen zu geben. Sie haben auch 'gpsp.start()', aber Sie verwenden 'gpsd' überall. –
@ TigerhawkT3 Ich weiß, dass der Code unvollständig ist, besonders unter elif, ich habe versucht, einen Weg zu finden, die Aufgabe zu erreichen, nur den letzten Artikel zu nehmen, anstatt alle – Grace