<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">
<div class="moz-cite-prefix">El 03/11/12 17:17, Livio Calvo
escribió:<br>
</div>
<blockquote cite="mid:5095439F.5060505@gmail.com" type="cite">
<pre wrap="">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.</pre>
</blockquote>
<br>
<br>
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.<br>
<br>
<br>
</div>
<blockquote cite="mid:5095439F.5060505@gmail.com" type="cite">
<pre wrap="">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</pre>
</blockquote>
<br>
<br>
¿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.<br>
<br>
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.<br>
<br>
<br>
<blockquote cite="mid:5095439F.5060505@gmail.com" type="cite">
<pre wrap="">2 - Lanzar correctamente en un hilo separado mi tarea, cosa que por
ahora puedo hacer pero no funciona bien
Alguna sugerencia?
</pre>
</blockquote>
<br>
<br>
Es lo correcto. ¿Has probado con nohup?<br>
<br>
Puedes usar /etc/rc.local y poner:<br>
<br>
nohup java -jar /home/pi/AAB.jar &<br>
<br>
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:<br>
<br>
static public void cerrar_todo() {<br>
System.out.close();<br>
System.err.close();<br>
}<br>
<br>
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):<br>
<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
#!/bin/bash<br>
java -jar /home/pi/AAB.jar &<br>
echo "$!" > /home/pi/AAB.pid<br>
<br>
También puedes redirigir todo a /dev/null así:<br>
java -jar /home/pi/AAB.jar > /dev/null 2>&1 &<br>
<br>
Pero es menos elegante. Prueba varias de las opciones y nos comentas
qué tal salen.<br>
<br>
Un saludo.<br>
</body>
</html>