Frage

Ist es möglich, Standortdaten herauszuholen? Google Gears, Google Gelocation API oder eine andere Webstandort -API (z. Feueradler) in einem solchen Format, dass es anderen Software als GPS -Gerät erscheint?

Es kam mir vor, dass ich gelesen habe Diese Antworten Zu meiner Frage zur Ermittlung des WLAN-Standorts bei Super User, dass, wenn ich eine GPS-Einheit emulieren könnte, viele dieser Webdienste als GPS „Poor-Mans“ auf ansonsten weniger nützliche Software fungieren könnten, die dies erfordert.

Ist GPSD eine Option?

Vorzugsweise OSX & Python, aber ich würde mich für jede Implementierung interessieren.

War es hilfreich?

Lösung

Da ist ein Sehr ähnlicher Thread Auf einer Python -Mailingliste, in der Windows erwähnt wird Virtuelle Com -Ports und diskutiert die Pseudo-Tty-Fähigkeiten von Unix. Wenn die App (n), die Sie verwenden möchten, können Sie eine bestimmte TTY -Gerätedatei eingeben, dies ist möglicherweise die einfachste Route. (Bitten Sie die Autoren, eine Plugin -API für das bereitzustellen, was Sie tun möchten, oder kaufen Sie sich a $ 20 Bluetooth GPS -Maus.)

Verwenden Sie OS X?

Es gibt ein Projekt macosxvirtualSerialport auf Google -Code, der einen grafischen Wrapper um einige der Funktionen eines Dienstprogramms nennt SOCAT. Ich würde einen Blick auf SOCAT empfehlen, wenn Sie das Potenzial auf der Pseudo-Tty-Route sehen. Ich glaube, Sie könnten SOCAT verwenden, um eine Pfeife aus einem Python-Programm mit einem Pseudo-Ty zu verknüpfen.

Die meisten nativen Mac-Apps werden ioServicematching für ein Gerät mit kioserialBSDRS232Type abfragen, und ich bezweifle, dass ein Pseudo-Tty als Iokit-Dienst auftaucht.

In diesem Fall müssen Sie einen Treiber wie in diesem beschriebenen Treiber implementieren, wenn Sie ein Projekt nicht implementiert haben So erstellen Sie einen virtuellen Com -Port Faden. Wenn Sie sich die Mühe machen, einen Gerätetreiber zu erstellen, möchten Sie ihn aufgrund dieser wahrscheinlichen iServicematching -Abfrage auf IOKIT stützen. Sie finden das in diesem Beitrag genannte Apple16x50serienprojekt an der Spitze Apples Open Source -Code -Liste (Gehen Sie zum Hauptseite und wählen Sie eine ältere Betriebssystemveröffentlichung, wenn Sie auf etwas vor dem 10.6 abzielen möchten).

Wenn Ihre App mit Echtzeitdaten am nützlichsten ist (z. B. die im Python Mailinglist -Thread erwähnte RouteBuddy -App können aktuelle Positionen protokollieren) dann möchten Sie Updates aus Ihren Webquellen abrufen (hoffentlich unterstützen sie langwierige) und konvertieren sie in Basic in Basic NMEA RMC -Sätze. Sie möchten dies nicht aus Ihrem Treibercode aus tun. Teilen Sie stattdessen Ihre Arbeit in Kernel-Land- und User-Land-Stücke, die kommunizieren können, und geben Sie so wenig wie möglich in den Kernel-Teil ein.

Wenn Sie Apps sowohl lesen als auch in diese Webdienste schreiben möchten, ist es wahrscheinlich am besten, ein Garmin -Gerät zu simulieren. Garmin hat ihr Protokoll in der intfSpec.pdf-Datei, die in der intfSpec.pdf enthalten ist, mehr dokumentiert Geräteschnittstelle SDK. Auch hier möchten Sie so viel wie möglich in den Benutzer-Raum-Code teilen.

Ich konnte kein Projekt oder Dienstprogramm finden, das die Kernel-Seite einer iokit-basierten virtuellen seriellen Schnittstelle implementiert, aber ich wäre überrascht, wenn sich irgendwo irgendwo da draußen einen versteckt hätte. Leider waren die meisten Antworten, die ich dieser Frage fand, so, wobei der Entwickler gesagt wurde Schreiben eines Kext.

Andere Tipps

Ich bin mir nicht ganz sicher, wie ich das erreichen kann, was Sie fragen, aber ich kann möglicherweise Einblicke darüber geben, wie Sie es könnten Start um es zu erledigen. Also hier geht:

Ein GPS -Gerät wird in den meisten Systemen als nichts weiter als ein serielles Gerät angezeigt - auch bekannt als ein Com -Port, wenn Sie mit Windows, /dev /ttysx zu tun haben, wenn Sie in *nix sind. Per Definition besteht die spezifische Pflicht eines seriellen Ports darin, Daten jeweils über einen Bus zu streamen. Anschließend folgt logischerweise, dass Sie, wenn Sie das Vorhandensein eines GPS -Geräts emulieren möchten, die von Ihnen verbrauchten Daten sammeln und in einen Stream einsetzen sollten, der irgendwie wie ein aktiver serieller Anschluss wirkt.

Es gibt jedoch einige Komplikationen, die Sie möglicherweise in Betracht ziehen möchten:

  • Die meisten GPS -Geräte senden nicht nur Standortdaten. Es finden Sie auch Informationen zu Satellitenorten, Reparaturqualität, Lager und so weiter. Andererseits hat niemand Regeln gemacht, die Sie sagen, Sie sagen Sie haben um alle Daten verfügbar zu machen. Es gibt wahrscheinlich noch mehr, aber ich gebe zu, dass ich selbst in diesem Bereich mehr recherchieren muss.
  • Ich bin mir nicht sicher, wie schnell Sie Daten beim Umgang mit Google Latitude usw. erhalten können, aber alle Verzögerungen beim Empfangen würden definitiv zu sichtbaren Pausen in Ihrem Datenstrom "serieller Port" führen. Auch hier ist dies möglicherweise nicht so groß wie es scheint, da GPS -Geräte sowieso bekannt sind, dass Daten über den Bus "platzen", aber ich würde das definitiv im Auge behalten. Sie möchten sicherstellen, dass immer ein Datenüberschuss entsteht, kein Mangel.

Unterwegs müssen Sie auch die Koordinaten, die Sie erhalten, in gültige GPS -Sätze umwandeln. Sie können Spezifikationen dafür finden, aber ich würde mich definitiv mit dem NMEA -Standard anfreunden - obwohl es sich um einen fehlerhaften Standard handelt, ist es diejenige, auf die sich jeder sowieso einigen zu einigen scheint.

Hoffe das hat dir zumindest ein bisschen geholfen. Gibt es mehr Details für Ihr Problem, das Ihrer Meinung nach bei der Beantwortung dieser Frage hilfreich sein könnte?

Schauen Sie sich an Franson GPS -Tor Dadurch können Sie unter anderem eine Verbindung zu Google Earth herstellen (wie das Simulieren von GPS usw.). Ist Windows nur, aber ich denke, Sie könnten einige nützliche Ideen davon bekommen.

Ich habe es nicht sehr genommen, aber haben Sie überlegt, es zu verwenden Skyhooks SDK? Es könnte Ihnen einige von dem geben, wonach Sie suchen. Es ist für jeden großen Desktop und jedes mobile Betriebssystem verfügbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top