• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Delphi Unit für Kommunikation per Garmin-Protokoll

Nachtfalke

Geowizard
Hallo,

ich suche eine Komponente, die die Kommunikation mit einem Garmin Gerät (hauptsächlich Waypoint-Upload) übernimmt. Das Ding sollte mit Delphi funktionieren und zumindest für den non-commercial use kostenlos sein. Hat jemand ne Idee?

Gruß
Frank
 

Kalli

Geowizard
Schau dir mal gpsbabel an, das hat eine Schnittstelle zu Garmin und ist opensource, allerdings in C geschrieben. Je nach Anwendungsfall könnte es allerdings ausreichen, wenn Du von deinem Programm aus gpsbabel mit den entsprechenden Parametern aufrufst und die dann erzeugte Datei wieder einliest.
 
OP
Nachtfalke

Nachtfalke

Geowizard
Danke für den Tipp, aber wenn ich die Beschreibung richtig verstehe, dann konvertiert das Programm lediglich unterschiedliche Formate ineineander ... ich suche aber eine Möglichkeit, aus einem Delphi-Programm heraus mit dem Garmin Gerät zu kommunizieren und Waypoints in das Gerät zu transferrieren ...

Gruß
Frank
 

Kalli

Geowizard
Schau mal genauer nach, gpsbabel hat auch eine Schnittstelle über den seriellen Port zu den Garmins.
Code:
..., or even a serial upload or download to a GPS unit such as those from Garmin and Magellan.
 
OP
Nachtfalke

Nachtfalke

Geowizard
Ich hab mir das mal runtergeladen, aber ich sehe weder in der GUI noch in der Kommandozeilenversion eine Möglichkeit, Waypoints zum Garmin zu schicken .... :?:

Gruß
Frank
 

shia

Geomaster
Ich hab keine Ahnung von Delphi, denke aber, das musst du selber stricken:
Serielle oder USB-Schnittstelle aufmachen und einen Datenstrom gemäß des gewählten Protokolls losschicken.
 

Cornix

Geowizard
fam schrieb:
Ich hab mir das mal runtergeladen, aber ich sehe weder in der GUI noch in der Kommandozeilenversion eine Möglichkeit, Waypoints zum Garmin zu schicken .... :?:

In der GPSBabel-Doku steht:

Garmin waypoint format

Waypoint serial upload and download works reliably under both POSIX and Windows. I originally tested it with a Vista, a V, and a base eTrex, all graciously provided on loan by Joe Armstrong, but it's now regularly exercised on a 60CS (USB and serial) and many other models. The communications library used, jeeps, claims to support most models of Garmin hardware. Be sure the GPS is set for "Garmin mode" in setup and that nothing else (PDA hotsync programs, gpsd, getty, pppd, etc.) is using the serial port.

http://www.gpsbabel.org/readme.html#garmin

Vielleicht kannst du auch die erwähnte Jeeps-Library direkt ansprechen.

Cornix
 

Kalli

Geowizard
Cornix spricht mir aus der Seele, an die Variante hatte ich auch schon gedacht. Man muss halt mal die Source-Code Distribution durchforsten, wie dort die Anbindung gemacht wurde. Und "fremde" Libraries einbinden (fremd in Bezug auf Programmiersprache) sollte ja kein Problem sein.
 

Kalli

Geowizard
Habe noch mal ein bisschen in gpsbabel rumgestöbert. Im CacheWolf nutzen wir folgende Kommandozeile zur Übertragung von waypoints zum Garmin:
Code:
gpsbabel -s -i gpx -f temp.gpx -o garmin -F com1:
temp.gpx enthält die Waypoints, wir geben beim Aufruf den kompletten Verzeichnispfad an (habe ich hier mal weggelassen).

Auf meinem Rechner habe ich die Source von der Version 1.2.1, dort liegen die jeeps-Files als C-Source vor.
 
OP
Nachtfalke

Nachtfalke

Geowizard
Hab inzwischen eine ocx-Komponente gefunden und der Autor hat mir die freie Nutzung gestattet. Muss das Teil nur noch zum Laufen bringen. Hat hier jemand fundierte Kenntisse von Delphi, insbesondere, was die Einbindung von AcitveX-Komponenten (ocx) angeht?

Keep on caching!
Frank
 

Geomane

Geocacher
Welche Delphi-Version benutzt Du denn? Und welche Ausführung - Personal oder Professional (und aufwärts)?

Grundsätzlich muß die ocx im System registriert sein, bevor Delphi (oder irgendwas sonst) was damit machen kann.
 
OP
Nachtfalke

Nachtfalke

Geowizard
Ich benutze Delphi 7 PE. Die Einbindung an sich ist auch nicht das Problem. Wenn ich aber versuche, eine Funktion aus der ocx-Bibliothek auszuführen, ergibt das eine Access Violation. Dieselbe Funktion funktioniert aber - in VB6 eingebunden - einwandfrei ....

Gruß
Frank
 

Geomane

Geocacher
Ich weiß nicht, ob das mit Delphi PE auch geht, ich kann Dir aber beschreiben, wie ich es bei Delphi Pro mache.

Du mußt für die OCX einen Komponentenwrapper machen, d. h. Du erzeugst eine Komponente, mit der die OCX abgebildet wird. Dazu klickst Du "Projekt" - "Typbibliothek importieren". In dem Fenster wählst Du die (registrierte) OCX aus, dabei muß im Fenster "Klassennamen" mindestens ein Eintrag erscheinen. Dann stellst Du in "Unit-Verzeichnis" einen geeigneten Pfad für die neue Komponente ein (oder läßt es auf "Imports") und klickst auf "Installieren" (nicht auf den Defaultbutton "Unit anlegen", sonst mußt Du die Komponente anschließend selber installieren). Hier wirst Du noch gefragt, in welches Package die Komponente kommen soll.

Wenn alles gelungen ist, liegt die neue Komponente auf der Palettenseite "ActiveX" (falls Du nichts anderes eingestellt hast). Diese Komponente ziehst Du auf eine Form Deines Programms und kannst damit dann arbeiten.

Es könnte sein, dass bei Delphi PE dieser ganze Vorgang nicht geht. In diesem Fall (oder auch wenn sonst irgendwas nicht klappt) kannst Du mir die OCX ja schicken, dann versuche ich Dir die Wrapper-Komponente zu bauen.
 
Oben