GPS para Geeks viejo perezoso (3 / 5 paso)

Paso 3: Mi GPS programa

No voy a intentar enseñar a alguien a escribir programas en Visual Express. Mi programa es un ejemplo de cómo puede personalizar GPS software para sus necesidades únicas.
Lo que cubro son algunos de los problemas y soluciones en general.

Objetivos del programa:
Hable con GPS y muestra datos de GPS.
Mostrar la latitud, longitud, altitud.
Calcular un promedio de marcha de las anteriores.

Etapa 2: Yo quería ver era la exactitud de mi GPS. Ver el siguiente paso.

Problema: Hable con GPS. BU-353 es un dispositivo USB. Recibe + 5V en la conexión USB. Una de las características interesantes es que una vez que tiene poder, empieza enviando datos en serie a 4800 baudios NMEA 0183 automáticamente cada segundo.
Solución: Por lo que VB Express ya tiene un control denominado Serialport. Establecer a 4800 baudios, establece en el número correcto de Com y abrirlo.

Problema: Datos de muestra de GPS. Si usted tiene una manera de mirar los datos en serie de la BU-353, una línea sería algo como esto:
$GPGGA, 233632.000, 3913.9963, N, W 10844.2590, 2, 09, 0.9, 1424.3, M,-16.7, M, 0.8, 0000 * 79

Aquí es cómo el NMEA 0183 define esto:
GGA - esencial fijar los datos que proporcionan datos de ubicación y precisión 3D.
$GPGGA, 123519, 4807.038, N, 01131.000, E, 545.4, 0.9, 1, 08 M, 46.9, M,, * 47

Donde:
Sistema de posicionamiento Global GGA fijar datos
123519 fix en 12:35:19 UTC (Coordinated Universal Time)
4807.038, N latitud 48 grados 07.038' N
01131.000, E longitud 11 grados 31,000' E
1 calidad de la solución: 0 = no válido
1 = fix GPS (SPS)
2 = corrección DGPS (esto significa que está activado WAAS y trabajo)
08 número de seguimiento de satélites
0,9 horizontal de dilución de posición (algo que ver con exactitud)
545.4, M de altitud, metros, sobre el nivel medio del mar
46.9, M altura del geoid (nivel del mar malo) sobre el elipsoide WGS84
tiempo (campo vacío) en segundos desde la última actualización DGPS
(campo vacio)   Número de identificación de estación DGPS
* 47 los datos de suma de comprobación, siempre empieza con *

Punta: Me acabo de enterar algo sobre latitud y longitud. Latitud solo puede ir de 0 a 90; longitud puede ir de 0 a 180. Por esta razón el valor de latitud superior tiene cuatro dígitos antes del decimal y la longitud tiene cinco. En el ejemplo anterior 11 grados se escribe 011.

Se definen los protocolos NMEA 0183 todo por Internet. Aquí está uno:
http://biostatmatt.com/uploads/DescriptionNMEA.pdf
Este protocolo no es sólo para GPS así que no que todas las oraciones son relevantes.

SubproblemA: BU-353 está enviando varias secuencias de datos cada segundo. El programa de computadora recibe la secuencia de datos serial pero no sabe por dónde se 'comienza a.' (Esto se denomina comunicación asincrónica).
SolutionA: Lo que el programa debe hacer es continuamente mirar el flujo de datos hasta que vea "$GPGGA", entonces sabe que seguirán los datos pertinentes.

SubproblemB: Los datos $GPGGA están una línea de datos. El equipo necesita separar los datos en las diferentes partes.
SolutionB: En lenguaje de programación, esto se llama análisis. El protocolo NMEA tiene reglas bastante estrictas sobre cómo se definen las cadenas. Cada elemento está en una posición especificada y separados con una coma. Por lo que el programa tiene que ir a través de los datos y extraer lo que quiere e ignorar al resto. Para mis propósitos, leí a altitud y omiten el resto de la línea.
Para tu información: La suma de comprobación es un medio de verificar si la secuencia de datos está dañado o intacto. En general, si tiene datos dañados, generalmente será ilegible de todos modos. Sólo ignoro sumas de comprobación.

