Paso 3: Mi GPS programa
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.