Pages: [1] 2   Go Down
Author Topic: Processing-Java  (Read 1873 times)
0 Members and 1 Guest are viewing this topic.
Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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. smiley

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! smiley 
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

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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_Page

con un programma su PC scritto in Java:
https://github.com/4ntoine/Firmata
Logged

lucadentella.it

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

il sito ufficiale della libreria -> http://rxtx.qbang.org

per essere precisi, RxTx è una implementazione delle API JavaComm
http://www.oracle.com/technetwork/java/index-jsp-141752.html

come 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

lucadentella.it

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Mille! smiley
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

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

prego smiley-wink

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#  smiley-twist
Logged

lucadentella.it

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, se ho qualche difficoltà ti contatto anche via mex privati smiley 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

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prego smiley-wink

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#  smiley-twist

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

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non faccio riferimento alle classi di processing come faccio a comunicare con arduino scusa? smiley-slim
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

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perchè processing si appoggia su java, quindi qualsiasi cosa usa processing, c'è anche in java smiley
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

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

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

concordo, guarda gli esempi RxTx ti viene illustrato come utilizzarle da java (senza processing):
http://rxtx.qbang.org/wiki/index.php/Writing_%22Hello_World%22_to_a_USB_to_serial_converter
Logged

lucadentella.it

Padova
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

concordo, guarda gli esempi RxTx ti viene illustrato come utilizzarle da java (senza processing):
http://rxtx.qbang.org/wiki/index.php/Writing_%22Hello_World%22_to_a_USB_to_serial_converter
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 smiley ) che disegna funzioni matematiche con una penna su un foglio  smiley-evil
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

Pages: [1] 2   Go Up
Jump to: