Ciao,
ho appena uppato un articolo in playgroud per rendere più semplice l'interfacciamento tra java e arduino.
L'articolo lo potete trovare quì: Arduino Playground - Java
Se avete problemi o suggerimenti questa discussione è nata apposta.
ciao a tutti, ho visto che questa è una discussione vecchia ma spero comunque che posso scrivere.
mi sti trivando proprio ora a dover gestire una comunicazione tra PC e arduino solo che sono ancora all'inizio e non riesco a farli comunicare.
come sistema operativo uso ubuntu e le librerie RXTX non le ho scaricate dal sito ufficiale ma dai repository di ubuntu, vanno bene lo stesso??
la versione che uso dell'IDE di arduino è la 1 e per programmare in Java uso eclipse versione indigo.
potete consigliarmi qualche guida semplice per iniziare a fare qualche programma per comunicare tra PCe Arduino??
grazie
le librerie del repository di Ubuntu vanno bene... come pure gli altri strumenti che hai a corredo (Eclipse...).
Che conoscenza hai di java? E di Eclipse? Hai già sviluppato qualche programmino anche su console in tale IDE?
no, le librerie dal repo non credo vadano bene, quelle di arduino sono patchate apposta per "vedere" l'arduino UNO (o meglio il nuovo 8u2, presente anche sulle nuove mega)
lesto:
no, le librerie dal repo non credo vadano bene, quelle di arduino sono patchate apposta per "vedere" l'arduino UNO (o meglio il nuovo 8u2, presente anche sulle nuove mega)
Io uso la lib RXTX della mia distro e non ho problemi a comunicare con l'Arduino UNO anche via terminale.
Credo che la questione RXTX si riferisca a vecchie versioni. E' un po' come avrdude 5.04 distribuito con l'Arduino: anche la 5.11 del mio sistema vede l'Arduino senza problemi.
acc effettivamente non ho mai provato con Arduino Uno, il "vecchio" 2009 era visto come una seriale direttamente tramite modulo kernel linux e le rxtx di ubuntu riuscivano a rilevare la relativa porta COM senza problemi.
con il 8u2 non è un modulo kernel che crea la seriale virtuale?
leo, è la libreria per accedere alle porte seriali (e non solo) via java...
come per molte cose, Sun (ora Oracle) ha definito una "specifica" (Java ComAPI) ma non ha rilasciato per tutti i S.O. una vera libreria che implementi tale specifica... ecco rxtx è una implementazione opensource della ComAPI. http://rxtx.qbang.org/wiki/index.php/FAQ
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
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)
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:
ho seguito le indicazioni del sito che mi hai riportato ho copiato il sorgente in eclipse
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
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"
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