windows mobile - Acceda a la funcionalidad GPS en teléfonos WinMobile
windows-mobile (6)
Dos opciones:
- Existe el controlador GPS intermedio, que tiene un artículo howto para .Net en MSDN
- Puede conectarse al puerto serie (configurable en la interfaz de usuario, por supuesto) y analizar las cadenas NMEA usted mismo
La opción (1) es probablemente aconsejable
Supongamos que tiene un teléfono Windows Mobile 6.0 que también tiene un receptor GPS. ¿El SDK de WinMobile admite el acceso a la funcionalidad de GPS?
Si no, ¿cuáles son las opciones (API) para programar con el GPS, es decir, escribir aplicaciones que usarán la capacidad del GPS? Estoy interesado principalmente en Windows Mobile 6.x, pero incluya respuestas genéricas también.
Seguramente votaré por las respuestas más útiles.
Gracias por adelantado.
Si planea desarrollar en .NET Compact Framework, hay un ejemplo de GPS bastante extenso en las muestras de desarrollador de Windows Mobile. Básicamente, hace uso de vueltas alrededor de gpsapi.dll pero muestra las obras. He instalado el kit WM6 en C: / Program Files / Windows Mobile 6 SDK y el ejemplo de GPS está en C: / Archivos de programa / Windows Mobile 6 SDK / Samples / PocketPC / CS / GPS
¡Buena suerte!
Y para probar el código que usa el controlador intermedio (ver otras respuestas), no olvide la utilidad FakeGPS del SDK que puede usar para canalizar un flujo NMEA almacenado en un archivo a través de este controlador intermedio para que pueda probar fácilmente el software GPS en esa información de ubicación sin tener realmente que tener recepción de GPS y comenzar a moverse.
Desde mi punto de vista, es mucho más fácil leer el puerto serie (en mi caso COM5, baudrate 4800) y analizar los datos recibidos. (cómo analizar la cadena se puede encontrar a través de Google y frase: frases NMEA gps)
Para mí es imposible entender el ejemplo de la dirección:
C:/Program Files/Windows Mobile 6 SDK/Samples/PocketPC/CS/GPS
Todo es muy complicado e insustancial. Esperaría una interfaz mucho más fácil y útil como:
myGps = new GPS()
myGPS.getPosition
Pero esto probablemente no sea posible :(
¿Y cómo hacerlo a través de RS232? (Trabajo en VB.NET)
En la GUI (o programáticamente) cree el objeto System.IO.Ports.SerialPort y use su evento DataReceived. Cada vez que los datos provienen de GPS, este evento ocupa y en su cuerpo puede procesarlo.
Los datos están en formato de una cadena loooong dividida en secciones $ GPGGA, $ GPGSA, etc. Importante es $ GPGGA. Cada información particular está delimitada por una coma. Que solo analice esta cadena, en VB.net usando: myArray = myData.Split ("," c).
PD: "," c significa que la coma es un Char, no una cadena (VB.NET)
Como puede ver, no es necesario escribir más que unas pocas líneas de código. El ejemplo de MS es innecesariamente difícil y no es para principiantes.
PS2: tenga en cuenta que no envía ningún comando al GPS. Automáticamente y periódicamente envía datos a su programa. Acaba de abrir el puerto, leer todos los datos del búfer, convertirlo a cadena usando Chr () y analizarlo. No es gran cosa.
Intenta echar un vistazo a algunas de las soluciones en CodeProject.com . Hay muchos artículos muy buenos sobre Windows Mobile y GPS.
Chris Craft tenía una gran cantidad de código fuente para este tipo de cosas en sus Series 30 Days de .NET Windows Mobile Applications
- Semana 1 - Incluyendo brújula GPS
- Semana 3 - Incluyendo velocímetro GPS y altímetro GPS
- Semana 4: incluyendo el reloj GPS
Lamentablemente, esta serie de blogs parece haber muerto, pero afortunadamente el código se conserva en Codeplex:
Y un puerto a C y algunas discusiones sobre algunas de las publicaciones originales se pueden encontrar en / dev / mobile
También hay algunas notas sobre el uso del controlador de GPS Intermedio en el blog de Raffaele Limosani
Editar para agregar:
GPS.NET se convirtió recientemente en código abierto y ahora está disponible en CodePlex: