|
||
| Tus alertas |
| Programación y Desarrollo para WM Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo WM |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
leer gps
Hola, a ver si alguien me puede ayudar con vb.net, estoy haciendo una aplicacion para leer los datos del gps, con un serialport, cuando hago un readline me da un error de OutofMemory. Si corro ese código en el pc de sobremesa lee los datos correctamente. Sabe alguien alguna forma de solucionar esto?. El código resumido que pongo es este:
buffer=9060 serialport1.open() dim leer as string = serialport1.readline texbox1.text= leer si en lugar de usar serialport1.readline uso serialport1.readbyte lee bien 2 números. Otra pregunta como se puede activar el bluetooth. en que puerto está. Gracias por adelantado. |
|
#2
|
||||
|
||||
|
No he mirado nada el tema del GPS, aunque podria recomendarte algun ejemplo si quieres...
De todos modos, si pudieras dar algun dato más quiza pudieramos ayudarte, pero me da que has sido demasiado escueto... falla en compilacion o en ejecucion? En que linea? el buffer que declaras se usa en la llamada de lectura del gps? Porque bueno en principio el OutOfMemory podria venir por ahi...
__________________
Disco duro virtual con recursos de programación en Windows Mobile: http://htcdiamond.4shared.com CAPITULOS DEL CURSO: 1. Introducción a la programación en WM y Hola mundo. 2. Programación orientada a objetos. Ejemplo agenda. 3. Introduciendo musica e imagenes. Generando CAB. Tres en raya. A. Temporizaciones y giros de pantalla. PRÓXIMOS CAPITULOS: - Uso de ficheros externos y tokenizers. - Uso del acelerómetro con ejemplo. - Splash forms |
|
#3
|
||||
|
||||
|
No he mirado nada el tema del GPS, aunque podria recomendarte algun ejemplo si quieres...
De todos modos, si pudieras dar algun dato más quiza pudieramos ayudarte, pero me da que has sido demasiado escueto... falla en compilacion o en ejecucion? En que linea? el buffer que declaras se usa en la llamada de lectura del gps? Porque bueno en principio el OutOfMemory podria venir por ahi... ![]() hola romo1987, gracias por contestar este es el código completo y falla justo al leer los datos ** , cuando corre en el p3300, en el pc de mesa no falla., tambien me gustaria ver algún ejemplo. Public Class frmGPS Private Sub btnRead_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnRead.Click Try '----------------------------------------------------------- ' COM Port to Use '----------------------------------------------------------- Dim sComPort As String = Me.cboCOMPort.Text Me.txtResult.Text = sComPort & vbCrLf '----------------------------------------------------------- ' Baud Rate '----------------------------------------------------------- Dim iBaudRate As Int32 iBaudRate = Val(Me.cboBaudRate.Text) Me.txtResult.Text += iBaudRate.ToString & vbCrLf '----------------------------------------------------------- Dim comPort As System.IO.Ports.SerialPort comPort = New System.IO.Ports.SerialPort(sComPort) comPort.BaudRate = iBaudRate comPort.ReadBufferSize = 512 With comPort .PortName = "COM4" 'windows mobile 5 .Handshake = IO.Ports.Handshake.RequestToSend .Encoding = System.Text.Encoding.ASCII .ReadTimeout = 500 .WriteTimeout = 500 .ReadBufferSize = 4096 .WriteBufferSize = 4096 .ReceivedBytesThreshold = 1 .BaudRate = 9600 .Parity = IO.Ports.Parity.None .DataBits = 8 .StopBits = IO.Ports.StopBits.One .DiscardNull = True .Open() End With '----------------------------------------------------------- ' Retries '----------------------------------------------------------- Dim n As Int16 n = Me.nudRetries.Text '----------------------------------------------------------- ' Loop Reading Data '----------------------------------------------------------- comPort.Open() For i As Int16 = 1 To n Me.lblNr.Text = i.ToString & "/" & n.ToString ' Read the COM Data 'Dim sReadData As String = comPort.ReadLine.ToString Dim sReadData As String = comPort.ReadLine ** 'sReadData = comPort.ReadByte Me.txtResult.Text = Me.txtResult.Text + sReadData & vbCrLf ' Parse Values Dim sValues As String() sValues = sReadData.Split(",") ' Recommended Minimun Specific GPS Transit Data If sValues(0) = "$GPGGA" Then If sValues(3).Length > 0 And sValues(5).Length > 0 Then Me.lblLatitud.Text = sValues(3) Me.lblLongitud.Text = sValues(5) Exit For End If End If Application.DoEvents() Next comPort.Close() '----------------------------------------------------------- MessageBox.Show("Intents Esgotats") Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub frmGPS_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Try '----------------------------------------------------------- ' Initial Values '----------------------------------------------------------- With Me.cboCOMPort.Items .Add("COM1") .Add("COM2") .Add("COM3") .Add("COM4") .Add("COM5") .Add("COM6") .Add("COM7") .Add("COM8") .Add("COM9") End With With Me.cboBaudRate.Items .Add(4800) .Add(9600) End With Me.cboCOMPort.SelectedIndex = 3 'puerto COM4 Me.cboBaudRate.SelectedIndex = 1 '9600 Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click Me.Close() End Sub End Class |
|
#4
|
||||
|
||||
|
Me temo que no voi a poder ayudarte... Visual Basic es desconocido para mi, y aun no he programado para GPS nunca... Pero vamos que con ese error yo prestaria atencion a la asignaciond e buffers y a la memoria dinamica, porque deben de ir por ahi los tiros...
Quiza estas utilizando demasiada y el pda no da mas de si, pues el modelo que me dices tiene la memoria limitada... Asegurate de estar reciclando las reservas, en lugar de reservar memoria constantemente. Los codigos de ejemplo que tengo con en C#. Pero bueno, por si te pudieran servir, voi a subirlos ahora mismo a mi carpeta de compartidos, seccion Ejemplos GPS. Tengo una brujula gps, un detectos de altitud y longitud, un velocimetro y un programa para que te diga donde gastaste el dinero este mes (con coordenadas de gps). Espero que te sirvan o alguien mas pueda orientarte, un saludo!
__________________
Disco duro virtual con recursos de programación en Windows Mobile: http://htcdiamond.4shared.com CAPITULOS DEL CURSO: 1. Introducción a la programación en WM y Hola mundo. 2. Programación orientada a objetos. Ejemplo agenda. 3. Introduciendo musica e imagenes. Generando CAB. Tres en raya. A. Temporizaciones y giros de pantalla. PRÓXIMOS CAPITULOS: - Uso de ficheros externos y tokenizers. - Uso del acelerómetro con ejemplo. - Splash forms |
|
#5
|
||||
|
||||
|
gracias de todos modos.
|
|
#7
|
||||
|
||||
|
hola Xylar,
Gracias por contestar si pongo un try..catch ignora el error pero sigue existiendo y sin leer los datos del puerto. si me puedes decir como lo solucionaste. Saludos badaxavi |
|
#8
|
||||
|
||||
|
Se que llego un poco tarde, pero si estás programando ese ejemplo en la 3300 el error viene porque nuestra 3300 tiene problemas con los puertos serie, yo tampoco puede programarlo con puertos serie y la conclusión fue esa, 3300 y serial ports no se gustan.
Pero no tienes ningún problema porque con wm5 y wm6 se utiliza el GPS Intermediate Driver, existe un ejemplo en la carpeta de tu pc del sdk correspondiente, échale un ojo. Saludos.
__________________
... Mejor en el foro que por privados, todos ganamos ... "Cuando un hombre se sienta con una chica bonita durante una hora, parece que fuese un minuto. Pero déjalo que se siente en una estufa caliente durante un minuto y le parecerá más de una hora. Eso es relatividad." Einstein "Si ocurre algo malo, bebes para olvidar, si ocurre algo bueno, bebes para celebrarlo, y si no pasa nada, bebes para que pase algo." Charles Bukowski |
|
#9
|
||||
|
||||
|
Hola, al fin he podido leer el GPS, pero resulta que la antena envía las señales continuamente, si pongo un buffer de 500 lee bastante rapido en 30 segundos ya las tengo, pero da muchos fallos, lo que pretendo es leer de linea en linea, eso como se podría hacer??
Saludos |
|
#10
|
||||
|
||||
|
al final has usado el ejemplo que te indiqué??
para leer por partes es coger todo el texto e ir partiendolo
__________________
... Mejor en el foro que por privados, todos ganamos ... "Cuando un hombre se sienta con una chica bonita durante una hora, parece que fuese un minuto. Pero déjalo que se siente en una estufa caliente durante un minuto y le parecerá más de una hora. Eso es relatividad." Einstein "Si ocurre algo malo, bebes para olvidar, si ocurre algo bueno, bebes para celebrarlo, y si no pasa nada, bebes para que pase algo." Charles Bukowski |
|
#11
|
||||
|
||||
|
Abrimos el Puerto del GPS
Public Sub GPS_Abrir_Puerto(ByVal nombre_puerto As String, ByVal velocidad As Integer) With puerto .PortName = nombre_puerto .BaudRate = velocidad .Parity = IO.Ports.Parity.None .Handshake = Handshake.XOnXOff .DataBits = 8 .StopBits = StopBits.One .ReadTimeout = 500000 .Open() End With End Sub Leermos los Datos del GPS Private Sub puerto_datos_recibidos(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles puerto.DataReceived Dim pos As Integer = 0 Dim buff As Byte() = New Byte(500) {} 'MsgBox(buff.Length) While True Try If puerto.IsOpen Then buff(pos) = Convert.ToByte(puerto.ReadByte()) pos += 1 If pos = buff.Length Then Exit While End If Else Exit Sub End If Catch Exit Try End Try End While datos_gps = ASCIIEncoding.ASCII.GetString(buff, 0, pos) End Sub Esta es la solucion que tengo ahora mismo, el buffer lo tengo en 500 para que reciba los datos rápido y correctamente. |
|
#12
|
||||
|
||||
|
Yo hice un miniprograma hace poco para leer el gps discretamente, cada vez que pulsabas un boton... tome un ejemplo que encontre en la red, pero la verdad es que tampoco me funciono. Aun tengo pendiente buscar el error...
__________________
Disco duro virtual con recursos de programación en Windows Mobile: http://htcdiamond.4shared.com CAPITULOS DEL CURSO: 1. Introducción a la programación en WM y Hola mundo. 2. Programación orientada a objetos. Ejemplo agenda. 3. Introduciendo musica e imagenes. Generando CAB. Tres en raya. A. Temporizaciones y giros de pantalla. PRÓXIMOS CAPITULOS: - Uso de ficheros externos y tokenizers. - Uso del acelerómetro con ejemplo. - Splash forms |
|
#13
|
||||
|
||||
|
Yo con ese código consigo todo, lo que me falta es interpretarlo de forma segura, en el hilo del programa antirrobo JMGarciam me puso cual era el que mostraba la posición, lo que yo quería es leer solo un comando GPS, y no que me muestre todos.
|
|
#14
|
||||
|
||||
|
pues coge solo la trama NMEA que te interesa, que supongo sea tu duda
__________________
... Mejor en el foro que por privados, todos ganamos ... "Cuando un hombre se sienta con una chica bonita durante una hora, parece que fuese un minuto. Pero déjalo que se siente en una estufa caliente durante un minuto y le parecerá más de una hora. Eso es relatividad." Einstein "Si ocurre algo malo, bebes para olvidar, si ocurre algo bueno, bebes para celebrarlo, y si no pasa nada, bebes para que pase algo." Charles Bukowski |
|
#15
|
||||
|
||||
|
Hola, voy a plantear mi duda en este hilo para no abrir uno nuevo..
El caso es que quiero implementar una aplicación que plasme los datos que me interesen del GPS así como otra información del sistema. El problema que tengo es que no se absolutamente nada de programar con esa función. No sé inicializarlo, no sé cómo hacer que se conecte.. en fín, todo. Podíais pasarme algún código comentado para ver cómo se maneja? Muchísimas Gracias. Un saludo |
![]() |
| Herramientas | |