problema serial processing

Ciao a tutti e buon anno! Sto cercando di interfacciare Arduino col pc tramite processing usando la libreria serial. Il problema è che se uso per esempio lo schetk del tutorial la compilazione non va a buon fine perchè usa la funzione this, che è supportata nella versione 1.5, l unica compatibile con il mio procio che è su architettura 64 bit. che posso fare? grazie!

non capisco bene la richiesta. la "funzione" this (che è un riferimento alla libreria attuale) è sempre esistita in processing, il tuo problema è che la libreria Serial NON è compatibile con i 64 bit.

copia i file RXTX e relativi file native dalla cartella arduino a quella processing (devi sostituire quelli di processing con quelli arduino) et voilà, la magia è fatta.

Io ho trovato un file che si chiama RXTXcomm nella cartella lib di arduino e l'ho messo dentro modes-java-libraries-serial-library eliminando quello precedente ma non funziona... devo cambiare altri file? :roll_eyes:

sì anche le native, che sono le librxtxSerial ed eventualmente librxtxSerial64, che poi sono le più importanti :slight_smile:

e dove dovrebbero essere dentro arduino? e dove le dovrei mettere dentro processing? XD

le trovi dove hai trovato RXTcomm, e pio le metti in processing/modes/java/libraries/serial/nomeSistemaOperativo

ok, sono riuscito a farla funzionare. Adesso c'è il problema che mi restituisce, giustamente, solo numeri. C'è qualcosa per scrivere a schermo le parole o le cifre che invio da arduino? So anche che esiste una libreria chiamta firmata. Praticamente mi dà le stesse funzioni di arduino in ambiente processing? e se devo aggiungere librerie come posso fare? grazie! :smiley:

firmata invia i comendi via seriale, che è lentissima, quindi di fatto "castri" la potenza di arduino e non funziona senza processing. Il mio consiglio è di non perderci tempo,

non è correstto che ti dia solo numeri se usi le print, ma solo se usi le write.. puoi postare il codice arduino e il codice processing?

Certo! ecco qua:

// Example by Tom Igoe

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
  // List all the available serial ports
  println(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
  while (myPort.available() > 0) {
    int inByte = myPort.read();
    println(inByte);
  }
}

Per il processing copiato spuduratamente dalla pagina uffuciale della libreria read() / Libraries / Processing.org
e il codice arduino

void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print('ciao');
  delay(1000);
}

semplicissimo che invia la parola "ciao" via seriale.

sì, ok, lato processing leggi i byte grezzi, devi convertili in char;

char lettera = (char)inByte;

purtroppo mi restituisce comunque solo numeri... e comunque lo fa nella parte sotto il codice, non nella finestra che crea. Ecco il codice modificato

// Example by Tom Igoe

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
  size (320, 240);
  // List all the available serial ports
  println(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
  while (myPort.available() > 0) {
    int inByte = myPort.read();
    char lettera = (char)inByte;
    println(lettera);
  }
}

:drooling_face:

attento lato arduino non è Serial.print('ciao'); ma Serial.print("ciao");

Mmmmm... Avevo già incontrato questo problema una volta mi puoi spiegare una volta per tutte perchè va scritto con le virgolette?

la virgoletta singola indica un carattere, quella doppia una stringa. Se usi gli apici singoli con una stringa non so cosa succeda, ma sicuramente nulla di buono.
occhio che le sequenze di escape tipo \n, \0 etc.. sono considerate un carattere solo!

quindi

'\n' per andare a capo va bene, e anche "\n" va bene, ma occupa più spazio nello skecth e nella ram

Capito. Solo una cosa... Cosa sono quante sono e quali sono gli escape :sweat_smile:

http://en.cppreference.com/w/cpp/language/escape

Thanks :wink: