jueves, 13 de septiembre de 2012

GPS - Monitor de señal. SDL y Gambas

GPS - Monitor de señal.
SDL y Gambas

Siempre he querido hacer algún montaje con gps, y ahora en este articulo me pongo manos a la obra.
Dispongo de un modulo gps modelo HOLUX M-1200, que se enlaza al móvil mediante Bluetooth, funcionando a las mil maravillas.
El Holux dispone de otro tipo de comunicaciones, modo serie, utiliza los cables del usb (D- y D+) como señales serie funcionando a: Baud rate : 38400 bps Data bit : 8 Parity : N Stop bit : 1.
Las señales funciona en niveles de CMOS Level, por lo cual podemos utilizar multitud de montajes o aparatos que trabajan con esas señales.
Puedes comprar por internet cables adaptadores (GR230-A2)- (GR230-A1).
También puedes utilizar adaptadores de mis anteriores circuitos. terser.html
En mi caso voy a utilizar un antiguo cable de un teléfono móvil que adapta USB-SerieTTL.

USB-SerieTTL


Usando un adaptador Bluetooth

Los programas realizados leen los datos transmitidos por el gps. Cuando encuentra la línea que empieza por $GPGGA  la captura y trata los datos segun la norma NMEA.
GGA —Global Positioning System Fixed Data




El primer programa realizado está hecho en Gambas una especie de Visual Basic para Linux, es fácil de hacerlo debido a su IDE y su apariencia es limpia.

Programa en Gambas
En el programa se selecciona el tipo de conexión ya sea mediante usb o serie, y con solo dar al botón start empieza a recibir datos del gps. En este programa no tiene registro de datos, es solo visualización.

El segundo programa está realizado mediante la librería SDL, es una librería para realizar juegos pero se puede utilizar para distintos propósitos.


Funcionamiento en Linux
Programa Linux
Funcionamiento en Windows
Programa Windows
En este programa realizado mediante la librería SDL el interfaz serie hay que ponerlo como argumento del programa. Si no ponemos argumento, el valor por defecto del interfaz de comunicaciones es /dev/ttyUSB0 para Linux y COM4 para Windows.
He incorporado un registro de datos que se almacenan en el fichero gpsreg.txt donde se almacena las coordenada y la fecha.

Lo que me satisface más, es el poder compilar para las dos plataformas, Linux o Windows, con solo cambiar la directiva YesWindows 0 por #define YesWindows 1 .
Como he dicho en el anterior trabajo, la programación se ha realizado en Linux  con el IDE Anjuta, y en Dev-C++ bajo Windows.


Un saludo.
Juan Galaz

Bibliografía:

http://www.muchotrasto.com/gps.php

NMEAReferenceManual.pdf