mikrocontroller.net

Forum: PC-Programmierung GPS Daten ins Internet streamen


Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier ein Logfile mit GPS daten.

Diese Daten möchte ich in einer Endlosschleife abspielen.
Dabei soll die GPS Position sekündlich upgedate, und von meiner 
Applikation angezeigt werden. Das ganze übers Internet, d.h. ich möchte 
die Daten z.B. auch von der Arbeit aus sehen können.

Ich stelle mir das (Laienhaft) so vor, daß ich entweder auf meinen PC 
oder aber auf dem Server wo meine Homepage liegt, ein Script laufen 
lasse daß die Daten bereitstellt.
Meine C# Applikation (habe da schon was, muss halt dann entsprechend 
erweitert werden) holt die Daten dann vom Server ab, verarbeitet sie 
weiter und stellt sie dann dar.

Also vorhanden ist:
- Server (bei Strato)
- C# Applikation zum Anzeigen der Daten
- GPS Log file
- viel Zeit über Weihnachten :-)

Mein Frage ist jetzt, wie macht man soetwas am geschicktesten?

Autor: Atmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
peterguy schrieb:
> Also vorhanden ist:
> - Server (bei Strato)
> - C# Applikation zum Anzeigen der Daten
> - GPS Log file
> - viel Zeit über Weihnachten :-)
>
> Mein Frage ist jetzt, wie macht man soetwas am geschicktesten?

Das Programm auf Seiten des Servers dürfte in Python in maximal 20 
Zeilen durchprogrammiert sein. Die einzigste Aufgabe ist ja, die 
GPS-Daten von der seriellen Schnittstelle an ein (TCP/UDP/...)-Socket zu 
liefern.

Der Client braucht eine virtuelle RS232 Verbindung, du emulierst quasi 
deine RS232-Schnittstelle, welche ihre Daten von deiner 
Server-Applikation bezieht. Interessant wäre das auf Betriebssystemebene 
zu tun, so das dein Programm davon garnichts mitkriegt und du damit eine 
transparente Schicht hast.

Schwerpunkte also:
 - RS232 -> Socket
 - Transparente, virtuelle Schnittstelle welche ihre Daten von einem 
Socket anstatt der "echten" Schnittstelle bezieht

Schoenes Projekt um mit den niederen Schichten von Windows, Linux & Co. 
Bekanntschaft zu machen.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um eine RS232 Schnittstelle unter TCP abzufragen kannst du COM2TCP 
nehmen.

http://www.astrogeeks.com/AstroGeeks/COM2TCP/download.html

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ein Python Script auf der Serverseite.
Blöde Frage, wie macht man das? Das Programmieren kriege ich schon hin, 
aber wie richte ich das Script auf meinem Server ein? Wie starte ich es? 
Und wie verbindet sich meine Applikation dann mit dem Script?
Ich meine, es wird doch bestimmt komplizierter sein als das ding zu 
erstellen und an beliebige Stelle auf meinem Server hochzuladen (oder?)


> Schwerpunkte also:
>  - RS232 -> Socket
Hmm, also ich streame ja nicht direkt von nem GPS Gerät.
Ich habe vielmehr eine fertige Logdatei, die ich wieder abspielen möchte 
(mit dem serverseitgen script).
Das Ganze dient dazu, um eine (noch fehlende) GPRS Datenverbindung zu 
simulieren.

Es muss Clientseitig nicht unbedingt eine virtuelle RS232 Schnittstelle 
sein, die ich in meiner Anwendung nutze (Ist natürlich ok, aber muss 
nicht zwingend sein).
Auf jeden Fall vermeiden möchte ich in die Lowlevel Schichten von 
Windows vorzudringen. Eine fertige Library oder Assembly wäre mir am 
liebsten. Keine Ahnung ob es da was gibt...

Autor: Weinbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das recht verstanden habe hast Du n Logfile,
im ASCII-NMEA-Format vorliegen, die dann auf Deinem
Server (Strato) liegt.
Die willst Du dann per #c verarbeiten.
Die Verarbeitung soll nicht auf dem Server sondern
beim Client laufen.
Seh ich keine Problemchen ... einfach per HTTP oder FTP
zugreifen und die Datei ziehen.
Blöder wirds bei serverseitiger Verarbeitung ...
Da wäre dann PHP eine Möglichkeit.
Noch doofer wirds bei direkter Verarbeitung aktueller
Daten ... Die müssten dann jede Sekunde an den Server
geschickt werden, die Cronjobs bei Strato unterstützen
ein sekündliches Pollen nicht.
Ginge aber auch einfach durch Aufruf einer PHP-Seite mit
Übergabe des NMEA-Codes als GET-Variable, die dann an
eine Logdatei angehängt werden. Machbar.

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
peterguy schrieb:
> Also vorhanden ist:
> - Server (bei Strato)

Strato bietet vieles an! Hast Du wirklich einen Server oder nur Hosting?

Was möchtest Du machen? - Jede Sekunde soll der Server eine Seite 
aktualisieren und du pollst einfach die Seite regelmäßig an oder soll 
der Server deine Anwendung benachrichtigen wenn eine neue Zeile gelesen 
wurde?

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten!

