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?