[supporto playground]Comunicazioni Java e Arduino

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.

fatevi sentire :slight_smile:

Ottimo mi ci voleva :slight_smile:

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

Ciao

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.

ciao

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?

sì, ma su linux al posto di /dev/tty diventa /dev/acm, e le vecchie rxtx ignorano questo indicatore

lesto:
sì, ma su linux al posto di /dev/tty diventa /dev/acm, e le vecchie rxtx ignorano questo indicatore

Domanda da 'gnurante: a che serve la lib rxtx? A dialogare via Java con l'Arduino?

capito grazie del chiarimento... domani faccio una prova con le ultime rxtx nel repo di Ubuntu:

2.2pre2-8
http://packages.ubuntu.com/oneiric/librxtx-java

Cmq io uso quella del repo di Ubuntu e sia l'IDE che avrdude da terminale dialogano con l'Arduino senza problemi.

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

leo72:
Cmq io uso quella del repo di Ubuntu e sia l'IDE che avrdude da terminale dialogano con l'Arduino senza problemi.

l'ide usa la sua copia interna, credo ignori quella globale (che infatti io non ho installato)

leo72:
Domanda da 'gnurante: a che serve la lib rxtx? A dialogare via Java con l'Arduino?

dunque, è un package java (una serie di classi) che supporta: I2C, PARALLEL, RS485, SERIAL e una non meglio definita RAW

lesto:

leo72:
Cmq io uso quella del repo di Ubuntu e sia l'IDE che avrdude da terminale dialogano con l'Arduino senza problemi.

l'ide usa la sua copia interna, credo ignori quella globale (che infatti io non ho installato)

Ma se io uso avrdude da terminale o un altro software, mi serve oppure no la Rxtx? Penso di no, dovrebbe servire solo alle applicazioni Java, giusto?

no, però l'ide di arduino è java e usa la libreria per il serial monitor

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)

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:

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"

ciao

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

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