2016-05-22 27 views
0

Ich bin die Umsetzung ein RLAP Polling mit Python: im Anschluss an den Python-Beispielen hier: http://www.catb.org/gpsd/client-howto.html#_python_examplesPython - RLAP Verwendung auf nicht-Thread-Pooling

Es gibt einen Grund, warum ich den Code in hier verwenden kippe: https://gist.github.com/wolfg1969/4653340 Weil ich ungefähr 10 Prozesse in meinem System dämonisieren muss, so würde ich für die Catb eine für einfache Implementierung gehen.

Ich habe eine Frage zum folgenden Code, warum es nach zwei Zyklen stoppt? und wie könnte ich das beheben? Vielen Dank.

Antwort

1

Aufgrund der Frage war ich neugierig, wie man JSON-Daten aus dem GPS für die niedrigen oder langsamen GPS-Standortanforderungen fädelt.

Wenn der Socket, den der Client mit dem gpsd kommuniziert, voll ist, nicht gelesen oder entsorgt wird, schließt der gpsd diesen Socket.

Mir wurde gesagt, dass bei 4800 Baud in einer Sekunde viel passieren kann. Es ist keine Überraschung, dass der Daemon in etwa 8 bis 15 Sekunden auf einen vollen Puffer aufgibt, oder immer dann, wenn die Zeit abgelaufen ist.

I a threading shim for a Python 2-3 gpsd client

Das schrieb und the python client, erfordert den Mechanismus und Schlaf zu importieren, es zu verlangsamen, wenn nichts anderes hilft.

from time import sleep 
from agps3threaded import AGPS3mechanism 

agps_thread = AGPS3mechanism() # Instantiate AGPS3 Mechanisms 
agps_thread.stream_data(host='192.168.0.4') # From localhost(), or other hosts, by example, (host='gps.ddns.net') 
agps_thread.run_thread(usnap=.2) # Throttle the time to sleep after an empty lookup, default 0.2 two tenths of a second 

while True: # All data is available via instantiated thread data stream attribute. 
# line #140-ff of /usr/local/lib/python3.5/dist-packages/gps3/agps.py 
    print('-----') 
    print(agps_thread.data_stream.time) 
    print('Lat:{}'.format(agps_thread.data_stream.lat)) 
    print('Lon:{}'.format(agps_thread.data_stream.lon)) 
    print('Speed:{}'.format(agps_thread.data_stream.speed)) 
    print('Course:{}'.format(agps_thread.data_stream.track)) 
    print('-----') 
    sleep(30) 

Das würde Ihre Thread-Gpsd-Datenfrage lösen.

Wenn Sie wissen wollen, warum der about-Code nicht funktioniert, wo hat er abgebrochen oder gestoppt, und was waren die Fehlermeldungen?