Problema: Mostrar la latitud, longitud, altitud. En este punto, todos los datos es en caracteres. Simplemente puede mostrarse en cuadros de texto. Pero para mis propósitos, hay dos problemas. Uno es ordenadores son tontos, no media caracteres, tienen que usar números. Utilizar un número de tipo 'double' que significa que puede incluir un punto decimal, como 545.4. El segundo problema es que latitud y longitud se escriben en el formato de grados y minutos en un número. 4807.038 es de 48 grados 07.038'. Ordenadores son tontos que no entienden esto.

No te preocupes si lo siguiente no tiene sentido para usted.
Solución: La mayoría de lenguajes de programación tienen una manera para convertir los caracteres a un doble. En VB expres usé esto:
dLat = Convert.ToDouble(lineArr(2))

Conversión que latitud es un poco más complicado, yo hice esto
grados = Int(dLat / 100) //This toma los dos primeros dígitos y los convierte a un entero (número sin un decimal)
decimaldegrees = (dLat - (100 * grados)) / 60.0 / / esto lleva el número original,
resta la porción de títulos y
convierte a decimal
fullLat = grados + decimaldegrees //This combina las dos

Por ejemplo si dLat = 4807.038
grados = Int(4807.038 / 100)
grados = Int(48.07038)
grados = 48

decimaldegrees = (dLat - (100 * grados)) / 60.0
decimaldegrees = (4807.038 - (100 * 48)) / 60.0
decimaldegrees = (4807.038-4800) / 60.0
decimaldegrees = (7.038) / 60.0
decimaldegrees = 0.1173

fullLat = grados + decimaldegrees
fullLat = 48 + 0.1173
fullLat = 48.1173

¿Así que no es programación de diversión? ¡No! ¡ No es! La buena noticia es que una vez que el programa de derecho, que la computadora hará todos los cálculos sin esfuerzo. La mala noticia es que si el programa (algoritmo) es incorrecto, lo hará mal sin esfuerzo. Desde que estoy no casi perfecta, que tengo que hacer un montón de problemas.

Mapa de Ubicación: He copiado esta característica de otro programador (ojalá que me acordé donde lo encontré). Si tienes una conexión a Internet y una buena CPU, presionando este botón abrirá Google mapas y mostrar su ubicación GPS. Esto no es muy útil para mí. Si utilizo mi laptop Pentium III en mi coche, es demasiado lento para mostrar esto y generalmente no tengo conexión a internet en el camino de todos modos.

Problema: Calcular un promedio de marcha de las anteriores.
Solución: Esto es relativamente fácil, sólo mantiene sumando los valores y dividir por el número de muestras.

He incluido dos versiones de mi software.

Para utilizar el primero, publish.zip, necesita una conexión a internet. (No he probado esto) Guarde el archivo zip en su computadora, ejecute setup.exe. Si esto funciona de la manera que utiliza para, descarga todos los archivos de soporte e instalar el programa. Usted debe ser capaz de utilizar esto con cualquier GPS USB compatible con protocolos NMEA 0183.
La segunda versión, Michaels GPS.zip contiene todo el código fuente. Te sugiero instalar Microsoft Visual Basic Express 2010 primero, luego copiar mis archivos en el directorio del proyecto. Mina se ve algo como esto:
\\MICHAEL-PC\Users\Michael\Documents\Visual studio 2010\Projects\

El ejecutable está bajo el nombre de proyecto, por unos pocos directorios... \bin\release. Teóricamente, puede ejecutar el archivo .exe. Instalación de Microsoft Visual Basic Express 2010, es la razón sugerí que instala todo .NET lo necesitada por el programa. Si eso no funciona, también puede iniciar de VB expres y abra el proyecto y ejecutarlo.

Configuración: Introduzca el puerto correcto de Comm GPS USB. Haga clic en Update. Los datos deben iniciar actualización. Si obtienes un error, Dejar de actualizaciones y actualización otra vez.

Artículos Relacionados

Nueva vida para un viejo portátil

Nueva vida para un viejo portátil

Pido disculpas por no tener fotos en progreso o comparación de datos. Yo no estaba pensando en hacer un Instructable hasta después de que se ha hecho. Esto sólo demuestra las posibilidades de que se puede hacer...Así que mi prima dio un portátil más
Generar 101 usos para monitor viejo en media hora! ¿

Generar 101 usos para monitor viejo en media hora! ¿

Siempre tenía un viejo monitor CRT ahí cuando ese gran monitor LCD tomó su lugar? Este instructable genera 101 ideas sobre qué hacer con él! Puede utilizar este método para cualquier otra cosa. Yo estoy mostrando aquí con un ejemplo de un viejo monit
Soporte de GPS para tu moto

