Seite 1 von 1

GPS-Daten weiterverarbeiten

Verfasst: 04.03.2007 - 19:49
von fury110
Hallo zusammen,

Ausstattung:
Holus GPSlim240 (SiRF Star III, NMEA0183, v.2.2, BlueTooth 1.2)
Vodafone VPA compact I (WM2003, 2.ed.)

Folgendes Problem liegt vor mir:
Ich möchte meine aktuelle Position benutzen, um damit lokale Informationen von meinem Server über eine http-Verbindung abzurufen.
Die Verbindung zum Server hab ich schon - es fehlt noch das Auslesen der aktuellen GPS-Position, die ich dann nach Hause schicken kann.

Nach Studium unzähliger Postings bin ich leider so schlau wie zuvor...
Ich habe verstanden, daß ich offenbar auf einem Logfile aufsetzen kann, dessen Zugriff aber wohl ggf. gesplittet werden muß. Gibt´s keine Möglichkeit den Stream der seriellen Schnittstelle abzugreifen?
Wie mach ich das ggf?

Wo finde ich das Logfile? Mit den gelieferten Bordmitteln sehe ich es nicht (bei laufendem GPSViewer!).

Schönen Dank für Eure Aufmerksamkeit.
Fury

Verfasst: 05.03.2007 - 09:19
von RaGo
Hallo Fury,

hier auch nicht fündig geworden?

http://www.kowoma.de/gpsforum/viewtopic.php?t=1499

Rainer

Verfasst: 06.03.2007 - 18:45
von Kai-Behncke
Hallo, ich habe das wie folgt gemacht:

Ich benutze das GPS-Programm u-center 4.02.
Die ganze Anwendnug läuft allerdings nicht auf nem PDA sondern auf nem Rechner mit GPS.

Auf die Logdatei COM...x..y.ubx von u-center kann man auch in Echtzeit zugreifen, das heißt sogar dann, wenn da direkt Daten eingelesen werden.

Mittels eines PHP-Skriptes, welches alle 5 Sekunden aktualisiert wird,
wird der NMEA-String aus der Log-Datei geparst und in eine Geodatenbank (PostgreSQL, PostGIS) eingelesen.
Aletrnativ könnte man natürlich auch den umgekehrten Weg gehen und Daten an den Positionen auslesen.
Das Skript wie folgt:

<body>
<!--Header(Location: ); -->
<meta http-equiv="refresh" content="5"; URL=asus.php">
<!--<form action="http://localhost/asus/asus.php" method="post"> -->
<?

include "verbindungsaufbau_gps_eintrag.php";
$con = pg_connect ($con_string);

$id_check = "SELECT max(gid)as gid from gps_werte2";
$res_id_check = pg_query($con,$id_check);
$count = pg_result($res_id_check,"gid");
echo "The value: ".$count;

$datei="COM3_070306_164948.ubx";

$zerpflueck_array=file($datei);
$y=0;
$z=0;
for ($x=0;$x<count($zerpflueck_array);$x++)
{



if (eregi("GPGGA",$zerpflueck_array[$x])) {


$nmea_array[]=$zerpflueck_array[$x];
$y++;


$nmea_gueltig_pruef=explode(",",$nmea_array[$y-1]);
if ($nmea_gueltig_pruef[2]!='') {
$z++;
echo "Eintrag: $z";

echo "<br>";
echo "Uhrzeit: ".$nmea_gueltig_pruef[1];
echo "<br>";
echo "Längengrad:". $nmea_gueltig_pruef[3];

$nmea_gueltig_pruef[2]= $nmea_gueltig_pruef[2]/100;

$nmea_gueltig_umgerechnet_latitude=explode(".",$nmea_gueltig_pruef[2]);

$nmea_gueltig_umgerechnet_latitude[1]=str_pad($nmea_gueltig_umgerechnet_latitude[1],6,"0");
$nmea_gueltig_umgerechnet_latitude[1]=$nmea_gueltig_umgerechnet_latitude[1]/10000/60;
$nmea_gueltig_umgerechnet_latitude_1=explode(".",$nmea_gueltig_umgerechnet_latitude[1]);

$laengengrad=$nmea_gueltig_umgerechnet_latitude[0].'.'.$nmea_gueltig_umgerechnet_latitude_1[1];
echo "<br>";
echo $nmea_gueltig_umgerechnet_latitude[1];
echo "<br>";
echo $laengengrad;
echo "<br>";







echo "Breitengrad:". $nmea_gueltig_pruef[5];
echo "<br>";
$nmea_gueltig_pruef[4]= $nmea_gueltig_pruef[4]/100;
$nmea_gueltig_umgerechnet_longitude=explode(".",$nmea_gueltig_pruef[4]);
$nmea_gueltig_umgerechnet_longitude[1]=str_pad($nmea_gueltig_umgerechnet_longitude[1],6,"0");
$nmea_gueltig_umgerechnet_longitude[1]=$nmea_gueltig_umgerechnet_longitude[1]/10000/60;
$nmea_gueltig_umgerechnet_longitude_1=explode(".",$nmea_gueltig_umgerechnet_longitude[1]);

$breitengrad=$nmea_gueltig_umgerechnet_longitude[0].'.'.$nmea_gueltig_umgerechnet_longitude_1[1];

echo $breitengrad;
echo "<br>";
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("His",$timestamp);
echo $datum," - ",$uhrzeit," Uhr";
echo "<br>";
echo "---------------------";
echo "<br>";
if ($z > $count) {
$sql_befehl = "INSERT INTO gps_werte2(zeit_gps_erm,zeit_eintrag,gid,the_geom) VALUES ($nmea_gueltig_pruef[1],$uhrzeit,$z,GeometryFromText('POINT($breitengrad $laengengrad)',4326))";
$res = pg_query($con,$sql_befehl);
//$sql_befehl_2="UPDATE gps_werte2 SET the_geom_gk=transform(POINT($breitengrad $laengengrad),31467)";
//$res = pg_query($con,$sql_befehl_2);
}
}


}
}
echo "Insgesamt wurden $z Einträge getätigt";
$differenz=$z-$count;
echo "<br>";
echo "<font color='#FF0000'>Es wurden ".$differenz." neue Werte eingefügt</font>";
//echo "Also: ".sizeof($nmea_array);
//UPDATE poi SET the_geom=GeometryFromText ( 'POINT(3433607.3462448 5781422.89572127)',31467))where poinameid='777'

?></body>
<!--<input type="submit" value="absenden">
<input type="hidden" name="zaehler" value="<? echo $z; ?>"> </form> -->

Verfasst: 07.03.2007 - 09:02
von RaGo
Hallo Fury,

sorry, ich komm da nicht mit.
Das GPS hängt an einem PC? Trägst einen PC mit Dir spazieren?

Rainer

Verfasst: 10.03.2007 - 09:38
von Hartmut
moin,
kann man aus seinem post nicht so genau entnehmen, aber ich lese das so, der pc steht zuhause und er will je nach position bestimmte daten von seinem server haben. kann auch falsch sein, was ich mir da zusammengereimt habe. eine klarstellung seitens des fragers wäre schon gut.

bis denn
:mrgreen: :mrgreen: :mrgreen:

GPS-Daten weiterverarbeiten

Verfasst: 10.03.2007 - 10:35
von fury110
Jungs, danke für die Antworten.
Kai, Dein Hinweis hat mich veranlaßt, nochmals bei den fertigen Tools vorbeizuschauen und ich bin bei Franson auf die SerialTools gestoßen, danke (u-Center ist mir ein bißchen zu groß)!
Dem Link von RaGo entnehme ich, daß Du an derselben Sache arbeitest: SerialTools sind nach meiner Einschätzung eine ActiveX-Erweiterung der Java-Class Port. Das macht Sinn, denn die Daten kommen ja über den seriellen Port vom GPS rein.

Deshalb: Hat jemand einen Tip für eine ebenso schlanke, aber günstigere Lösung für das Port-Handling ohne .NET und anderen Overhead (geht das überhaupt ohne?)?
Die SerialTools kosten $79!

Übrigens ist der VPA compact ein Handy, daß ich (meist) mit mir rumtrage.

Hartmut, Deine Vermutung stimmt (entschuldigt die Lückenhafte Darstellugn). Der Weg ist also: GPS - serieller Port am Handy - lokale Vorverarbeitung - Posi zum Server - Infos zurück zum Handy.



Grüße,
Fury

Verfasst: 10.03.2007 - 13:29
von Hartmut
moin,
war so schlimm nicht, bin ja sogar ich hintergekommen. :twisted:

bis denn
:mrgreen: :mrgreen: :mrgreen: