Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« on: May 16, 2012, 01:42:54 pm » |
Ciao a tutti, sono nuovo del forum! Mi chiamo Leonardo e sono uno studente al quarto anno di ITIS di informatica, sono un grande appassionato di Programmazione, di Elettronica e chiaramente di Arduino.  In questo periodo sto studiando in modo abbastanza approfondito il linguaggio di programmazione Java e avrei bisogno di alcuni chiarimenti per quanto riguarda l' "iterazione" tra Processing e Java. Siccome Processing è in parte anche basato su Java mi piacerebbe sapere se esiste qualche libreria(o qualcosa di simile) per Java che permette di interfacciare Arduino direttamente con un IDE(eclipse, netbeans). Esempio: Da un semplice potenziometro collegato ad Arduino a sua volta collegato via USB a un PC, leggerne il valore e stamparlo in una finestra di un'applicazione .java Grazie, è un onore essermi aggregato a voi!
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #1 on: May 16, 2012, 02:03:24 pm » |
Ciao Leo e benvenuto! La modalità più facile per far "parlare" Arduino con un sw su PC è utilizzare la porta seriale (Arduino Uno ad es. ha già un adattatore seriale -> usb a bordo quindi non ti serve una seriale "vera" lato PC). Con Java puoi usare le librerie Rx/Tx per parlare via seriale. Un ottimo esempio già pronto é il firmware Firmata lato Arduino http://firmata.org/wiki/Main_Pagecon un programma su PC scritto in Java: https://github.com/4ntoine/Firmata
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #2 on: May 18, 2012, 01:25:31 pm » |
Quindi se non ho capito male RxTx, è un insieme di librerie che si installano in Java e poi senza alcun hardware aggiuntivo si può avviare una comunicazione.
Classi, Metodi e docs vari dove potrei reperirli?
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #3 on: May 18, 2012, 01:31:02 pm » |
Ciao il sito ufficiale della libreria -> http://rxtx.qbang.orgper essere precisi, RxTx è una implementazione delle API JavaComm http://www.oracle.com/technetwork/java/index-jsp-141752.htmlcome per altri aspetti di Java, Sun (Oracle) ha rilasciato delle specifiche di libreria, ovvero qualcosa del tipo "una libreria per accedere alla seriale deve implementare questi metodi, questi oggetti..." lasciando poi alla comunità lo sviluppo vero e proprio di tale libreria (sebbene per alcuni S.O. vi sia una implementazione "ufficiale"). con tale libreria puoi, da un programma java, accedere alla porta seriale quindi inviare/ricevere dati... se Arduino è connesso a tale seriale ecco che hai instaurato una comunicazione. per inciso le librerie rxtx sono anche quelle usate proprio dall'IDE di Arduino per inviare gli sketch o per il serial monitor bye
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #4 on: May 18, 2012, 01:37:59 pm » |
Grazie Mille! 
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #5 on: May 18, 2012, 01:41:47 pm » |
prego  se hai qualche problema sulla programmazione java con rxtx chiedi pure, le utilizzo spesso (anche se in effetti nel sito ho messo solo tutorial per c# 
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #6 on: May 18, 2012, 01:54:14 pm » |
Ok, se ho qualche difficoltà ti contatto anche via mex privati  Grazie mille mi sei di grandissimo aiuto!!!
|
|
|
|
« Last Edit: May 18, 2012, 01:56:49 pm by LEO_o »
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #7 on: May 20, 2012, 07:06:39 am » |
prego  se hai qualche problema sulla programmazione java con rxtx chiedi pure, le utilizzo spesso (anche se in effetti nel sito ho messo solo tutorial per c#  Dopo i tuoi consigli riguardo le RxTx ho trovato questa guida in inglese per l'installazione e l'utilizzo delle librerie: http://silveiraneto.net/2009/03/01/arduino-and-java/L'ho seguita in modo minuziosa riguardo l'installazione nell'IDE etc etc.. Quando però, con Arduino connesso alla porta USB e il prg in Processing che gira, compilo le poche righe di codice del tutorial scritte in Java mi da un errore al livello di "Preferences.init();" la prima istruzione all'interno del main. il metodo init(), controllando nei metodi della classe Preferences vuole un parametro, String commandLinePrefs , che però nell'eseguibile non gli viene passato. Qualche idea per risolvere il mio problema?
|
|
|
|
« Last Edit: May 20, 2012, 07:13:18 am by LEO_o »
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
0
Online
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #8 on: May 20, 2012, 10:54:46 am » |
posta l'errore completo, comunque se stai usando eclipse tanto vale slegarsi completamente da processing e usare il java puro. comuque come parametro dovresti passargli quello che ti entra dal main (args), oppure passagli sempre una stringa vuota e sei a posto 
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #9 on: May 21, 2012, 09:10:16 am » |
Questo è il codice(in NetBeans):
package serialtalk; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import java.io.InputStream; import java.io.OutputStream; import processing.app.Preferences; public class Main { static InputStream input; static OutputStream output; public static void main(String[] args) throws Exception{ Preferences.init(); System.out.println("Using port: " + Preferences.get("serial.port")); CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier( Preferences.get("serial.port")); SerialPort port = (SerialPort)portId.open("serial talk", 4000); input = port.getInputStream(); output = port.getOutputStream(); port.setSerialPortParams(Preferences.getInteger("serial.debug_rate"), SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); while(true){ while(input.available()>0) { System.out.print((char)(input.read())); } } } }
Questo è l'errore che da in compilazione:
init(java.lang.String) has protected access in processing.app.Preferences
Cosa intendi per "slegarsi da processing"? comunque ho provato sia con la stringa vuota "" sia con il classico(args0) e (args) ma non ho concluso nulla.
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
0
Online
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #10 on: May 21, 2012, 10:11:41 am » |
un metodo protected può essere acceduto solo dalla classe stessa o da una sua sottoclasse. Il programma che stai avviando non è una sottoclasse di Preferency e quindi non può accedere al metodo. Non usare quella classe, che fa parte di processing, e che tanto non ti serve a nulla.
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #11 on: May 21, 2012, 11:22:55 am » |
Se non faccio riferimento alle classi di processing come faccio a comunicare con arduino scusa? 
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
0
Online
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #12 on: May 21, 2012, 11:56:47 am » |
perchè processing si appoggia su java, quindi qualsiasi cosa usa processing, c'è anche in java  per esempio la RXTX, ovvero la libreria che usi per comunicare con arduino, è una libreria Java, tra l'altro usata anche dall'arduino IDE (che è scritto in java)
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Padova
Offline
Newbie
Karma: 0
Posts: 24
|
 |
« Reply #14 on: May 21, 2012, 02:45:51 pm » |
Grandee!!! funziona!! Ultimo dubbio, se modificando questo programma volessi far inviare sulla COM una stringa da far leggere ad arduino tramite Serial.read() ci sarebbero degli inconvenienti? Delle referenze per i metodi RxTx tipo qualcosa simile a docs.oracle.org per le classi di java esistono? A breve... un braccio robotico(comandato dal pc ovviamente  ) che disegna funzioni matematiche con una penna su un foglio ]
|
|
|
|
|
Logged
|
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds
|
|
|
|
|