Domanda

E 'possibile ottenere dati di localizzazione di Google Gears , Google Gelocation API o qualsiasi altro luogo web API (come Fire Eagle ) in un formato tale che sembra un altro software come un dispositivo GPS?

E 'accaduto a me leggere queste risposte alla mia domanda per quanto riguarda posizione WiFi constatato, in Super utente, che se avessi potuto emulare un'unità GPS, molti di questi servizi web potrebbe agire come un GPS 'poveri-mans' al software altrimenti meno utile che lo richiede.

E ' GPSD un'opzione?

Preferibilmente OSX & Python, ma mi sarebbe interessato a qualsiasi implementazione.

È stato utile?

Soluzione

C'è un filo molto simile su una mailing list di Python che cita di Windows porte COM virtuali e discute le capacità pseudo-TTY di Unix . Se l'applicazione (s) che si desidera utilizzare ti consentono di digitare un file di dispositivo tty specifico, questo può essere la via più facile. (Short di chiedere agli autori di fornire un plugin API per quello che stai cercando di fare, o l'acquisto di voi stessi un $ 20 mouse Bluetooth GPS .)

Si sta utilizzando OS X?

C'è un progetto macosxvirtualserialport sul codice di Google che fornisce un wrapper grafico intorno ad alcuni dei le caratteristiche di un'utility chiamata socat . Mi consiglia di dare un'occhiata a socat se si vede il potenziale nel percorso pseudo-TTY. Credo che si potrebbe usare socat per collegare un tubo da un programma Python per una pseudo-TTY.

La maggior parte di applicazioni native per Mac sarà l'interrogazione IOServiceMatching per un dispositivo con kIOSerialBSDRS232Type, e dubito che una pseudo-tty verrà visualizzato come un servizio di IOKit.

In questo caso, a meno che non si può trovare un progetto che ha già implementato una cosa del genere, è necessario implementare un driver come descritto in questo Come creare porta COM virtuale thread. Se avete intenzione della briga di creare un driver di periferica, si vorrebbe basare su IOKit a causa di quella query probabile IOServiceMatching. Potete trovare il progetto Apple16X50Serial citato in questo post in cima open source di Apple elenco dei codici (vai al pagina principale e scegliere una versione precedente del sistema operativo se si desidera raggiungere qualcosa pre-10.6).

Se la vostra applicazione è molto utile con dati in tempo reale (ad esempio, l'applicazione RouteBuddy menzionato nel thread mailinglist Python può accedere posizioni attuali ) poi si vuole di recuperare gli aggiornamenti da tue fonti web (si spera che un sostegno a lungo polling) e di convertirli in base NMEA frasi RMC. Non si vuole fare questo da dentro il codice del driver. Invece, dividere il lavoro fino in kernel-terra e user-terra pezzi che possono comunicare, e mettere il meno del codice il più possibile nella parte del kernel.

Se si vuole lasciare che le applicazioni di lettura e scrittura a questi servizi web, la soluzione migliore sarebbe probabilmente per simulare un dispositivo Garmin. Garmin ha più o meno documentato il loro protocollo nel file IntfSpec.pdf incluso con i loro href="http://garmin.com/support/commProtocol.html" Interface SDK . Anche in questo caso, che ci si vuole dividere quanto più è possibile in codice user-space.

Non sono riuscito a trovare un progetto o programma di utilità che implementa la parte del kernel di un'interfaccia seriale virtuale IOKit-based, ma sarei sorpreso se non ci fosse uno nascosto da qualche parte là fuori. Purtroppo, la maggior parte delle risposte che ho trovato a questa domanda erano come questo, con lo sviluppatore viene detto di darsi da fare scrivere un kext .

Altri suggerimenti

Non sono esattamente sicuro di come realizzare quello che stai chiedendo, ma potrei essere in grado di dare una certa comprensione di come si potrebbe iniziare per farlo fare. Quindi, ecco qui:

Un dispositivo GPS si presenta alla maggior parte dei sistemi come niente di più che un dispositivo seriale - anche noto come una porta COM, se hai a che fare con Windows, / dev / ttySx se siete in * nix. Per definizione, compito specifico di una porta seriale sia per trasmettere dati attraverso un bus, un blocco alla volta. Quindi, sarebbe quindi seguire logicamente che se si desidera emulare la presenza di un dispositivo GPS, è necessario raccogliere i dati che si sta consumando e metterlo in un flusso che si comporta un po 'come una porta seriale attivo.

Ci sono, tuttavia, alcune complicazioni si potrebbe prendere in considerazione:

  • La maggior parte dei dispositivi GPS non solo inviano dati di posizione; ci sono anche informazioni su sedi satellite, fissare la qualità, cuscinetti, e così via. Poi di nuovo, nessuno ha fatto tutte le regole dicendo che sono per fare tutto ciò che i dati disponibili. C'è probabilmente più a questo, ma devo ammettere che ho bisogno di fare ulteriori ricerche in questo campo io stesso.
  • Non sono sicuro di quanto velocemente si può ricevere i dati quando si tratta di Google Latitude, ecc, ma eventuali ritardi nella ricezione sarebbe sicuramente portare a pause visibili nel "porta seriale" 's flusso di dati. Ancora una volta, questo non può essere grande una complicazione come sembra, perché i dispositivi GPS sono noti per i dati "burst" attraverso il bus in ogni caso, ma mi piacerebbe sicuramente tenere un occhio su questo. Si vuole fare in modo c'è sempre un surplus di dati di imbattersi, non è una carenza.

Lungo la strada avrete anche per trasformare le coordinate che si ricevono in frasi GPS validi, pure. Si possono trovare le specifiche per quelli, ma mi sarebbe sicuramente fare amicizia con lo standard NMEA -. Anche se è uno standard imperfetto, è quello che tutti sembrano d'accordo su ogni caso

Spero che questo ti ha aiutato, almeno un po '. non ci sono più dettagli specifici per il problema che si pensa possa essere utile a rispondere a questa domanda?

Date un'occhiata alla Franson GPS Porta che consente di collegarsi a Google Earth tra le altre cose (come la simulazione di GPS e così via). È solo per Windows, però, ma penso che si potrebbe ottenere alcune idee utili da esso.

Non ho guardato in esso molto, ma avete considerato utilizzando Skyhook SDK ? Potrebbe fornire con alcuni di ciò che si sta cercando. E 'disponibile per tutti i principali desktop e sistema operativo mobile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top