Go Down

Topic: [supporto playground]Comunicazioni Java e Arduino (Read 3176 times) previous topic - next topic

Dea1993

innanzitutto grazie per avermi risposto così velocemente, poi io non ho arduino UNO ma duemilanove, quindi su questa sheild le librerie presenti nei repository di ubuntu vanno bene o mi devo comunque scaricare quelle che trovo qui http://www.cloudhopper.com/opensource/rxtx/ ??(devo usare le librerie del 2008 perchè sono le uniche che sono per la versione 64bit di linux).
in java ho sviluppato un anno fa applicazioni sia da console che a interfaccia grafica, ovviamente anche usando gli oggetti.
se può servire la mia versione di jre e jdk sono
Code: [Select]
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.10) (6b20-1.9.10-0ubuntu1~10.04.3)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)


lucadentella

Ciao

dovrebbero andare bene, ma la prova è subito fatta... collega arduino, compila ed esegui il semplice programma che ti elenca le seriali disponibili sul PC e scopri se rxtx "vede" la nuova seriale di Arduino:
http://embeddedfreak.wordpress.com/2008/08/07/enumerating-serial-port-using-rxtx/
lucadentella.it

Dea1993

ho seguito le indicazioni del sito che mi hai riportato ho copiato il sorgente in eclipse
Code: [Select]
public static String[] listSerialPorts() {

Enumeration ports = CommPortIdentifier.getPortIdentifiers();
ArrayList portList = new ArrayList();
String portArray[] = null;
while (ports.hasMoreElements()) {
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
    if (port.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    portList.add(port.getName());
    }
}
portArray = (String[]) portList.toArray(new String[0]);
return portArray;
}

ma mi da 3 errori
Code: [Select]
public static String[] listSerialPorts()   "Syntax error on tokens, ClassHeader expected instead"
String portArray[] = null;   "Syntax error on token ";", { expected after this token"
} (parentesi di fine programma)   "Syntax error, insert "}" to complete ClassBody"

lucadentella

ciao

quello è solo il metodo per enumerare le porte seriali, naturalmente dovrai costruirci attorno un semplice programmino che te le stampa in console...
lucadentella.it

Dea1993

il problema è questo che io in java non ho mai usato queste librerie per la comunicazione con l'USB e non saprei come fare, su internet non ho trovato guide.
sennò se al posto del java uso il python con la libreria pyusb o pyserial?? il python mi sembra un linguaggio molto più semplice

lesto

sul sito RXTX ci sono un bel pò di esempi funzionanti...

comunque questo più che un problema con la documentazione della libreria, mi pare un problema di conoscenze di java :smiley-mr-green:
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lucadentella


il problema è questo che io in java non ho mai usato queste librerie per la comunicazione con l'USB e non saprei come fare, su internet non ho trovato guide.


ciao

ma qui non si tratta di saper usare o meno le librerie... quello è un semplice metodo statico che devi richiamare da una tua classe java (basta anche dal main): è una cosa semplicissima se hai già scritto codice java (addirittura senza scomodare Swing!)
lucadentella.it

Dea1993

si lesto anche  :smiley-sweat: perchè l'ho studiato a scuola ma tra la prof che non sapeva spiegarlo bene (mentre ce lo spiegava molte istruzioni che abbiamo sempre dovuto importare nei programmi non ci ha spiegato a cosa servivano realmente ma ci diceva solo di importarle) e tra me venendo dal C il java non mi è mai piaciuto com linguaggio, inoltre adesso è passato del tempo dall'ultima volta che l'ho usato quindi ora la mia preparazione in java non è un gran che, infatti anche vedendo gli esempi sulle librerie RXTX faccio molta difficoltà a capire cosa fa quel programma.
invecie gia il C o python mi sembrano molto più belli e semplici come linguaggi (praticamente leggere un programma scritto in questi linguaggi è cone leggere l'inglese  :) ), per questo preferirei visto le mie difficoltà con il java, a programmare in C o python, secondo voi cosa è meglio fare? visto che questo progetto deve essere pronto e funzionante entro aprile (o forse maggio??  :smiley-roll-sweat:) per la consegna della tesina, non vorrei che facendolo in java perdessi troppo tempo e per fare alla svelta non viene fuori un copia e incolla.

Dea1993

più che altro lucadentella il problema è che il java non mi è stato spiegato bene a scuola quindi faccio difficoltà a creare un programma da zero, infatti per il motivo che ho detto prima (che molte istruzioni da mettere nel programma non mi è mai stato detto il funzionamento) tutti i programmi che facevo erano quasi un copia e incolla dai programmi vecchi.

lucadentella

ciao

non l'ho provato ma dovrebbe andare...salvalo come ListCom.java

Code: [Select]
import java.util.ArrayList;
import java.util.Enumeration;
import gnu.io.*;

public class ListCom {

public static String[] listSerialPorts() {

Enumeration ports = CommPortIdentifier.getPortIdentifiers();
ArrayList portList = new ArrayList();
String portArray[] = null;
while (ports.hasMoreElements()) {
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
    if (port.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    portList.add(port.getName());
    }
}
portArray = (String[]) portList.toArray(new String[0]);
return portArray;
}

public static void main(String[] args) {

for(String name : listSerialPorts())
System.out.println(name);
}
}
lucadentella.it

lesto

se hai scadenze da rispettare usa i linguaggi che già conosci, credimi ci risparmi un sacco di tempo
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dea1993

grazie luca per avermi scritto questo programma, però mi da un errore quando importo la classe
Code: [Select]
import gnu.io.*;   "The import gnu cannot be resolved"
dopo ci sono altri errori ma penso siano dovuti alla mancanza di questa libreria, perchè da errore in tutte le righe in cui è presente
Code: [Select]
CommPortIdentifier

Dea1993

comunque adesso vede se riesco a far comunicare il PC con arduino usando Java, provo a continuare in java studiandolo di più senò passo a pyserial o pyusb (non so quale sia meglio)

lucadentella

ciao

ma hai configurato Eclipse per utilizzare la libreria rxtx?
http://rxtx.qbang.org/wiki/index.php/Using_RXTX_In_Eclipse

comunque sì, sicuramente prima ti servono delle basi maggiori sul linguaggio che decidi di utilizzare, sia questo Java, C# (vedi tutorial sul mio sito) o Python...
lucadentella.it

Dea1993

avevo letto su internet che una volta installate le librerie eclipse le caricava in automatico senza bisogno di caricarle manualmente

Go Up