Domanda

Supponi di avere un telefono Windows Mobile 6.0 che ha anche un ricevitore GPS. L'SDK WinMobile supporta l'accesso alla funzionalità GPS?

In caso contrario, quali sono le opzioni (API) per la programmazione con il GPS, ovvero scrivere app che utilizzeranno la funzionalità GPS. Sono principalmente interessato a Windows Mobile 6.x ma includi anche risposte generiche.

Sicuramente voterò per le risposte più utili.

Grazie in anticipo.

È stato utile?

Soluzione

Due opzioni:

  1. Esiste il driver GPS intermedio, che ha un articolo howto per .Net su MSDN
  2. Potresti connetterti alla porta seriale (configurabile nell'interfaccia utente, ovviamente) e analizzare tu stesso le stringhe NMEA

L'opzione (1) è probabilmente consigliabile

Altri suggerimenti

Chris Craft aveva un sacco di codice sorgente per questo genere di cose nella sua serie 30 giorni di applicazioni Windows Mobile .NET

  • Settimana 1 - Inclusa bussola GPS
  • Settimana 3 - Compresi tachimetro GPS e altimetro GPS
  • Settimana 4 - Incluso l'orologio GPS

Purtroppo questa serie di blog sembra essere morta, ma per fortuna il codice è conservato su Codeplex:

  

30 giorni di applicazioni Windows Mobile

E su / dev / mobile

Ci sono anche alcune note sull'uso del driver GPS intermedio su il blog di Raffaele Limosani


Modifica per aggiungere:

GPS.NET è recentemente diventato open source ed è ora disponibile su CodePlex:

  

GPS.NET 3.0

Se hai intenzione di sviluppare in .NET Compact Framework, c'è un esempio GPS abbastanza esteso negli esempi di sviluppatori di Windows Mobile. Questo fondamentalmente fa uso di wraps attorno a gpsapi.dll ma mostra le opere. Ho installato il kit WM6 in C: \ Programmi \ Windows Mobile 6 SDK e l'esempio GPS è quindi in C: \ Programmi \ Windows Mobile 6 SDK \ Samples \ PocketPC \ CS \ GPS

Buona fortuna!

Prova a dare un'occhiata ad alcune delle soluzioni su CodeProject.com . Ci sono molti ottimi articoli su Windows Mobile e GPS.

E per testare il codice che utilizza il driver intermedio (vedi altre risposte), non dimenticare l'utilità FakeGPS dall'SDK che puoi usare per reindirizzare un flusso NMEA memorizzato in un file attraverso questo driver intermedio in modo da poter facilmente testare Software GPS su tali dati di posizione senza dover effettivamente ricevere GPS e iniziare a muoversi.

Dal mio punto di vista è molto più semplice leggere la porta seriale (nel mio caso COM5, baudrate 4800) e analizzare i dati ricevuti. (come analizzare la stringa può essere trovata tramite Google e la frase: frasi NMEA gps)

Per me è impossibile capire l'esempio sull'indirizzo:

C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

È tutto così complicato e poco diretto. Mi aspetterei un'interfaccia molto più semplice e utile come:

myGps = new GPS()
myGPS.getPosition

Ma questo probabilmente non è possibile :(

E come farlo tramite RS232? (lavoro in VB.NET)

Nella GUI (o programmaticamente) crea l'oggetto System.IO.Ports.SerialPort e usa il suo evento DataReceived. Ogni volta che i dati provengono dal GPS, questo evento si verifica e nel suo corpo è possibile elaborarli.

I dati sono nel formato di una stringa loooong divisa in sezioni $ GPGGA, $ GPGSA ecc. Importante è $ GPGGA. Ogni particolare informazione è delimitata da una virgola. Quindi analizzi solo questa stringa - in VB.net usando: myArray = myData.Split (", " c).

http://aprs.gids.nl/nmea/

PS: ", " c significa che la virgola è ment come Char, non String (VB.NET)

Come puoi vedere, non è necessario scrivere più di poche righe di codice. L'esempio della SM è inutilmente difficile e non è per i principianti.

PS2: si noti che non si inviano comandi al GPS. Invia automaticamente e periodicamente dati al tuo programma. Basta aprire la porta, leggere tutti i dati dal buffer, convertirli in stringa usando Chr () e analizzarli. Nessun grosso problema.

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