RE:Extraer las coordenadas de un GPS
Supongo que el GPS se comunica por un puerto com, si es así una vez abierto correctamente el puerto, el siguiente codigo en VBNet, a mí me funciona correctamente.
tmrGPS es un control timer.
Private s As String
Private Sub tmrGPS_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrGPS.Tick
If s = "" Then Exit Sub
Dim LastSt As String = s
Dim Fields() As String
Dim Lecturas() As String
Dim Lectura As String
'Sumamos uno para asegurarnos que tenemos al menos un $
LastSt = LastSt.Substring(0, LastSt.LastIndexOf("$"))
'vaciamos la cadena original quedandonos con el último $
'TODO:
'Comprobar que s contiene lo que debería contener.
s = s.Substring(LastSt.Length)
'Cojemos las lecturas en un Array
Lecturas = LastSt.Split(search)
For Each Lectura In Lecturas
'Procesamos cada una de las lecturas
Fields = Lectura.Split(",")
Select Case Fields(0)
Case "GPGGA"
'Los indices que nos interesan, de momento son:
'1.- Hora (hhmmss.ss)
'2.- Latitud (dddmm.mmm) grados y minutos
'3.- N o S (latitud)
'4.- Longitud (dddmm.mmm) grados y minutos
'5.- E o W (longitud)
'7.- Numero de Satelites.
'9.- Altitud sobre el nivel del mar
'10.- Unidades de la altitud, deberían ser M
Me.lblTime.Text = Formatos.strTime(Fields(1))
Me.lblLatitud.Text = Fields(2)
Me.lblLat.Text = Fields(3) 'Norte (N) o Sur (S)
Me.lblLongitud.Text = Fields(4)
Me.LblLong.Text = Fields(5) 'Este (E) u Oeste (W)
Me.lblSatelites.Text = Fields(7)
Me.lblAltitud.Text = Fields(9)
Me.lblUnits.Text = Fields(10)
Conversion.ToUTM(Me.lblLatitud.Text, Me.lblLongitud.Text)
Case Else
'De momento ignoramos el resto de lecturas.
'Es posible que en un futuro queramos hacer algo con otras lecturas
'Por eso de momento usamos un SELECT CASE en ve de un IF.
End Select
Next Lectura
Me.txtLed.Visible = Not Me.txtLed.Visible
End Sub