C'è uno very similar thread su una mailinglist Python che menziona Windows virtual COM ports e discute le capacità pseudo-tty di Unix. Se le app che si desidera utilizzare consentono di digitare in un file specifico del dispositivo tty, questa potrebbe essere la via più semplice. (A meno di chiedere agli autori di fornire un'API plugin per quello che stai cercando di fare, o di acquistare uno $20 bluetooth GPS mouse.)
Stai usando OS X?
C'è un progetto macosxvirtualserialport su codice Google che fornisce un wrapper grafico attorno ad alcune delle funzionalità di un'utilità chiamata socat. Ti consiglio di dare un'occhiata a socat se vedi un potenziale nel percorso pseudo-tty. Credo che potresti usare socat per collegare un pipe da un programma Python a uno pseudo-tty.
La maggior parte delle applicazioni Mac native eseguono query su IOServiceMatching per un dispositivo con kIOSerialBSDRS232Type e dubito che una pseudo-tty venga visualizzata come servizio IOKit.
In questo caso, a meno che non sia possibile trovare un progetto che ha già implementato una cosa del genere, sarà necessario implementare un driver come descritto in questo thread How to create virtual COM port. Se hai intenzione di creare un driver di dispositivo, dovresti basarlo su IOKit a causa di quella probabile query IOServiceMatching. Puoi trovare il progetto Apple16X50Serial menzionato in questo post nella parte superiore di Apple's open source code list (vai allo main page e scegli una versione precedente del sistema operativo se desideri scegliere come target qualcosa prima del 10.6).
Se la tua app è più utile con dati in tempo reale (ad esempio l'app RouteBuddy citata nel thread di mailinglist Python can log current positions), allora vorrai recuperare gli aggiornamenti dalle tue fonti web (speriamo che supportino il polling lungo) e convertirli in base NMEA Frasi RMC. Non vuoi farlo dal tuo codice di guida. Invece, dividi il tuo lavoro in parti di kernel-land e user-land che possono comunicare, e metti il meno codice possibile nella parte del kernel.
Se si desidera consentire alle app di leggere e scrivere su questi servizi Web, la soluzione migliore è probabilmente quella di simulare un dispositivo Garmin. Garmin ha più o meno documentato il loro protocollo nel file IntfSpec.pdf incluso con il loro Device Interface SDK. Di nuovo, vorrai dividere il più possibile nel codice dello spazio utente.
Non sono riuscito a trovare un progetto o un'utilità che implementa il lato kernel di un'interfaccia seriale virtuale basata su IOKit, ma sarei sorpreso se non ci fosse uno che si nasconde da qualche parte là fuori. Sfortunatamente, la maggior parte delle risposte che ho trovato a questa domanda erano come questa, con lo sviluppatore che veniva detto di darsi da fare writing a kext.
In assenza di esatte soluzioni Python alla mia domanda, ho iniziato il seguente Progetto su Google Code, dove copierò il codice/l'informazione che trovo: http://code.google.com/p/python-virtualgps/ –
GPSD sono stati spostati in una nuova posizione: https://savannah.nongnu.org/projects/gpsd –