[Jderobot-dev] [UAV] Problema al iniciar tarea en Raspberry

Livio Calvo kenshiro.gohan en gmail.com
Dom Nov 4 17:52:28 CET 2012


Hola Oscar,

Muchas gracias por la información. Lo he arreglado añadiendo la llamada 
a mi script dentro de rc.local, seguido de un &. No ha sido suficiente, 
además he tenido que poner un sleep 10 como primera instrucción de mi 
script, parece que alguno de los procesos previos hace algún uso del 
puerto serie, y si se le da tiempo a terminar ya queda operativo.

Gracias y un saludo !

On 11/03/2012 08:27 PM, Oscar Garcia wrote:
> El 03/11/12 17:17, Livio Calvo escribió:
>> Tengo una tarea que funciona perfectamente en Raspberry si la arranco
>> manualmente despues de hacer login, o bien la invoco desde un script en
>> /etc/init.d . ... Si pongo un &
>> al final del comando "java -jar /home/pi/AAB.jar" el resto de servicios
>> siguen arrancando como era de esperar, sin embargo la aplicación tiene
>> un mal funcionamiento, es incapaz de enviar instrucciones por el puerto
>> serie o bien no lo hace correctamente, porque el Arduino no envía las
>> respuestas, sin embargo el led parpadea cuando recibe una instrucción.
>> Por lo demas funciona bien.
>
>
> Sinceramente, no entiendo el problema por el que el arduino no 
> responde a la raspberry cuando envía comandos, a no ser que otro 
> programa después del arranque del tuyo cambie la configuración de 
> comunicaciones del puerto serie y el LED parpadea por llegar "basura" 
> y no comandos reales.
>
>
>> Se me ocurren dos maneras de arreglarlo:
>> 1 - Retrasar el lanzamiento del java -jar ... 20-30 segundos hasta que
>> los servicios hayan arrancado, pero por ahora no se como hacerlo sin
>> parar el lanzamiento de servicios
>
>
> ¿Cómo lo vas a retrasar? Quizá sea más lógico ralentizar el main de 
> Java para que la configuración del puerto serie se realice un poco más 
> tarde, o bien lanzar tu script en rc.local.
>
> Por cierto, ¿qué nivel le diste a tu script de init.d dentro de los 
> rcx.d? S99 es lo normal para scripts que necesitan que todo lo demás 
> esté funcionando antes de arrancar.
>
>
>> 2 - Lanzar correctamente en un hilo separado mi tarea, cosa que por
>> ahora puedo hacer pero no funciona bien
>>
>> Alguna sugerencia?
>
>
> Es lo correcto. ¿Has probado con nohup?
>
> Puedes usar /etc/rc.local y poner:
>
> nohup java -jar /home/pi/AAB.jar &
>
> Pero de esa manera no podrás obtener el PID. Lo ideal es que cierres 
> la salida y error estándar desde dentro del java de esta manera:
>
> static public void cerrar_todo() {
>    System.out.close();
>    System.err.close();
> }
>
> Y así puedes escribir un script de arranque que puedas meter en 
> /etc/init.d/ como (recuerda que sea S99xxx el enlace simbólico en los 
> rcx.d):
>
> #!/bin/bash
> java -jar /home/pi/AAB.jar &
> echo "$!" > /home/pi/AAB.pid
>
> También puedes redirigir todo a /dev/null así:
> java -jar /home/pi/AAB.jar > /dev/null 2>&1 &
>
> Pero es menos elegante. Prueba varias de las opciones y nos comentas 
> qué tal salen.
>
> Un saludo.
>
>
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20121104/f5d9789f/attachment.htm 


More information about the Jde-developers mailing list