Ciao a tutti,
eccomi con due nuovi problemi, il primo: sto trafficando con mjpg_streamer (ora disponibile anche nel repository di linino), pacchetto che mi è piaciuto subito più di motion poiché lo streaming è supportato (a quanto pare) su tutti i browser al contrario del pacchetto motion. Dopo l'installazione ho dato il mio bel comando via terminale (SSH), sono andato alla mia paginetta web e tutto funziona correttamente, bellissimo!!!
Il problema sorge quando voglio avviare mjpg streamer con le mie opzioni da uno Sketch di Arduino Yun. Ho provato sia con Process che con RunShelCommand, nel primo caso il servizio sembra non partire proprio, nel secondo caso durante la fase di setup il servizio parte correttamente...mah... tutto il codice seguente non viene eseguito fino a quando non termino (o killo) il processo in questione, appena chiuso il servizio il programma procede (ma non ho più il servizio attivo). Come faccio a mettere in esecuzione mjpg-streamer con le mie opzioni da Sketch senza che quest'ultimo resti bloccato.
Qualcuno ha qualche suggerimento da darmi?
Grazie mille in anticipo.
Non conosco la yun, ciò che ti posso dire riguarda la shell. Se si tratta della shell bash quando avvi un programma la shell non è più interrattiva finché il programma rimane avviato. Per avviare il programma e rendere la shell interattiva si usa $ comando &.
Il "&" avvia "comando" ritornando subito alla shell.
Se "comando" non termina puoi vedere il processo con ps -Af | grep "comando"
Al posto di "comando" ci metti il nome del comando (programma che hai lanciato)
es:
$ mjpg_streamer &
$ ps -Af | grep mjpg_streamer
Se il programma è in memoria viene mostrato il pid e altri dati inerenti il processo.
Per processing (java) o yun non so dirti nulla.
Ciao.
Ciao MauroTec
avevi proprio ragione, mancava la & alla fine del comando (con la shell sono una scarpa). Comunque intendevo il comando Process della libreria Bridge e non Processing (ambiente di programmazione java) giusto per chiarezza di tutti. A chi potesse interessare ecco un breve listato di esempio:
#include <Process.h>
#include <Bridge.h>
int led = 13;
void setup() {
// put your setup code here, to run once:
Bridge.begin();
pinMode(led, OUTPUT);
Process startService;
startService.runShellCommand("/mnt/sda1/pgm/startMjpgStreamer");
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
il comando runShellCommand punta al file memorizzato nella mia SD card, dentro al file c'è una sola riga di codice quella che avvia mjpg-streamer con le mie opzioni personalizzate:
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 25" -o "output_http.so -p 8080 -w /www/webcam" &
da non dimenticare la & a fine riga, altrimenti il void loop non sarà mai eseguito fino a quando non si termina il processo mjpg_streamer.
Grazie ancora per l'aiuto