Pages: [1] 2   Go Down
Author Topic: problema serial processing  (Read 833 times)
0 Members and 1 Guest are viewing this topic.
Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?  smiley-roll-blue
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

e dove dovrebbero essere dentro arduino? e dove le dovrei mettere dentro processing? smiley-lol
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Certo! ecco qua:
Code:

// 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_.html
e il codice arduino
Code:
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print('ciao');
  delay(1000);
}
semplicissimo che invia la parola "ciao" via seriale.
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
char lettera = (char)inByte;
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

purtroppo mi restituisce comunque solo numeri... e comunque lo fa nella parte sotto il codice, non nella finestra che crea. Ecco il codice modificato
Code:
// 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);
  }
}
smiley-fat
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10433
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 520
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Capito. Solo una cosa... Cosa sono quante sono e quali sono gli escape smiley-sweat
Logged

Pages: [1] 2   Go Up
Jump to: