Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« on: January 04, 2013, 09:50:03 am » |
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!
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #1 on: January 04, 2013, 07:56:18 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #2 on: January 05, 2013, 05:34:24 am » |
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? 
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #3 on: January 05, 2013, 05:35:17 am » |
sì anche le native, che sono le librxtxSerial ed eventualmente librxtxSerial64, che poi sono le più importanti 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #4 on: January 05, 2013, 05:42:07 am » |
e dove dovrebbero essere dentro arduino? e dove le dovrei mettere dentro processing? 
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #5 on: January 05, 2013, 05:48:43 am » |
le trovi dove hai trovato RXTcomm, e pio le metti in processing/modes/java/libraries/serial/nomeSistemaOperativo
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #6 on: January 07, 2013, 02:41:45 pm » |
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! 
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #7 on: January 07, 2013, 02:49:53 pm » |
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?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #8 on: January 07, 2013, 03:09:33 pm » |
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 http://processing.org/reference/libraries/serial/Serial_read_.htmle il codice arduino void setup(){ Serial.begin(9600); } void loop(){ Serial.print('ciao'); delay(1000); } semplicissimo che invia la parola "ciao" via seriale.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #9 on: January 07, 2013, 05:33:10 pm » |
sì, ok, lato processing leggi i byte grezzi, devi convertili in char; char lettera = (char)inByte;
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #10 on: January 08, 2013, 08:32:56 am » |
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); } } 
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #11 on: January 08, 2013, 09:26:13 am » |
attento lato arduino non è Serial.print('ciao'); ma Serial.print("ciao");
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #12 on: January 08, 2013, 11:00:04 am » |
Mmmmm... Avevo già incontrato questo problema una volta mi puoi spiegare una volta per tutte perchè va scritto con le virgolette?
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8228
:(){:|:&};:
|
 |
« Reply #13 on: January 08, 2013, 11:15:20 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 4
Posts: 387
|
 |
« Reply #14 on: January 08, 2013, 11:36:45 am » |
Capito. Solo una cosa... Cosa sono quante sono e quali sono gli escape 
|
|
|
|
|
Logged
|
|
|
|
|
|