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?
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.
Um eine RS232 Schnittstelle unter TCP abzufragen kannst du COM2TCP nehmen. http://www.astrogeeks.com/AstroGeeks/COM2TCP/download.html
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...
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.
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?
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.
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.
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...
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
> 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.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.