Question

Est-il possible d'obtenir des données de localisation sur Google Gears , API Google Gelocation ou tout autre API de localisation Web (par exemple feu d'Eagle ) dans un format qu'il semble un autre logiciel comme un périphérique GPS?

Il est survenue me ces réponses à ma question concernant la détection de position WiFi, Super l'utilisateur, que si je pouvais imiter une unité GPS, un grand nombre de ces services Web pourrait agir en tant que le GPS «pauvres-Mans au logiciel autrement moins utile qui l'exige.

DGSP une option?

De préférence OSX et Python, mais je serais intéressé par la mise en œuvre.

Était-ce utile?

La solution

Il y a un fil très similaire sur une liste de diffusion Python qui mentionne les ports COM virtuels de Windows et discute les capacités pseudo-tty Unix . Si l'application (s) que vous souhaitez utiliser vous permettent de taper dans un fichier tty spécifique, cela peut être la voie la plus facile. (Short de demander aux auteurs de fournir une API de plug-in pour ce que vous essayez de faire, ou vous acheter un 20 $ la souris GPS bluetooth .)

Utilisez-vous OS X?

Il y a un projet macosxvirtualserialport sur le code Google qui fournit une enveloppe graphique autour de certains les caractéristiques d'un utilitaire appelé socat . Je vous recommande de jeter un oeil à socat si vous voyez potentiel dans la voie pseudo-TTY. Je crois que vous pouvez utiliser socat pour relier un tuyau d'un programme Python à un pseudo-TTY.

La plupart des applications natives Mac seront Interrogation IOServiceMatching pour un appareil avec kIOSerialBSDRS232Type, et je doute qu'un pseudo-TTY sera affiché comme un service IOKit.

Dans ce cas, à moins que vous pouvez trouver un projet qui a déjà mis en œuvre une telle chose, vous devrez implémenter un pilote tel que décrit dans cette Comment créer port COM virtuel fil. Si vous allez à la peine de créer un pilote de périphérique, vous voulez baser sur IOKit en raison de cette requête IOServiceMatching probable. Vous pouvez trouver le projet Apple16X50Serial mentionné dans ce poste au sommet de open source d'Apple Code liste (aller à la la page principale et choisir une version du système d'exploitation plus si vous voulez cibler quelque chose pré-10.6).

Si votre application est plus utile avec des données en temps réel (par exemple, l'application RouteBuddy mentionné dans le fil de Python mailinglist NMEA phrases RMC. Vous ne voulez pas faire de l'intérieur de votre code du pilote. Au lieu de cela, il faut diviser votre travail en morceaux terrestres du noyau et la terre d'utilisateur qui peuvent communiquer et mettre aussi peu de code possible dans la partie du noyau.

Si vous voulez laisser des applications à la fois lire et écrire à ces services Web, votre meilleur pari serait probablement pour simuler un appareil Garmin. Garmin a plus ou moins documenté leur protocole dans le fichier IntfSpec.pdf inclus avec leurs Interface SDK . Encore une fois, vous voudriez partager autant que vous pourriez dans le code de l'espace utilisateur.

Je ne pouvais pas trouver un projet ou utilitaire qui implémente le côté du noyau d'une interface série virtuelle basée IOKit, mais je serais surpris s'il n'y avait pas qui se cache quelque part là-bas. Malheureusement, la plupart des réponses que je trouvais à cette question étaient comme ça, avec le promoteur étant dit de busy écrit kext.

Autres conseils

Je ne suis pas sûr de savoir comment accomplir ce que vous demandez, mais je peux être en mesure de prêter un aperçu de la façon dont vous pourriez commencer pour le faire. Alors, voici:

Un appareil GPS apparaît à la plupart des systèmes comme rien de plus qu'un dispositif de série - un port a.k.a. COM si vous traitez avec Windows, / dev / ttySx si vous êtes * nix. Par définition, un droit spécifique de port série est de diffuser des données sur un bus, un bloc à la fois. Donc, il serait alors logiquement suivre que si vous voulez imiter la présence d'un dispositif GPS, vous devez recueillir les données que vous consommez et le mettre dans un cours d'eau qui agit en quelque sorte comme un port série actif.

Il y a, cependant, des complications que vous pourriez envisager:

  • La plupart des appareils GPS n'envoient pas seulement des données de localisation; il y a aussi des informations sur l'emplacement des satellites, fixer la qualité, portant, et ainsi de suite. Là encore, personne ne fait aucune règle disant que vous Vous pour toutes les données disponibles. Il y a probablement plus de cela, mais je dois admettre que je dois faire plus de recherches dans ce domaine moi-même.
  • Je ne sais pas à quelle vitesse vous pouvez recevoir des données lorsqu'ils traitent avec Google Latitude, etc., mais les retards dans la réception serait certainement entraîner des pauses visibles dans votre « port série » de flux de données de l '. Encore une fois, cela peut ne pas être aussi grande complication car il semble, parce que les appareils GPS sont connus des données « burst » à travers le bus de toute façon, mais je serais certainement garder un oeil sur ce point. Vous voulez vous assurer qu'il ya toujours un excédent de données provenant de l'autre côté, et non une pénurie.

En chemin, vous aurez également de transformer les coordonnées que vous recevez en phrases GPS valides, aussi bien. Vous trouverez des indications pour les personnes, mais je voudrais vraiment faire des amis avec la norme NMEA -. Même si elle est une norme erronée, il est celui tout le monde semble être d'accord sur de toute façon

Espérons que cela vous a aidé, au moins un peu. Y at-il plus de détails spécifiques à votre problème que vous jugerez utiles pour répondre à cette question?

Jetez un oeil à Franson GPS Porte qui vous permet de se connecter à Google Earth entre autres choses (comme la simulation de GPS et ainsi de suite). Est-ce que les fenêtres quoique, mais je pense que vous pourriez obtenir quelques idées utiles de lui.

Je ne l'ai pas examiné beaucoup, mais vous avez pensé à utiliser SDK Skyhook ? Il peut vous donner une partie de ce que vous recherchez. Il est disponible pour chaque poste de travail majeur et OS mobile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top