Go Down

Topic: Progetto Pulsante quick-run (Read 654 times) previous topic - next topic

Shaze

Salve a tutti  ;)
sono nuovo e un po' inesperto ma spero possiate aiutarmi!
Il mio progetto è un semplice pulsante che apra (ed eventualmente chiuda) una determinata applicazione sul mio PC. Quello che vorrei sapere è se esiste un procedimento o un metodo di Java (uso Processing) che mi permetta di far partire un programma o aprire un file.
Ho cercato in giro ma non sono riuscito a trovare una soluzione  :smiley-sweat:

leo72

Devi creare un programma sul PC che legga la porta seriale a cui è connesso l'Arduino. Quando premi il pulsante, spedisci sulla seriale il comando, che verrà letto dal tuo programma e che lancerà l'eseguibile.

Ma se cerchi trovi, perché se ne è parlato spesso di questa problematica.

Shaze

il mio problema è proprio la parte di codice che dovrebbe lanciare l'eseguibile, cioè riesco senza problemi a far comunicare l'arduino via seriale ma non so come scrivere un programma che apra un file o un applicazione

leo72

Non hai mai usato un linguaggio di programmazione lato PC?
Visual Basic, Python, Ruby, NET, e chi più ne ha ne metta?
Questi programmi permettono tutti l'esecuzione di programmi tramite una shell (che altro non è che una istanza di terminale). Leggi la seriale e avvii il programma. Di più non so dirti perché la reale implementazione dipende dal sistema su cui lavori e dal linguaggio che usi.

Maurotec

#4
Jun 07, 2014, 01:49 am Last Edit: Jun 07, 2014, 01:51 am by MauroTec Reason: 1
Qua per me l'esperto è @lesto che con java ci lavora.
Cerca in processing (o java) la classe Process (o simile), dovrebbe permetterti di lanciare applicazioni (processi in unix) e di monitorane lo stato, come pure di terminare l'applicazione.

Altra idea, l'ide di arduino lancia delle applicazioni, quali il compilatore avr-gcc, avr-g++ ecc se ci capisci di java, visto che il sorgente dell'ide è aperto puoi studiarti il codice per capire come fanno.

Ciao.

Shaze

Ho trovato!

Riporto qui sotto un esempio scritto con Processing, dovesse interessare a qualcuno.

Code: [Select]
import processing.serial.*;

Serial arduino;
int state = 0;

void setup(){
  arduino = new Serial(this, Serial.list()[1], 9600);
}

void draw(){
  state = arduino.read();
  if (state > 0){
    try{
      Process apertura = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
      println("Firefox should now open.");
         exit();
       }
     catch (Exception ex)
       {ex.printStackTrace();}
  }
}


Nel mio caso ho voluto far aprire Firefox da un semplice pulsante sull'arduino che inviava il numero "1".

Maurotec

Code: [Select]

if (state > 0) {


Non dovrebbe diventare:
Code: [Select]

if (state == "1") {


Perché nel modo precedente basta inviare in seriale qualunque carattere che ha un ascii superiore a 0 (zero).

Code: [Select]
arduino.read();
Il metodo read dovrebbe restituire un carattere, boo io di processing o java non ci capisco nulla.

Ciao.

Go Up