Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA


Objetivo: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Alguien puede guiarme en leer un dispositivo GPS, por el puerto serie, utilizando protocolo NMEA y que los datagramas o sentencias queden almacenadas en un string cada una para luego poder separar los datos de información de cada sentencia. La sentencia NMEA comienza con un caracter "$" y finaliza con un carácter de carry return <CR> (0D en hexa) seguido de uno de line feed <LF> (0A en hexa). También tiene un chequeo de paridad antes de terminar la trama de datos.

Lectura de sentencias e impresión en pantalla. (No genera un string por cada sentencia, solo se basa en el final de carrera para imprimir en un TextBox)
-------------------------------------------------------------------------------------------------
$GPRMB,V,,,,,,,,,,,,V*66
$GPGGA,155945,,,,,0,00,,,M,,M,,*6F
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,02,11,035,00,04,20,077,00,09,78,189,00,12,46,262,00*7B
$GPGSV,3,2,12,14,09,214,00,15,29,351,00,17,30,132,00,18,01,283,00*7C
$GPGSV,3,3,12,22,01,250,00,26,43,244,00,27,81,126,00,30,19,273,00*79
$PGRME,,M,,M,,M*00
$GPGLL,,,,,155945,*59
$PGRMZ,,,*7E
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPWPL,3132.094,S,06832.587,W,T003*28
$GPRMC,155946,V,,,,,,,090310,,*30
-------------------------------------------------------------------------------------------------

Como se direcciona la lectura de mediante un conversor USB -Serie ?

Gracias por su tiempo

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Pregunta:

¿Estas utilizando un receptor GPS?
¿Lo has conectado al equipo en el cual tienes Linux?
¿Has probado si el sistema operativo lo reconoce?.

Estas preguntas básicas te las hago porque no me manejo bien en esto, y a lo mejor aprendemos entre todos.

Saludos

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Si claro, está conectado y de hecho, puedo leerlo perfectamente con el ejemplo de lectura del puerto serie que viene con Gambas2. Por lo tanto, estoy seguro de que se lee bien. Solo que necesito formar las sentencias en string, donde cada String sea solo una sentencia NMEA. Tal cual se muestra en la impresión en pantalla. El problema es que la impresión en pantalla utiliza los métodos de concatenación de caracteres y el EndOfLine para mostrarlo de esta manera. Pero no quedan guardados en ninguna variable tipo string, que es justamente lo que necesito para poder decodificar y extraer los datos.

Gracias, Saludos.

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Hola

¿Podrías colocar un pantallazo de como esta mostrándote la data, el programa serie de gambas?.

Saludos

última edición por abarzuaf el Miercoles, 31 Marzo 2010, 14:54; editado 1 vez
Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
El ejemplo SerialPort de gambas usa una variable tipo string y un TextArea:

PUBLIC SUB SPort_Read()
DIM s AS String
READ #Sport, s, Lof(Sport)
TextArea1.Text = TextArea1.Text & s
END


Puedes usar directamente la propiedad Text del control TextArea1 o crear una nueva variable de tipo string y asignarle el valor de TextArea1.Text

Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Traté de utilizar el TexArea1.Text asignándolo a un String, pero tiene el acumulado de todas las lecturas en cada tiempo de muetreo del GPS. Yo necesito guardar en el String, solo la sentencia actual, no todo el acumulado.

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Cada vez que entran datos por el serial port, ¿Entra una línea cada vez o entra todo de golpe?

En cualquier caso, creo que la única forma es escoger qué línea te interesa leer mediante una simple comparación de cadenas:

Pongamos por caso ésta línea que es la que interesa para conocer las coordenadas en tiempo real:

$GPWPL,3132.094,S,06832.587,W,T003*28

En el método que lee desde el puerto serie mediante el evento _Read:

PUBLIC SUB serialPort_Read()

DIM sAux AS String
DIM lineaCoords AS String[] ' Puede que interese hacerlo público

lineaCoords.Clear
IF serialPort.Status = Net.Active THEN
LINE INPUT #serialPort, sAux 'asignamos cada línea recibida a la variable sAux
IF Left(sAux, 6) = "$GPWPL" THEN ' si la linea comienza por $GPWPL, nos interesa
lineaCoords = Split(sAux, ",") ' como los datos están separados por comas
'lo asignamos directamente a un array, mediante Split.
ENDIF
ENDIF

END


Entonces tenemos que cada vez que entren datos por el puerto, el array lineaCoords tendrá los datos que nos interesan (quizás habría que declararlo de ámbito global para tener acceso desde cualquier parte de tu clase o formulario) y podrás acceder a ellos simplemente:

latitud = lineaCoords[1]
lat_norte_o_sur = lineaCoords[2]
longitud = lineaCoords[3]
lon_este_u_oeste = lineaCoords[4]


Luego deberás convertir los valores para trabajar con ellos. Creo que había que multiplicarlos por 100 para obtener los grados decimales, y luego si quieres obtener minutos y segundos... en fin, sólo es un ejemplo de manejo de cadenas de texto que deberás adaptar a tus necesidades una vez comprendido el concepto.

Saludos

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Los datos van entrando de a un caracter, al menos eso aparenta ser así. Voy a probar el código que me pasaste de lectura del puerto. El desglose de las cadenas de caracteres y adaptación de la información, en principio lo tenemos solucionado.

Muchas gracias por tu aporte. En caso de persistir con la duda, lo estaré comunicando.


Saludos,

Perfil MP  
Objetivo: Re: Lectura De Sensores GPS, Puerto Serie Y/o USB, Protocolo NMEA
Hola que tal veo que manejas muy bien gambas yo acabo de cambiarme a linux y como programaba en visual basic encontre que con gambas podria hacer aplicaciones parecidas a lo que hacia anteriormente, veraz en gambas intento mandarle datos por el puerto serial a un microcontrolador, con visual basic me resultaba facil pero en gambas estoy perdido espero puedas ayudarme y de antemano gracias.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.3765s (PHP: -80% SQL: 180%)
Consultas SQL: 46 - Debug off - GZIP Activado