Foros del Web » Programación para mayores de 30 ;) » Programación móvil »

GPS Windows Mobile VB.NET

Estas en el tema de GPS Windows Mobile VB.NET en el foro de Programación móvil en Foros del Web. Hola llevo dias con este problema y la verdad necesito ayuda, tengo que obtener latitud y longitud desde una PPC ocupando el puerto del GPS, ...
  #1 (permalink)  
Antiguo 04/02/2016, 08:24
Avatar de rigo_5834  
Fecha de Ingreso: julio-2009
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 8
GPS Windows Mobile VB.NET

Hola

llevo dias con este problema y la verdad necesito ayuda, tengo que obtener latitud y longitud desde una PPC ocupando el puerto del GPS, tengo un codigo que no falla pero que no me trae resultados.

SerialPort1.ReadExisting()

Casi siempre esta vacio, a veces trae informacion pero nunca obtengo las coordenadas GPS, y si ocupo la aplicacion con la que viene en la PPC si trae correctamente la info.

esta validado que ocupa el puerto correcto y todo, pero por alguna razon no me trae los datos.

Este es el codigo completo: ojala alguien tenga una idea

Código:
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel

Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports


Public Class Form1

#Region "Variables"
    Public Latitud As String
    Public Longitud As String
#End Region


#Region "Constructor"
    Public Sub New()
        ' Esto es necesario
        InitializeComponent()
        ' Aqui intentamos abri el puerto
        Try

            SerialPort1.PortName = "COM6"
            SerialPort1.BaudRate = 9600
            SerialPort1.Parity = System.IO.Ports.Parity.None
            SerialPort1.DataBits = 8

            SerialPort1.Open()

            btnEmp.Text = "Detenido"
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Timer1.Enabled = False
            btnEmp.Text = "Iniciado"
            Refresh()
            Return
        End Try
    End Sub
#End Region


    Private Sub btnEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEmp.Click
        'Comprobamos el estado del timer y lo invertimos.
        If Timer1.Enabled = True Then
            Timer1.Enabled = False
        Else
            Timer1.Enabled = True
        End If
        If btnEmp.Text = "Iniciado" Then
            btnEmp.Text = "Detenido"
        Else
            btnEmp.Text = "Iniciado"
        End If
    End Sub

    Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      
        If SerialPort1.IsOpen Then
            'En esta variable, insertamos todo lo leido del Puerto.
            Dim datos As String = SerialPort1.ReadExisting()

            TextBox1.Text = ""
            TextBox1.Text = Now.ToString("hh:mm:ss") & "--" & SerialPort1.IsOpen & "-->" & datos & vbCrLf

            'Aqui creamos las diferentes lineas, basandonos en el simbolo del dolar
            Dim strArr() As String = datos.Split("$")
            Dim i As Integer = 0

            If strArr.Length > 1 Then
                Try
                    For i = 0 To strArr.Length
                        'Ahora obtenemos los datos, separados por las comas.
                        Dim strTemp As String = strArr(i)
                        Dim lineArr() As String = strTemp.Split(",")

                        'Si la linea es GPGGA, cojemos los bloques de cadena 2 y 4 (latidud y longitud) y pasamos los datos obtenidos a coordenadas UTM.
                        If (lineArr(0) = "GPGGA") Then
                            Try
                                Dim dLat As Decimal
                                Dim dLon As Decimal

                                dLat = Convert.ToDecimal(lineArr(2))
                                dLat = dLat / 100
                                Dim lat() As String = dLat.ToString().Split(".")
                                Latitud = lat(0).ToString() + "." + ((Convert.ToDouble(lat(1)) / 60)).ToString("#####")
                                txtLat.Text = Latitud

                                dLon = Convert.ToDecimal(lineArr(4))
                                dLon = dLon / 100
                                Dim lon() As String = dLon.ToString().Split(".")
                                Longitud = lon(0).ToString() + "." + ((Convert.ToDouble(lon(1)) / 60)).ToString("#####")
                                txtLong.Text = Longitud

                            Catch
                                ' Si no podemos leer el GPS
                                'txtLat.Text = "No puedo leer GPS "
                                'txtLong.Text = "No puedo leer GPS"
                            End Try
                        End If
                    Next
                Catch
                    'No hacemos nada
                End Try
            End If
        Else
            txtLat.Text = "Puerto COM Cerrado"
            txtLong.Text = "Puerto COM Cerrado"
        End If

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.Show()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Application.Exit()
    End Sub
End Class
saludos


Etiquetas: gps, mobile, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.