GPS-Aufzeichnungsdauer mit gpspipe

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Fussel132
User
Beiträge: 23
Registriert: Mittwoch 13. März 2019, 13:55

Hey Leute,
ich habe eine Frage, und zwar: mit dem Befehl

Code: Alles auswählen

gpspipe -d -l -r -o track.txt
zeichne ich die Daten von meinem NEO-6M GPD-Modul auf. Allerdings nur für eine Sekunde oder zwei. Wenn ich den Befehl einfach öfter laufen lasse, überschreibt er die Datei immer wieder. Meine Frage also, wie kann ich die Dauer der Aufzeichnung mit gpspipe einstellen?
Danke im voraus,
Fussel132
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das kann man ja durchaus googeln 🙄 https://gpsd.gitlab.io/gpsd/gpspipe.html

Aber besser wäre eh die Daten kontinuierlich zu holen & aus dem stdout eines subprocess.Popen-Objektes zu sammeln.
Fussel132
User
Beiträge: 23
Registriert: Mittwoch 13. März 2019, 13:55

Wie mache ich das denn? Weil wenn ich das Ergebnis davon noch später mit gpsbabel in eine .kml-Datei umwandeln kann, wäre das natürlich super. LG Fussel
Benutzeravatar
sparrow
User
Beiträge: 4183
Registriert: Freitag 17. April 2009, 10:28

Und das hat mit Python zu tun, weil?
Fussel132
User
Beiträge: 23
Registriert: Mittwoch 13. März 2019, 13:55

Naja, weil im Anfang ging es um dieses Python-Programm (ja sorry, es ist noch in P2).

Code: Alles auswählen

#!/usr/bin/env python
import subprocess
import time
from datetime import datetime as dt

# Terminate existing gpsd instances, start gpsd and sleep a few seconds
subprocess.call('sudo killall gpsd', shell=True)
subprocess.call('sudo /usr/sbin/gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock', shell=True)
time.sleep(30)

# Refresh the local time
subprocess.call('sudo service ntp restart', shell=True)
time.sleep(3)

#output file name with actual date
filename = "/home/pi/gpstrack-" + dt.now().strftime("%Y%m%d-%H%M%S") + ".txt"

# start gpspipe and output the GPS Data as NMEA to file
subprocess.call('gpspipe -d -l -r -o '+ filename +' ', shell=True)
LG Fussel132

Aber im Prinzip gehört es nicht wirklich zu Python....
Benutzeravatar
__blackjack__
User
Beiträge: 13064
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Fussel132: Diese ``shell=True`` sollten da nirgends sein, und ich sehe auch gar keinen Grund die zu verwenden. Das sollte sich auch recht leicht nach Python 3 portieren lassen.

Andererseits sehe ich bei dem Skript im Moment gar keinen Grund warum das überhaupt in Python geschrieben ist und nicht einfach ein Shell-Skript ist. Man kann das in ein Shell-Skript umwandeln in dem man fast nur unnötige Python-Syntax raus löscht. Einzig beim Zeitstempel für den Dateinamen muss man geringfügig etwas ändern:

Code: Alles auswählen

#!/bin/sh

# Terminate existing gpsd instances, start gpsd and sleep a few seconds
sudo killall gpsd
sudo /usr/sbin/gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
sleep 30

# Refresh the local time.
sudo service ntp restart
sleep 3

# Output file name with current timestamp.
filename="/home/pi/gpstrack-$(date +%Y%m%d-%H%M%S).txt"

# Start gpspipe and output the GPS Data as NMEA to file.
gpspipe -d -l -r -o "$filename"
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten