Hola a todos..
Tengo un problema que no he podido identificar.
Tengo un GPS Star III
quiero adaptarlo a un pic, estoy probando todo acerca de la comunicacion seríal y todo ok, incluso el programa me funciona bien en el simulador (pic Simulator ide), pero cuando lo corro en el pic, funciona perfecto para la primera cadena de texto del GPS, pero luego se bloquea y no me bota nada más..
Adjunto el código y la cadena que el envio.
inicio:
StartFromZero
Dim vh(6) As Byte
Dim vn(10) As Byte
Dim vw(10) As Byte
Dim va(6) As Byte
Hseropen 9600
WaitMs 1000
Dim h As Byte
Dim i As Byte
Dim tmp As Byte
Dim comas As Byte
Dim vp(6) As Byte
Hserout "Entro a Inicio: ", CrLf
WaitMs 200
For i = 0 To 5
vp(i) = 0
vh(i) = 0
va(i) = 0
Next i
For i = 0 To 9
vn(i) = 0
vw(i) = 0
Next i
i = 0
tmp = 0
comas = 0
h = 0
PCLATH = 0
loop:
Hserin tmp
vp(i) = tmp
If vp(0) = "$" Then
i = i + 1
If i = 6 Then i = 0
If vp(0) = "$" And vp(1) = "G" And vp(2) = "P" And vp(3) = "G" And vp(4) = "G" And vp(5) = "A" Then
Goto guardar
Endif
Else
'i = 0
Goto loop
Endif
Goto loop
End
guardar:
loop2:
Hserin tmp
If tmp = "," Then comas = comas + 1
Select Case comas
Case 1
Goto guardarh
Case 2
Goto guardarn
Case 3
Case 4
Goto guardarw
Case 5
Case 6
Case 7
Case 8
Case 9
Goto guardara
Case 14
i = 0
Goto mostrar
Goto inicio
EndSelect
Goto loop2
Return
mostrar:
Hserout "HH:MM:SS ", vh(0), vh(1), ":", vh(2), vh(3), ":", vh(4), vh(5), CrLf
WaitMs 50
Hserout "NORTE: "
WaitMs 50
For h = 0 To 9
Hserout vn(h)
WaitMs 50
Next h
Hserout CrLf
Hserout "OESTE: "
WaitMs 50
For h = 0 To 9
Hserout vw(h)
WaitMs 50
Next h
Hserout CrLf
WaitMs 50
Hserout "ALTURA(MSNM): "
WaitMs 50
For h = 0 To 5
Hserout va(h)
WaitMs 50
Next h
Hserout CrLf
WaitMs 50
Goto inicio
Return
guardarh:
'While
Hserin tmp
If tmp <> "," Then
vh(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardarn
Endif
Goto guardarh
Return
guardarn:
'While
Hserin tmp
If tmp <> "," Then
vn(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardarn
Return
guardarw:
'While
Hserin tmp
If tmp <> "," Then
vw(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardarw
Return
guardara:
'While
Hserin tmp
If tmp <> "," Then
va(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardara
Return
$GPGGA,123456,1234.56789,N,08913.7086,W,2,06,3.6,555.22,M,-32.3,M,,*7D
Muchas Gracias a quien pueda ayudarme...