Soporte de GPS para tu moto

no pude encontrar un soporte GPS para mi moto que ajuste donde que quería así que solo haría uno. Encontré una montura de succión para mi marca (Garmin GPSMap 60C) en Gander Mountain que es una caza y pesca tienda en mi localidad. El Monte era una ma
Escape casero para el viejo cortacésped

Escape casero para el viejo cortacésped

usted puede construir su propio, sistema de escape casero para un viejo motor de podadora Briggs y Stratton!Al tomar mi cortacésped de recogido de basura de los años 70-era, además de saber que este motor fue hecha el mismo año que fue, me di cuenta
Golf GPS para un hacker

Golf GPS para un hacker

En primer lugar, permítame calificar mi definición de «Hacker». Mientras que personas que leen esto inmediatamente pensará «hacker de la web», «hacker creador», etc., yo soy un "Hacker de Golf –" cuando juego, llego a ver todo el curso y utiliza
Un buen uso para un viejo cargador de teléfono

Un buen uso para un viejo cargador de teléfono

Termómetros de interior y al aire libre son muy útiles, pero el transmisor al aire libre puede consumir demasiadas pilas, dependiendo de la unidad. Decidí alimentar el transmisor al aire libre con un cargador de teléfono antiguo. El voltaje del carga
Intercomunicador sencillo de un par de viejos con cable teléfonos

Intercomunicador sencillo de un par de viejos con cable teléfonos

Un intercomunicador puede ser una herramienta útil o un divertido juguete. En este proyecto, voy a mostrarles como hacer un intercomunicador simple utilizando un par de viejos con cable teléfonos. Se trata de un proyecto de electrónica fácil ideal pa
Un impresionante juguete para gatos no perezoso!

Un impresionante juguete para gatos no perezoso!

Hace unos meses publiqué mi primer tutorial - otro juguete - que fue un éxito en casa. Mi gatito disfrutado! El cat...well más viejo, ella básicamente doesn´t amor juguetes... ella sería algo a dormir!Desafortunadamente, mi gatito fallecido, así que
Usos múltiples para un viejo extenstion cable (audio)

Usos múltiples para un viejo extenstion cable (audio)

bien, si te aburres de caja estanca tu viejo iPod Nano, luego solo que poca cuerda y ver lo que se puede utilizar para. Como yo lo hice!Tal vez sería en mi nuevo libro..."Estoy DIY y así que puede usted!"Paso 1: Extraer el cable de la caja. Segu
Soporte para coche viejo la taza

Soporte para coche viejo la taza

Cuando conduzco mi triunfo Spitfire para trabajar, suelen tener taza de café de un Starbucks que tiene una boquilla de cierre apretada. Eso es bueno, porque llega con cada curva--ningún sostenedor de taza!La semana pasada, me di cuenta que estaba viv
Registrador de datos GPS para corredores del camino de

Registrador de datos GPS para corredores del camino de

Yo soy un corredor del camino (a pie), y me gustan los números y matemáticas así (como un estudiante de ingeniería). La idea de seguimiento /marcando mi camino corriente para el post-análisis siempre me ha fascinado, pero siempre enfrento un problema
HUD de GPS para moto/motocicleta casco

HUD de GPS para moto/motocicleta casco

la idea principal de este proyecto era poder "jack baja" yo mismo y poder ver qué caminos había viajé en la temporada invernal de motos de nieve, luego tomar los datos y colóquela sobre un mapa de google para ver la endecha detallada de las ruta
10 usos para tu viejo cepillo de dientes

10 usos para tu viejo cepillo de dientes

aquí están algunas maneras útiles para volver a utilizar su cepillo de dientes viejo.  Usted puede pensar este Cepillito pequeño sólo es bueno para limpiar los dientes, pero aquí hay 10 maneras que usted puede mantener el ciclo de cepillo de dientes,
IDE favoritos! Nueva vida para cables viejos!

IDE favoritos! Nueva vida para cables viejos!

Nuevas tecnologías son cosas buenas, sobre todo las como SATA que nos dan de cableado simple, tasas de transferencia de datos veloz y juguetes nuevos para comprar. Sin embargo, hay otro lado más desafortunado al progreso. Ese lado es tecnología desec