<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hola Máxi,</div><div>Según los ejemplos es así. Primero conectas y luego configuras.</div><div><br></div><div>¿Alguna idea?</div><div><br></div><div>Saludos.</div><div><br>El 16/07/2013, a las 15:20, Maxi <<a href="mailto:maximiliano.duarte@gmail.com">maximiliano.duarte@gmail.com</a>> escribió:<br><br></div><blockquote type="cite"><div><p><br>
El 16/07/2013 09:28, "Antonio Évora" <<a href="mailto:aevorar@gmail.com">aevorar@gmail.com</a>> escribió:<br>
><br>
> El 15/07/13 21:54, Maxi escribió:<br>
>><br>
>> El día 14 de julio de 2013 09:09, Antonio Évora <<a href="mailto:aevorar@gmail.com">aevorar@gmail.com</a>> escribió:<br>
>>><br>
>>> El 12/07/13 14:41, Maxi escribió:<br>
>>><br>
>>>> El día 12 de julio de 2013 09:19, Antonio Évora <<a href="mailto:aevorar@gmail.com">aevorar@gmail.com</a>><br>
>>>> escribió:<br>
>>>>><br>
>>>>> Estimados compañeros,<br>
>>>>> Estoy depurando una aplicación que recibe información de un GPS usando el<br>
>>>>> protocolo NMEA y configurado para que envie solamente tramas GGA y GSA.<br>
>>>>> La<br>
>>>>> conexion con el pc es mediante usb (usando un conversor COM-USB pues el<br>
>>>>> puerto original de GPS es COM, esta conversión es necesaria pues el pc no<br>
>>>>> tiene puerto COM) y es reconocido como un COM virtual. En mi aplicación<br>
>>>>> uso<br>
>>>>> synaser (ultima version disponible en sus repositorios) para la<br>
>>>>> comunicación<br>
>>>>> llamando al método Recvstring de la clase TBlockSerial llamada desde un<br>
>>>>> timer (probado con distintos intervalos de tiempo) y me encuentro con los<br>
>>>>> siguientes problemas:<br>
>>>>><br>
>>>>> * Problema de inicialización:<br>
>>>>>      Si arranco la aplicación no recibe ningún dato del GPS, para que<br>
>>>>> empiece<br>
>>>>> a recibir datos tengo que:<br>
>>>>>          - Cerrar la aplicación<br>
>>>>>          - Abrir hyperterminal, conectarme al GPS (este empieza a recibir<br>
>>>>> tramas) y cerrar hyperterminal<br>
>>>>>          - Abrir la aplicación y empiezo a recibir tramas<br>
>>>>>      Con esto intuyo que hyperterminal hace algún tipo de inicialización<br>
>>>>> del<br>
>>>>> dispositivo que no hace TBlockSerial<br>
>>>>><br>
>>>>> * Problema en la recepción de tramas:<br>
>>>>>      Hay tramas que llegan solapadas unas con otras, por ejemplo:<br>
>>>>><br>
>>>>> $GPGSA,M,3,11,03,16,06,18,22,08,19,01,,,,3.14,1.72,2$GPGGA,194255.90,xxxx.xxxxxxx,N,yyyyy.yyyyyyy,W,4,09,2.09,144.4792,M,49.7596,M,0.9,0000*68<br>
>>>>><br>
>>>>> * Inversión del orden de las tramas:<br>
>>>>>      Supuestamente la recepción de tramas debería ser:<br>
>>>>>          TramaGGA<br>
>>>>>          TramaGSA<br>
>>>>>                  ...<br>
>>>>>          TramaGGA<br>
>>>>>          TramaGSA<br>
>>>>>                  ...<br>
>>>>>          TramaGGA<br>
>>>>>          TramaGSA<br>
>>>>> Sin embargo durante la recepción se ven invertidas, esto no se si puede<br>
>>>>> ser<br>
>>>>> debido problema anterior.<br>
>>>>><br>
>>>>> El problema debe de estar en la implementación del TBlockSerial o en el<br>
>>>>> conversor COM-USB. Yo personalmente me inclino por el conversor (estoy<br>
>>>>> trabajando a 115200 baudios) que no da a bastos.<br>
>>>>><br>
>>>>> Un cordial saludo y gracias de antemano.<br>
>>>>><br>
>>>>><br>
>>>>> _______________________________________________<br>
>>>>> Lazarus-es mailing list<br>
>>>>> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
>>>>> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
>>>>><br>
>>>> No es el conversor, de seguro.<br>
>>>> Primero, quien enia datos? el gps? lo consultas o solo transmite?<br>
>>>> Si lo consultas si es valido el timer, pero ten en cuanta de<br>
>>>> inhabilitar el timer para no solapar llamadas y datos hasta que<br>
>>>> termine de recibir.<br>
>>>> Si el gps transmite solo a intervalos, no uses el timer, deja que<br>
>>>> synaser reciba datos cuando llegan realmente y debes controlar que se<br>
>>>> cumpla el bloque esperado sino lo descartas, aveces pasa que se<br>
>>>> pierden bits y hasta que no llega otro paquete no se completa el<br>
>>>> bloque y recibes informacion falsa.<br>
>>>> Verifica que tipo de handshake usa el gps, es el unico caso en que el<br>
>>>> adaptador pueda fallar porque no siempre implementan algunos de estos<br>
>>>> DTR,RTS,CTS,DSR.<br>
>>>><br>
>>>> Cuenta un poco mas<br>
>>>> --<br>
>>>> El que pregunta aprende, y el que contesta aprende a responder.<br>
>>>><br>
>>>> No a la obsolecencia programada:<br>
>>>><br>
>>>> <a href="http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml">http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml</a><br>
>>>><br>
>>>> Linux User #495070<br>
>>>> <a href="http://domonetic.com/blog">http://domonetic.com/blog</a><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Lazarus-es mailing list<br>
>>>> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
>>>> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
>>><br>
>>> Gracias Maxi por contestar,<br>
>>> El GPS trasmite a intervalos, 10 veces por segundo. Bueno, mejor te explico<br>
>>> mejor lo que pretendo hacer:<br>
>>> Tengo un GPS el cual debe darme la posición, la cual debo sincronizar con la<br>
>>> lectura de un termómetro (conectado también mediante COM), para asignar<br>
>>> temperatura a una posición concreta.<br>
>>> Otro problema con el que me encuentro es el de poder sincronizar estas<br>
>>> lecturas, ya que el termómetro es capaz de darme una medida por segundo y el<br>
>>> GPS 10.<br>
>>> Supongo que para hacer lo que me cuentas debo de usar el evento OnStatus (lo<br>
>>> acabo de ver). ¿Puedes instruirme con un ejemplo sencillo?<br>
>>><br>
>>><br>
>>> Un cordial saludo y gracias de antemano.<br>
>>><br>
>>> _______________________________________________<br>
>>> Lazarus-es mailing list<br>
>>> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
>>> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
>><br>
>> 10 veces por segundo me parece mucho, pero deberias llevar 2 registros<br>
>> 1 con los datos del gps y otro con los del termometro, puedes tomar el<br>
>> de menor tiempo como base o el del gps y repetir el valor de la<br>
>> lectura del termometro.<br>
>> Dependiendo que prioridad tienes.<br>
>> Yo leeria el termometro, despues habilito la lectura del gps, hago una<br>
>> sola lectura y deshabilito. anoto esos datos y espero la proxima<br>
>> lectura del termometro. a los fines practicos una lectura por segundo<br>
>> en mas que suficiente incluso para ir marcando en un mapa, a menos que<br>
>> se trate de algo muy preciso.<br>
>><br>
>> --<br>
>> El que pregunta aprende, y el que contesta aprende a responder.<br>
>><br>
>> No a la obsolecencia programada:<br>
>> <a href="http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml">http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml</a><br>
>><br>
>> Linux User #495070<br>
>> <a href="http://domonetic.com/blog">http://domonetic.com/blog</a><br>
>><br>
>> _______________________________________________<br>
>> Lazarus-es mailing list<br>
>> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
>> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
> Primeramente gracias de nuevo.<br>
> Ya he conseguido capturar y casar las diferentes lecturas. Lo que si sigo teniendo es el problema de inicialización, copio y pego de mi primer post:<br>
><br>
> * Problema de inicialización:     Si arranco la aplicación no recibe ningún dato del GPS, para que empiece a recibir datos tengo que:         - Cerrar la aplicación         - Abrir hyperterminal, conectarme al GPS (este empieza a recibir tramas) y cerrar hyperterminal         - Abrir la aplicación y empiezo a recibir tramas Con esto intuyo que hyperterminal hace algún tipo de inicialización del dispositivo que no hace TBlockSerial <br>

> Es decir sin arrancar previamente Hyperterminal no hay tramas que valga :-(<br>
><br>
> Inicializo los puertos COM con el siguiente codigo:<br>
> FCOM.Connect(FPuerto);<br>
> ConfiguraPuerto();<br>
> Inicializa();<br>
><br>
> Siendo FCOM del tipo TBlockSerial y:<br>
><br>
> procedure TMamboSensorCOMBase.ConfiguraPuerto;<br>
> var<br>
>   ParidadText: char;<br>
> begin<br>
>   if not FConnected then<br>
>   begin<br>
>     exit;<br>
>   end;<br>
><br>
>   case FParidad of<br>
>     ptEven:<br>
>     begin<br>
>       ParidadText:='E';<br>
>     end;<br>
>     ptOdd:<br>
>     begin<br>
>       ParidadText:='O';<br>
>     end;<br>
>     ptMarked:<br>
>     begin<br>
>       ParidadText:='M';<br>
>     end;<br>
>     ptSpaced:<br>
>     begin<br>
>       ParidadText:='S';<br>
>     end;<br>
>   else<br>
>     ParidadText:='N';<br>
>   end;<br>
><br>
>   FCOM.Config(FBaudios,FBitsDatos,ParidadText,FBitsParada,FControlFlujoSoftware,FControlFlujoHardware);<br>
> end; <br>
><br>
> procedure TMamboSensorCOMBase.Inicializa;<br>
> var<br>
>   n: integer;<br>
> begin<br>
>   if not FConnected then<br>
>   begin<br>
>     exit;<br>
>   end;<br>
><br>
>   for n:=0 to FScriptInicializacion.Count-1 do<br>
>   begin<br>
>     if FCOM.CanWrite(2000) then<br>
>     begin<br>
>       FCOM.SendString(FScriptInicializacion[n]);<br>
>     end;<br>
>   end;<br>
> end; <br>
><br>
> Gracias de antemano.<br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
Revisa los ejemplos de synaser, me parece que estas conectando y después configuras el puerto y es al revez.</p>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Lazarus-es mailing list</span><br><span><a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a></span><br><span><a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a></span><br></div></blockquote></body></html>