7
votes

Émuler GPS ou un périphérique série

est-il possible d'obtenir des données d'emplacement de Google Gears , API Gelocation Google ou tout autre API d'emplacement Web (tel que Fire Eagle ) dans un tel format qu'il apparaît à un autre logiciel en tant que périphérique GPS?

Cela m'a eu lieu à la lecture Ces réponses à ma question concernant la recherche de l'emplacement WiFi, sur Super Utilisateur, que si je pouvais imiter une unité GPS, bon nombre de ces services Web pourraient servir de GPS «pauvres-mans» à un logiciel autrement moins utile qui l'exige.

est GPSD une option?

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


2 commentaires

En l'absence de solutions python exactes à ma question, j'ai commencé le projet suivant sur Google Code, où je copierai les informations / code que je trouve: code.google.com/p/python-virtualgps


GPSD a déménagé dans un nouvel emplacement: Savannah.nongnu.org/projects/gpsd


4 Réponses :


2
votes

Je ne sais pas exactement comment accomplir ce que vous demandez, mais je pourrais peut-être prêter des informations sur la manière dont vous pourriez commencer pour le faire faire. Alors voici:

Un périphérique GPS apparaît jusqu'à la plupart des systèmes que rien de plus qu'un périphérique série - A.K.A. Un port COM si vous traitez avec Windows, / dev / ttysx si vous êtes IN * NIX. Par définition, un droit spécifique d'un port série est de diffuser des données dans un bus, un bloc à la fois. Donc, il suivrait alors logiquement que si vous souhaitez imiter la présence d'un périphérique GPS, vous devez rassembler les données que vous consommez et le mettre dans un flux qui agit en quelque sorte comme un port série actif.

Il y a cependant certaines complications que vous voudrez peut-être envisager:

  • la plupart des périphériques GPS n'envoient pas seulement des données de localisation; Il existe également des informations sur les satellites, la qualité de la fixation, la roulement, etc. Là encore, personne n'a fait de règles qui vous disent ont pour faire toutes ces données disponibles. Il y a probablement plus encore à cela, mais je vais admettre que je dois faire plus de recherches dans ce domaine moi-même.
  • Je ne suis pas sûr de la rapidité avec laquelle vous pouvez recevoir des données lors de la gestion de Google Latitude, etc., mais tout retard de réception entraînerait une pause visible dans votre flux de données "port série". Encore une fois, cela ne peut pas être aussi grand une complication qu'elle semble, car les périphériques GPS sont connus de toute façon "éclater" dans le bus, mais je tiens certainement à garder un œil sur cela. Vous voulez vous assurer qu'il y a toujours un excédent de données qui traversent, pas une pénurie.

    En cours de route, vous devrez également transformer les coordonnées que vous recevez en phrases GPS valides. Vous pouvez trouver des spécifications pour ceux-ci, mais je ferais certainement des amis avec la norme NMEA - même s'il s'agit d'une norme imparfaite, c'est celui que tout le monde semble être d'accord sur toute façon.

    J'espère que cela vous a aidé, au moins un peu. Y a-t-il plus de détails spécifiques à votre problème que vous pensez être utile pour répondre à cette question?


6 commentaires

Notez également: Je ne suis pas trop familier avec GPSD, mais oui, c'est une option pour vous si je vous ai bien compris, étant donné ce que vous avez mentionné dans votre question.


Quelques bons détails là-bas - y a-t-il des bibliothèques / produits existants pouvant imiter les ports série?


Ajout d'un peu plus de détails Re. mes objectifs à la question initiale.


Les dispositifs GPS à la parole Nmea produisent généralement les messages qu'ils souhaitent, chaque fois qu'ils le souhaitent et ne disent rien quand ils n'ont aucune information et que les logiciels doivent faire face à cela. Un triplet de phrase GGA / GLL / RMC toutes les quelques secondes (avec un couple de champs comme "Nombre de satellites utilisés" Faibled up) inciterait probablement la plupart des logiciels.


Matt, j'ai marqué la question de Nate comme la réponse telle qu'elle donnait beaucoup plus de détails, mais je ne serais pas sur ce cours de questionnement sans votre réponse originale - merci :)


Ça ne me pose pas de problème. Il semble qu'il est beaucoup plus bien informé sur le sujet et j'ai même appris quelques choses de sa réponse. :-)




1
votes

Jetez un oeil à GATE GENSON GPS qui vous permet de Connectez-vous à Google Earth entre autres (comme simulation de GPS, etc.). Windows est-ce que Windows, mais je pense que vous pourriez obtenir des idées utiles de cela.


1 commentaires

C'est exactement le genre de chose que je recherche, mais idéalement le code source qui l'accomplit. Bonnes choses cependant :)



4
votes

Il y a un thread très similaire Sur une liste mailing python qui mentionne Windows Ports virtuels et discute des capacités pseudotalétiques UNIX . Si l'application (s) que vous souhaitez utiliser vous permet de saisir un fichier de périphérique TTY spécifique, cela peut être la voie la plus facile. (À court de demander aux auteurs de fournir une API de plugin pour ce que vous essayez de faire ou de vous acheter un 20 $ Mouse GPS Bluetooth .)

Utilisez-vous OS X?

Il y a un projet MacOSXXVirtualSerialport sur Google Code fournissant une enveloppe graphique autour de certaines des Les caractéristiques d'un utilitaire appelé Socat . Je recommanderais de jeter un coup d'œil à la SOCAT si vous voyez un potentiel dans la route pseudo-tty. Je crois que vous pourriez utiliser Socat pour relier un tuyau d'un programme Python à une pseudo-TTY.

La plupart des applications Mac natives interviennent à intervaluer sur un périphérique avec kioserialbsdrs232type, et je doute qu'une pseudo-TTTY apparaisse comme un service IOKIT.

Dans ce cas, à moins que vous ne puissiez trouver un projet qui a déjà mis en œuvre une telle chose, vous devrez mettre en place un pilote comme décrit dans ce Comment créer un port COM virtuel . Si vous allez avoir la peine de créer un pilote de périphérique, vous voudrez la baser sur IOKIT à cause de cette question probable iOServiceMatching. Vous pouvez trouver le projet Apple16x50Serial mentionné dans ce poste en haut de Source open de Apple Liste de codes (Aller à la Page principale et choisissez une version de système d'exploitation plus ancienne si vous souhaitez cibler quelque chose pré-10.6).

Si votre application est la plus utile avec les données en temps réel (par exemple, l'application de routeBuddy mentionnée dans le thread de la mailinglist Python peut enregistrer les positions actuelles ), alors vous souhaiterez chercher des mises à jour à partir de vos sources Web (espérons-le qu'ils prennent en charge des interrogations longs) et les convertir en" un href = "http://www.sparkfun.com /Datasheets/gps/nmea%20reference%20Manual-Rev2.1-Dec07.pdf "rel =" Nofollow Noreferrer "> NMEA Phrases RMC. Vous ne voulez pas faire cela à partir de votre code de pilote. Au lieu de cela, divisez votre travail dans des morceaux de noyau et d'utilisateurs qui peuvent communiquer et mettre le plus petit du code possible dans la partie du noyau.

Si vous souhaitez laisser des applications à la fois lire et écrire sur ces services Web, votre meilleur choix serait probablement de simuler un périphérique Garmin. Garmin a plus ou moins documenté son protocole dans le fichier Infspec.pdf inclus avec leur Interface de périphérique SDK . Encore une fois, vous voudriez scinder autant que possible en code de l'espace utilisateur.

Je n'ai pas pu trouver de projet ou d'utilitaire qui implémente le côté du noyau d'une interface série virtuelle basée sur IOKIT, mais je serais surpris de ne pas avoir caché quelque part là-bas. Malheureusement, la plupart des réponses que j'ai trouvées à cette question étaient comme ceci, le développeur étant dit de se faire occuper écrire un KEXT .


3 commentaires

Certaines choses vraiment utiles là-bas, merci. J'utilise effectivement OSX (détail ajouté à la question originale).


Une souris GPS de 20 $ est un bon point (et un excellent GPS pauvres-Mans!), Mais mon objectif général est de fournir un «flux de données virtuel» des API Web non GPS.


Comme à l'écart, je n'avais vraiment pas réalisé à quel point les dongles GPS bon marché sont maintenant: Amazon.co.uk/s/...