Also ich möchte folgendes (wie Weinbauer es schon treffend beschrieben 
hat):
GPS Logdatei im ASCII Format mit NMEA Strings liegt auf dem Server.
Sekündlich (oder auch schneler) soll ein Datensatz aus dieser Datei 
ausgelesen werden und irgendwie meinem Client (C# Anwendung) zur 
Verfügung gestellt.

Wenn ich das richtig verstehe wird das größte Problem, die GPS Daten auf 
dem Server zyklisch bereitzustellen? Meine C# Anwendung soll einfach nur 
jede Sekunde einen neuen NMEA String bekommen, d.h. der Server muss die 
Datei öffnen, zyklisch Zeile für Zeile auslesen und die gelesenen Daten 
bereitstellen.


> Strato bietet vieles an! Hast Du wirklich einen Server oder nur Hosting?
>
> Was möchtest Du machen? - Jede Sekunde soll der Server eine Seite
> aktualisieren und du pollst einfach die Seite regelmäßig an oder soll
> der Server deine Anwendung benachrichtigen wenn eine neue Zeile gelesen
> wurde?
Ob ich einen Server oder nur Hosting habe weiß ich nicht, vermutlich 
allerdings "nur" Hosting. Ist so ein 3€ pro Monat Paket.
Im Prinzip sollte der Server meine Anwendung benachrichtigen, daß eine 
neue Zeile gelesen wurde und die gelesenen Daten rüberschicken/abholen 
lassen.

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Server bedeutet etwas bereitzustellen, Client bedeutet etwas damit zu 
machen. Der Client soll ein Browser sein. Dann hat man mit Javascript 
die Moeglichkeit die Anfrage zu wiederholen. Ein Javascript auf der 
WebSeite wiederholt die Anfrage.

Autor: Rinde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mh, wäre nicht folgendes sehr einfach zu machen?

Du machst eine ganz einfache Webseite mit PHP. Die liefert einfach den 
aktuellen wert aus deiner GPS-Datei.
Das sollte mit 5 Zeilen Code möglich sein.

Die C# Anwendung schickt nun im Sekundentakt einen HTTP Request an deine 
Webseite, und bekommt so dass zurück, was dein PHP-Skript generiert.
Die Daten brauchst du fdann nurnoch auszuwerten. Auch hier sollten ein 
paar Zeilen Code genügen...

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
peterguy schrieb:
> Ob ich einen Server oder nur Hosting habe weiß ich nicht, vermutlich
> allerdings "nur" Hosting. Ist so ein 3€ pro Monat Paket.

Das ist aber wichtig zu wissen, denn z.B.

Rinde schrieb:
> Du machst eine ganz einfache Webseite mit PHP.

geht nicht, wenn Du kein PHP hast (BasisWeb für 1,58 € und BasisWeb L 
für 2,59 € haben kein PHP und Perl).

http://www.strato.de/hosting/basicweb/pakete/index.html

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Du machst eine ganz einfache Webseite mit PHP. Die liefert einfach den
> aktuellen wert aus deiner GPS-Datei.
> Das sollte mit 5 Zeilen Code möglich sein.

> Die C# Anwendung schickt nun im Sekundentakt einen HTTP Request an deine
> Webseite, und bekommt so dass zurück, was dein PHP-Skript generiert.
> Die Daten brauchst du fdann nurnoch auszuwerten. Auch hier sollten ein
> paar Zeilen Code genügen...

Denke so etwas könnte funktionieren.
Hört sich nur (für mich als Laien zumindest) etwas gefrickelt an, gibts 
da nicht noch andere Möglichkeiten als HTTP?
Ich mein die ganzen Onlinespiele z.b., die schicken ja auch nicht HTTP 
requests hin und her (oder?)

Wobei, im Prinzip könnte man das wirklich machen über ein Webbrowser C# 
Control + html-Seite mit Javascript. Das wird dann mit invokes und 
callbacks mit meiner Anwendung verknüpft.
So in der Art spreche ich aus C# ja auch mein GoogleEarth Plugin an.


Zu meinem Web-Paket bei Strato:
"STRATO PowerWeb Basic" schimpft sich das Ganze (und kostet 3,99€ / 
Monat). Hatte vor einiger Zeit mal aufgerüstet, um meine mit Joomla 
erstellte Seite dort hosten zu können.
Also MySQL läuft da auf jeden Fall drauf.

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Server kann nix schicken bei Aktualisierung ...
wobei ... hmmm er könnte einen Request ausführen.
Dann müsste nur noch ... nee Käse, woher soll der Server denn wissen,
dass neue Daten da sind.
Das ginge nur mit einem Script, z.B. in php.
Ein Client ruft ein Script z.B. mit dem aktuellen NMEA als
$_GET Variable auf, das Script legt diesen String dann in der Logdatei
ab und führt seinerseits auf einen Dyndns-Port einen Request aus,
der dann auf Deinen Rechner forwarded wird wo dann die C# auf den
Request hin beim Server die aktuellen Daten per FTP holt ...

brrrrr ... nicht elegant, aber möglich.

Autor: php (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das php file hat 1 zeile und die lautet in etwa
<?php file_put_contents("bla.txt", $_GET["mindfck"]);?>

dein problem ist tatsächlich die verbindung zum server
um http wirst du nicht herum kommen, weil du quasi mit deinem strato 
paket nur für http bezahlst und für nichts sonst

aber schau dir dochmal die winsock tutorials an,
das ist im grunde auch nur halb so wild

Autor: php (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.