Librería Arduino para Java, v2.5.0 (Actualizado 28/09/14)

***A partir de la versión 2.2.0 no es necesario el uso de la librería RXTX para que la librería Arduino trabaje. Ahora solo es necesario importar la librería Arduino a los proyectos en Netbeans, sin tener que preocuparse por la RXTXcomm.

Hola a todos.

Aquí les presento mi librería Arduino en su versión 1.0.0.

Esta librería ha sido creada por mi persona, Antony García González (antony.garcia.gonzalez@gmail.com) para Panama Hitek.

La librería está disponible en este enlace.

En este post publicaré los métodos que contiene la librería y los parámetros de los mismos.

Métodos de la versión  1.1.0

Método

Descripción

ArduinoRX(string nombre del puerto, int time out, int baud rate, SerialPortEventListener evento) Este método se utiliza para iniciar la conexión de Java con Arduino SOLAMENTE PARA LA RECEPCIÓN DE DATOS. En el nombre de puerto se coloca el COM#, o sea el puerto COM donde esté conectado Arduino, el time out es el tiempo de espera (yo uso 2000), el baud rate debe ser el mismo que se usa en Arduino IDE (generalmente 9600) y el Serial PortEventListener debe ser una variable declarada antes de utilizar este método.
ArduinoTX(string nombre del puerto, int time out, int baud rate) Este método se utiliza para iniciar la conexión de Java con Arduino SOLAMENTE PARA LA TRANSMISIÓN DE DATOS.
ArduinoRXTX(string nombre del puerto, int time out, int baud rate, SerialPortEventListener evento) Este método se utiliza para iniciar la conexión de Java con Arduino PARA LA TRANSMISIÓN Y RECEPCIÓN DE DATOS.
SendData(String data) Método utilizado para enviar datos a Arduino. Los datos se deben enviar como cadena de texto (string).
ReceiveData() Devuelve un dato recibido a través del puerto serie. Este dato será numérico en formato ASCII por lo que se debe traducir de decimal a caracter.
MessageAvailable() Devuelve un valor boolean que nos indica si hay algún mensaje disponible para imprimir. Dicho mensaje DEBE ser enviado desde Arduino utilizando Serial.println();
PrintMessage() Devuelve una cadena de caracteres que contiene el mensaje que ha sido enviado desde Arduino, pero traducido a caracteres. SE DEBE UTILIZAR DENTRO DE UNA ESTRUCTURA CONDICIONAL UTILIZANDO MessageAvailable(). Cuando haya un mensaje disponible, se imprime utilizando este método.

 

Métodos de la versión 1.3.0

Método

Descripción

KillConnection()

Permite finalizar la conexión entre Arduino y la computadora sin tener que finalizar la aplicación que se esté ejecutando, como en versiones anteriores.

SerialPortsAvailable()

Devuelve un valor tipo int con la cantidad de dispositivos conectados a la computadora por medio del Puerto Serie.

NameSerialPortAt(int index)

Devuelve una cadena de caracteres con el nombre del Puerto Serie que esté en el índice que se establece como parámetro. Si se utiliza dentro de un ciclo for con el valor devuelto por SerialPortsAvailable() se pueden obtener los nombres de todos los Puertos Serie en uso. Ejemplo: (COM3, COM4, COM5, etc).

Métodos de la versión 2.5.0

ShowMessageDialogs(boolean Input) Permite activar o desactivar las ventanas emergentes que se muestra cuando ocurre un error en tiempo de ejecución
SendByte(int data) Similar a SendData, solo que en este método se envía un Byte en vez de una cadena de caracteres.

A partir de la versión 2.1.0 se agrega soporte para la lectura de múltiples mensajes enviados desde Arduino. Esto se ha hecho por la dificultad que presenta algunos usuarios con la lectura de múltiples sensores en Arduino y desean enviar estos datos a Java. Ahora se ha creado una nueva clase, llamada MultiMessage.

Si deseamos leer varios sensores, necesitamos instanciar MultiMessage en nuestra aplicación de la siguiente manera:

MultiMessage nombre_del_objeto = new MultiMessage(int numero de sensores a leer, instancia de la clase Arduino)

Si se desea, por ejemplo, leer 3 sensores, se trabajaría se la siguiente manera.

La clase MultiMessage posee los siguientes métodos.

Métodos de la clase MultiMessage

Método

Descripción

DataReceptionCompleted()

Devuelve un valor tipo boolean que indica si se ha terminado de recibir las lecturas indicadas en la instancia de la clase (si se declara que habrá 3 lecturas, este método sólo devolverá true cuando se haya leído los 3 valores)

getMessage(int index)

Devuelve un dato tipo String con la lectura del sensor indicado en el index

flushBuffer

Elimina la información almacenada en el buffer de datos. Se debe usar una vez se haya terminado de leer los sensores con el getMessage(). Al utilizar este método será posible hacer una nueva lectura.

Se debe recordar que para utilizar esta librería se debe importar la librería a los archivos del proyecto. También se necesita la librería RXTX.

  • Si se va a usar la conexión RX o la RXTX, hay que declarar un SerialPortEventListener y se debe agregar los métodos de esta clase (Java lo hará automáticamente).
  • Si se utiliza ReceiveData() se recibirán los datos directamente desde Arduino, en formato ASCII. 
  • Si se usa PrintMessage() se recibirán los mensajes desde Arduino traducidos a caracteres y ordenados por líneas. SE DEBE USAR PRINTLN EN ARDUINO y se recomienda que este método sólo se use cuando MessageAvailable() devuelva un valor true.

Acá les dejo un video donde se muestra un ejemplo del funcionamiento de la librería.

Si se les presenta algún error con el funcionamiento de esta librería pueden consultar el siguiente post:

Librería Arduino para Java: Troubleshoot

Una guía de instalación e implementación:

Si tienen algún comentario no duden en hacérmelo llegar.

Espero sus comentarios. Saludos.

Comments

comments

Antony García González

Nace el 30 de julio del año 1992 en Ciudad de Chitré, provincia de Herrera, Panamá. Crece y recibe su educación primaria y pre media en Guararé. Hacia el año 2008 inicia sus estudios de Bachillerato en Ciencias con Énfasis en Informática en el Instituto Coronel Segundo De Villarreal en la Villa de Los Santos. Se gradúa en el año 2010 e inicia sus estudios de Licenciatura en Ingeniería Electromecánica en la Universidad Tecnológica de Panamá (UTP), sede Azuero. En el 2013 inicia el proyecto Panama Hitek. Actualmente es el director del equipo de autores, cursa el séptimo semestre de su carrera y trabajar para la UTP como asistente de investigación, para la Unidad de Eficiencia Energética

  • Santi

    Te queria primero felicitar por tu pagina. Esta muy bien
    Estoy utilizando tu libreria y me da un error.
    Exception in thread “AWT-EventQueue-0″ java.lang.UnsupportedClassVersionError: Arduino/Arduino : Unsupported major.minor version 51.0
    Porque es?

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Hola amigo. Te aseguraste de importar la librería RXTX?

  • Santi

    Si la he importado. ¿Como importo tu libreria?

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Vas a Libraries (en Netbeans) le das clic derecho, Add Jar/Folder e importas la librería que la puedes descargar aquí:
      https://docs.google.com/file/d/0B0hsUkhqWH97b0RxWjB5UkZ2dGs/edit?usp=sharing

      Luego en el código escribes import Arduino.Arduino.

      En el video se puede apreciar esto paso a paso.

      • Santi

        Nada, lo hago asi. Y me sigue dando el mismo fallo.
        Puede ser porque tengo windows XP?

        • http://panamahitek.wordpress.com antonygarciagonzalez

          Puede que tenga algo que ver con el sistema operativo o puede que sea la version de RXTX

      • Santi

        Donde me puedo bajar RxTX comm? A lo mejor tengo una version antigua

  • Santi

    Nada. Lo he vuelto a instalar todo otra vez y me sigue dando el mismo error. Cuando le doy a limpiar y regenerar de da el siguiente error: warning: ArduinoArduino.class(Arduino:Arduino.class): major version 51 is newer than 50, the highest major version supported by this compiler.
    It is recommended that the compiler be upgraded.
    1 warning

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Que version de netbeans estas usando? Y que version de Java?

      • http://panamahitek.wordpress.com antonygarciagonzalez

        Todo parece indicar que tiene que ver directamente con la version de Netbeans o de Java, quizás este asociado con el windows XP. Yo uso Netbeans 7.3 y la ultima versión que salió de Java

    • Beymar Ricardo Linares Zapata

      te cuento q si no resolviste el problema era solo la instalacion de java busca las ultimas versiones y reinstala el netbeans mejor si es la ultima version y listo.

  • http://lectorbraille.wordpress.com lectorbraille

    Hola, necesito ayuda D: !
    he logrado hacer una interfaz para hacer funcionar el programa con arduino (puedes ver mi proyecto en mi blog).
    Pero me falta un unico detalle que pense que iba a realizarlo rapido… compilar el proyecto en .jar
    la idea es que sea ejecutable, pero al momento de compilar y abrir el proyecto, la interfaz se abre y tira un error diciendo que no detecta el arduino. Lo mas probable es que sea problema con las librerias de arduino.
    puedo ejecutar el proyecto desde netbeans pero no el .jar
    espero que me orientes
    saludos
    Rodrigo

    • http://lectorbraille.wordpress.com lectorbraille

      java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
      loading gnu.io.RXTXCommDriver
      Exception in thread “main” java.lang.UnsatisfiedLinkError: no rxtxSerial in java
      .library.path
      at java.lang.ClassLoader.loadLibrary(Unknown Source)
      at java.lang.Runtime.loadLibrary0(Unknown Source)
      at java.lang.System.loadLibrary(Unknown Source)
      at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
      at lectorBraille01.main(lectorBraille01.java:832)
      Exception in thread “Thread-2″ java.lang.NullPointerException

      • http://panamahitek.wordpress.com antonygarciagonzalez

        Lo que está pasando es que necesitas importar la librería RXTX a tu proyecto, la cual es necesario instalar.

        Aquí está el post que explica como se hace eso:
        http://panamahitek.com/2013/01/31/requisitos-para-utilizar-arduino-con-java/

        Sigue el post paso a paso y te debería funcionar perfectamente.

        • http://lectorbraille.wordpress.com lectorbraille

          no aun nada :(, es necesario modificar los archivos build.xml y build-impl.xml??

          • http://panamahitek.wordpress.com antonygarciagonzalez

            Eso déjalo así mismo. Copiaste los *.dll en las rutas de la instalación Java como dice el tutorial?

            ” El archivo RXTXcomm.jar lo copiamos en la carpeta lib/ext que está dentro de la carpeta jre.
            Los archivos rxtxSerial.dll y rxtxParallel.dll lo copiamos en la carpeta bin que está dentro de jre. “

          • http://lectorbraille.wordpress.com lectorbraille

            si segui las indicaciones y estoy borrando un codigo que habia puesto en el buld. Lo que si, al correr el proyecto me aparece esto nuevo:
            puerto usado: /dev/ttyUSB1
            tarjeta utilizada: atmega328

          • http://panamahitek.wordpress.com antonygarciagonzalez

            Te aseguraste que el puerto COM sea el correcto?

            Recuerda que debes escribirlo “COM” y el número. A veces en las comillas hay errores.

          • http://lectorbraille.wordpress.com lectorbraille

            donde puedo revisar eso?

          • http://panamahitek.wordpress.com antonygarciagonzalez

            En Arduino IDE (el programita donde metes el código a Arduino) te dice el puerto COM en el que está conectada la placa.

            Debo recordarte que esta librería no va a funcionar si no tienes un Arduino conectado a la PC

          • http://lectorbraille.wordpress.com lectorbraille

            no amigo ):
            a mi me corre desde el programa, pero no puedo compilar para que sea ejecutable.
            El problema es que hay cosas distintas en tu tutorial, voy a mirar bien lo que hiciste para tratar de que quede similar el codigo y te aviso
            gracias

          • http://panamahitek.wordpress.com antonygarciagonzalez

            Esta bien. SI te sigue dando errores me haces llegar el código de error para ver que está pasando

  • http://lectorbraille.wordpress.com lectorbraille

    java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
    loading gnu.io.RXTXCommDriver
    Exception in thread “main” java.lang.UnsatisfiedLinkError: no rxtxSerial in java
    .library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
    at lectorBraille01.main(lectorBraille01.java:832)
    Exception in thread “Thread-2″ java.lang.NullPointerException

    aun me da ese error Dx
    exporte las librerias como me dijiste, no se si has intentado ejecutar el .jar en tus proyectos

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Amigo es es que no has copiado los archivos en el path de Java.

      Tienes que ir a donde Java esté instalado. En Archivos de programas verás una carpeta llamada Java. Dentro de esa carpeta habrá 2 sub carpetas. Habrá una llamada jre7 (si tienes la última versión de Java) y dentro de esa habrá una llamada lib.

      Tienes que copiar los archivos rxtxSerial.dll y rxtxParallel.dll que puse a disposición de todos en este post: http://panamahitek.com/2013/01/31/requisitos-para-utilizar-arduino-con-java/

      Fíjate que el error te lo está diciendo: no rxtxSerial in java
      .library.path

      Revisa bien y copia los archivos que te dije en esa carpeta. Si eres 64 bits debes hacerlo tanto en la carpeta 32 bits como la 64.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Aquí preparé un post para ayudarte con los problemas que estás teniendo:
      http://panamahitek.com/2013/04/21/libreria-arduino-para-java-troubleshoot/

      • http://lectorbraille.wordpress.com lectorbraille

        aun nada compañero ):
        sabes que, me voy a dar el tiempo de seguir tu tutorial al pie de la letra. por que he copiado codigos en otros blog y puede que ese sea el problema.
        Espero que no empeore las cosas.
        saludos y muchas gracias (perdon la demora)

        • http://panamahitek.wordpress.com antonygarciagonzalez

          Te recomiendo seguir todo paso a paso y es probable que te funcione. A los demás les sirve

          • http://lectorbraille.wordpress.com lectorbraille

            siguiento el tutorial me di cuenta que sigue el error no es solo mi proyecto. cuando ejecuto el programa me aparece esto distinto al video:
            “Arduino Library version 1.0.0
            ===============================
            Library created by Antony Garcia Gonzalez
            Student of Panama’s Tecnological University and the creator of panamahitek.com
            You can find all the information about this library at http://panamahitek.com

  • http://panamahitek.wordpress.com antonygarciagonzalez

    Me podrías enviar una foto de la ventana de error a mi mail? antony.garcia.gonzalez@gmail.com

  • William S.

    Hola Antony, otra ves molestando, con referencia al video como puedo crear un tercer botón que me envié un mensaje a la consola de Java (el mensaje esta guardado en Arduino).

    Saludos.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Solo hay que agregarlo a la interfaz en Java y programar que envíe un caracter por el puerto Serie. En Arduino se indica que al recibir ese caracter haga algo

    • William S.

      Gracias Antony, ya lo solucione.

      Otra duda, sera posible que este aplicativo lo pueda convertir o enlazar a una pagina web?

      Saludos.

      • http://panamahitek.wordpress.com antonygarciagonzalez

        Sí, a través de una base de datos MYSQL. Pronto haré un tutorial de eso

  • William S.

    Holas!!! Antony buen día, Como puedo hacer para convertir Window.java en un Método?

    • http://panamahitek.wordpress.com antonygarciagonzalez

      A que te refieres con convertirlo en un método?

  • Alberto

    hola! muy buen post, pero tengo un problemita, tengo conectado mi arduino en el COM4, y el programa me marca el error de que en el COM4 no hay conectado ningún arduino, (ya revise y y si esta conectado en el COM4 y si lo estoy escribiendo con comillas). Pero si le pongo COM3 si funciona el programa, pero no me imprime nada de lo que mando desde el arduino(ya cheque el monitor serial del arduino y si imprime todo) que podria hacer??

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Una pregunta, cuando envías datos desde Java a Arduino se enciende el LED de RX en la placa?

  • Alberto

    Te agradeceria mucho que me ayudaras!!

  • Daniel S

    muchas gracias por este aporte
    la verdad soy nuevo en este tema pero tengo dos inquietudes

    1)me gustaría saber si hay algún simulador que haga lo que se muestra en el vídeo también realizando la conexión de java sin necesidad de tener la placa

    • http://panamahitek.wordpress.com antonygarciagonzalez

      En realidad no tengo idea de si existe o no. Sé que con el Isis Proteus se puede simular Arduino pero tendría que investigar más a fondo para poder determinar si existe dicho simulador o no

  • Steve

    Yo también tuve el mismo problema que Exception in thread “AWT-EventQueue-0″ java.lang.UnsupportedClassVersionError: Arduino/Arduino : Unsupported major.minor version 51.0. Lo solucione actualizando mi jdk a la última versión y leí esto
    http://gl-epn-programacion-ii.blogspot.com/2012/08/cambiar-version-de-jdk-en-netbeans.html
    No sé si eso resuelva el problema porque moví otras cosas más pero a mi me soluciono

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Gracias por compartir

  • http://ninguno liang

    gracias por compartir esto Antonio, tu libreria incluso facilita el funcionamiento la comunicacion netbeands-XBEE a arduino.
    te deja mandar datos y recibir datos inalambricamente desde netbeans a arduino reconociendote al xbee como un arduino.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Gracias por los buenos comentarios

  • http://ninguno liang

    En cuando tenga una chansita subo tutorial de comunicacion de-xbee arduino usando tu libreria Antony. Pero antes te lo voy a hacer llegar primero. Saludos desde Mexico..

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Agradecería mucho si puedes contribuir a este sitio con este tipo de aportes

  • http://ninguno liang

    tienes algun correo donde enviartelo?

  • http://www.facebook.com/salvador.espectro Salvador Espectro

    Eres una eminencia!! Mis felicitaciones!! y muchas gracias, lo logre :D
    Una pregunta, ¿también sirve de casualidad para controlar el puerto paralelo? (esto último solo para mini proyectos).
    No hay mejor lugar para aprender Arduino y Java :D

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Es probable que sí. De hecho existe la librería RXTX para el puerto paralelo en Java, sin embargo no tengo experiencia en el tema.Sé que se puede pero no he experimentado con esto

      • http://www.facebook.com/salvador.espectro Salvador Espectro

        Hola, una pregunta ¿ como funcionaria el “SendData(String data)” dentro de un ciclo “for” y para que esa sentencia varié su contenido?

        • http://panamahitek.wordpress.com antonygarciagonzalez

          Si usas un for es para enviar una serie consecutiva de datos. En el argumento de la función colocarías algo cuyo valor varíe en función de la variable de incremento en el for

  • Elena Castillo

    Muchas gracias por compartir tus conocimientos, me han servido mucho, mucho!. Podrías decirme como le hago para que los datos que recibo de arduino los visualice en java en en un icono, simulando el encendido y apagado de un led, hasta el momento solo he probado como mostrarlos con un JOptionPane….Gracias de antemano.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Podrías intentar insertar una imagen en un jPanel y que según se reciban los datos, se cambie la imagen en el panel

  • selene

    Hola primero que nada gracias por compartir tus conocimientos
    me podrias ayudar porfavor
    estoy trabajando con arduino y java, con la obtencion de valores de unos sensores biometricos
    solo que el problema es que no puedo separarlos para mostrarlos en diferentes campos en un solo campo me aparecen todos que puedo hacer?
    de antemano muchas gracias :)

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Me podrías decir como estas intentando hacer esto?

  • Alf

    Hola Gracias Por Compartirnos tus Conocimientos :)
    Tengo una duda,Copie Los archivos de la RXTX a los directorios de instalacion de java todo exacto como tu dijiste, no me equivoque en nada tengo 64 bits y windows 7 y hize mi codigo en netbeans 7.3 importe jar etc y me marcaba este error

    java.lang.UnsatisfiedLinkError: C:Program Files (x86)MATLABR2007bbinwin32rxtxSerial.dll: Can’t load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
    Exception in thread “AWT-EventQueue-0″ java.lang.UnsatisfiedLinkError: C:Program Files (x86)MATLABR2007bbinwin32rxtxSerial.dll: Can’t load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
    at Arduino.Arduino.ArduinoRXTX(Arduino.java:131)
    at prueba.Serial.(Serial.java:31)
    at prueba.Serial$2.run(Serial.java:90)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

    Entonces viendolo es facil deducir que lee la rxtx del directorio de matlab
    entonces borre los archivos de la rxtx del directorio de java y copie el de la rxtx (solo el rxtx serial) pero el de 64 bits a la carpeta pero de matlab
    y ya funciono a que se debe eso????? alguna configuracion o como se arregla

    gracias :)

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Nunca me he enfrentado a este tipo de problemas donde Matlab interfiera con Arduino

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Pero igual es muy interesante y te agradezco por compartir con todos nosotros

  • Beymar Ricardo Linares Zapata

    una pregunta q vercion de sofware arduino estas utilizando en el video tutorial de la libreria arduino agradezco tu resp por adelantado y saludos de bolivia

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Estaba usando Arduino IDE 1.0.1

      • Beymar Ricardo Linares Zapata

        mil graciasss lo tomare encuenta

  • Antonio

    hola gracias por tu libreria.
    estoy haciendo un proyecto en java el cual manda unas coordenadas (por ejemplo: 10,34) a arduino con send data en fonrma de String, pero lo que quiero es que arduino me regrese las mismas coordenadas a java e impimirlas. Cómo le podria hacer?.

    Gracias

    • http://panamahitek.wordpress.com antonygarciagonzalez

      En Arduino colocas una sentencia que reciba el mensaje (Serial.read()) y luego lo reenvías a Java con Serial.println. Luego en Java usas MessageAvailable y ReceiveData

  • Alan

    Hola! gracias por tu librería.
    Ya realizado pruebas y todo muy bien, pero me gustaría ver el código fuente solo que no me deja descargarlo.
    Me lo podrías mandar a mi correo porfavor (ajea89@gmail.com) y si me pasas el tuyo para enviarte mi proyecto en cuanto lo acabe para compartirlo con ustedes.
    Se te agradece desde México.

  • Antonio

    hola gracias por la ayuda.
    pero quería ver si me podrias mandar el codigo fuente de la librería ya que del link no lo puedo descargar.
    mi correo es roboticarv1@hotmail.com te lo agradecería mucho.

  • Diego

    Hola Antony, muchas gracias por el aporte. Podras enviarme el .rar de los sources a mi correo(peinador.diego@gmail.com)? No deja descargarlo desde el link del drive.

    Muchisimas gracias!

    Saludos desde Argentina!!

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Me podrías decir por qué no te deja descargar? Algún tipo de mensaje?

      • Alan

        No deja descargarlo, no hay opción de descarga. Supongo que tienes que dar permiso para descargarlo o algo así.

        • http://panamahitek.wordpress.com antonygarciagonzalez

          Que raro, lo tengo como público en la web para que cualquiera pueda ver y descargar

  • Antonio

    hola, ya eh intentado varias veces descargar el codigo fuente pero no me sale la opcion.

    • Edgardo

      No es posible descargar el código fuente de la librería Arduino. Sería muy útil para la comunidad contar con esta posibilidad. De todas maneras muchas gracias por el trabajo y por compartirlo. Saludos.

  • Toño

    Hola gracias por el aporte. Estoy probando el metodo PrintMessage() dentro de la condición MessageAvailable(), pero lo que quiero hacer es testear el String que envia arduino a java con una variable String.

    ejemplo if(Arduino.PrintMessage().equals(“next”){
    una acción
    }

    pero la condicion nunca es true, te agradeceria mucho si me ayudaras.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Guarda el contenido del mensaje dentro de una variable. Por ejemplo String Mensaje;

      Mensaje=Arduino.PrintMessage();

      Luego imprimes esa variable para ver los valores que estas recibiendo de Arduino. En base a eso modificas lo que necesites modificar

  • Toño

    Ya funciona muchas gracias

    • http://panamahitek.wordpress.com antonygarciagonzalez

      A la orden

  • keller

    quisiera saber si puedo hacer una especia de simulador con este codigo, en la u me pididieron hacer algo que cuando uno esta viendo una pelicula el sonido sea izquierdo o derecho depende del video al igual que hacer una especie de vibrador como los de los controles de play station que vibran cuando uno dispara o cuando se hace algo.

    podrian ayudarme porfa?

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Eso requeriría implementar unas partes electrónicas y la reproducción de video en Java, lo cual soy incapaz de hacer por ahora

  • http://www.lowendguru.com Diego Bruno

    El link que nos dejas para el codigo fuente no permite la descarga. Saludos!.

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Estoy trabajando en eso

  • https://www.facebook.com/tobal.10.2010 Tobal Ramirez Cabrera

    Me sale el mismo error Exception in thread “AWT-EventQueue-0″ java.lang.UnsupportedClassVersionError: Arduino/Arduino : Unsupported major.minor version 51.0

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Creo que es la versión de Netbeans o de Java que está desactualizada

  • Julio Andres Barrera

    No se puede bajar el código fuente

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Intenta descargar cada archivo de manera individual

  • Sebastián Landínez

    Intento hacer un programa con múltiples interfaces. Tengo el método ArduinoRxTx en la constructora de una clase, pero cuando intento llegar desde otra interfaz a los métodos de esta clase, debo crear un objeto y al crearlo se vuelve a correr la constructora y parece que no puede correrse un programa corriendo dos veces el método ArduinoRxTx. Intenté creando una constructora por defecto y una parametrizada, la primera a usarse sólo en la inicialización, y la segunda para demás casos, pero cuando intento enviar algo, me dice que no ha sido creada una conexión. Es posible finalizar una sesión creada con el método ArduinoRxTx?
    Gracias por la librería

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Creo que podrías trabajar con métodos public static para usar funciones de una clase en otra sin que tengas que iniciar la conexión dos veces

  • https://www.facebook.com/maruchan.ap Maruchan Ap

    Hola mi Amigo esta bien bueno tu blog, sobre todo por la forma de explicar
    así como utilizar arduino y java. Por cierto no puedo descargar tu código
    fuente, como otros compañeros que lo han mencionado. gracias

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Intenta descargar cada archivo de forma individual. Creo que así funciona

  • Cesar Villamil

    Hola
    Primero que todo gracias por la librería.
    Tengo una pequeña duda, como puedo cerrar el puerto serial, osea la conexión?,
    gracias

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Hasta ahora no tengo un método para cerrar la conexión. No había pensado en eso. Se lo agregaré para la próxima versión

  • jovani

    amigo funciona a la perfección gracias por el aporte te envió un cordial saludos

    • http://panamahitek.wordpress.com antonygarciagonzalez

      Gracias

  • cristhian rojas

    Hola buenas he seguido tus tutoriales y son exelentes mucho detalle pero tengo una pregunta o duda .Necesito conectar un jostick al arduino y de hay a java , entonces como aser eso dado que el jostick tiene dos entradas analogas y una digital por lo cual necesito mandar 3 datos distintos a java puedo usar la libreria sofware serial y obtener 3 datos de salida serial pero como puedo tomar los 3 datos. por favor si me pueden ayudar.

  • Edwin Andres

    Hola antony

    Primero agradecerte por compartir esto de arduino y java, llevo un buen rato buscando infromación al respecto y tu blog es muy claro.

    Te escribo porque tengo un problema que no he podido solucionar y ya llevo varias horas estancado por el mismo problema, he hecho exactamente lo que dices en tu video tutorial, y al ejecutar el programa me genera este error:

    java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.7.0_25\jre\bin\rxtxSerial.dll: Can’t load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
    Exception in thread “AWT-EventQueue-0″ java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.7.0_25\jre\bin\rxtxSerial.dll: Can’t load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1087)
    at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:123)
    at Arduino.Arduino.ArduinoRXTX(Arduino.java:131)
    at Window.(Window.java:23)
    at Window$2.run(Window.java:84)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

    Es claro que el problema sería de la plataforma, es como si hubiera descargado las librerias para 32 bits y ejecutarlas en mi maquina que es de 64 bits, pero como te digo he hecho todo al pie de la letra, todo lo tengo configurado para 64 bits pero no he podido solucionar mi problema. Sabes como puedo hacerlo?

    Gracias

    Edwin

    • antony.garcia.gonzalez@gmail.com

      Te recomiendo que veas este video acerca de la Librería Arduino:

    • Edwin Andres

      Bueno les cuento lo que acabe de hacer por si alguien tiene el mismo problema le den solución

      Ya saben el error que tenía (Post anterior), Para ver si era problema de la plataforma instale java y netbeans en un pc de 32 bits y funcionó de una con la configuración que menciona en este block . Entonces en mi pc de 64 bits desinstale todo lo de java de 64 bits y netbeans e instale la version del jdk para 32 bits luego instale netbeans, utilice el archivo de instalacion de la libreria que tienes en tu blog pero no me funciono, los cambie por el de 64 bits y tampoco, en la pagina de la libreria (“http://rxtx.qbang.org/wiki/index.php/Download”) dice lo siguiente para las maquinas de 64 bits

      Should you wish to use RxTx on a x64 based computer, note that the downloads on this page will not work, for x64 compiled binaries go to: Mfizz RxTx page. (La página es http://mfizz.com/oss/rxtx-for-java)

      De aca descargué la versión de 64 bits y la probé de nuevo pero no me funcionó y ya por descartar me dio por bajar la version “Windows-x86″ copie los archivos como usted lo menciona y listo me funcionó. OJO recordar que tengo instalado “jdk-7u45-windows-i586″ y “netbeans-7.4beta-windows”

  • Carlos Andres

    Esta muy bueno el tutorial……….tengo una duda me sales este error…. tengo windows 8…netbean 7.4……
    ava.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
    loading gnu.io.RXTXCommDriver
    Exception in thread “main” java.lang.UnsatisfiedLinkError: no rxtxSerial in java
    .library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
    at lectorBraille01.main(lectorBraille01.java:832)
    Exception in thread “Thread-2″ java.lang.NullPointerException

    aunque yo no tengo la placa de arduino….sera ese el motivo….tendra que correr con la placa conectada????

    gracias

    • antony.garcia.gonzalez@gmail.com

      La librería ha sido diseñada para que no permita que el programa se ejecute si Arduino no está conectado. Esto si colocas el método ArduinoRXTX en la función principal del programa. Adicional mente te está faltando la librería RXTX. Te recommiendo que visites este post para que veas como debería funcionar:

      http://panamahitek.com/2013/04/21/libreria-arduino-para-java-troubleshoot/

  • Francisco

    Hola! Lo primero de todo agradecer tu información y material que pones a disposición de todos, son de gran ayuda para gente como yo que aun se está iniciando en este mundo.
    Estoy realizando un proyecto para la universidad con el que intento comunicar Java con Arduino. He instalado tu librería y la librería RXTX. Mi problema se encuentra en que el programa de Java no manda ningun dato a Arduino, cuando realizo arduino.sendData(String s). He probado unicamente con la libreria RXTX y con una variable OutputStream con la que le paso los datos a traves del metodo write(). He comprobado que el COM sea el correcto, y que los bauds sean los mismos. Me estoy volviendo loco, porque no entiendo en que falla.
    Lo más interesante es que si envío información dede Arduino a Java , esta si que se imprime en la consola del programa en Java, lo que me da constancia de que el programa y arduino están en contacto. El problema surge en enviar los datos desde Java a Arduino.
    Me vendría muy bien un poco de ayuda de aquel que sepa como solucionarlo.
    Un saludo.

    • antony.garcia.gonzalez@gmail.com

      Inició la conexión ArduinoRXTX?

      Le recomiendo que revise el siguiente video:

  • Jhonatan

    amigo una pregunta:
    yo deseo asignarle a una variable los valores que recibo desde arduino, con el fin de crear una condición para que me genere una alarma visual tanto en java como en arduino pero que a la vez continúe graficando en tiempo real, con que tipo de variable podría hacerlo y con que instrucción de la librería.

  • oscar

    hola amigo.
    tengo una pregunta,
    mi Sistema Operativo es LINUX MINT, así que quiero instalar RXTX en el, sabes como lo puedo
    hacer, ya que el tuto que tu realizaste lo hiciste en windows, y yo no uso windows, ademas, los archivos son diferentes en LINUX.

    ha, tus practicas son lo máximo, muy bien!!!!!!

    • antony.garcia.gonzalez@gmail.com

      No tengo experiencia trabajando en Linux pero si no me equivoco, la librería RXTX existe en Linux. Quizás importándola e implementándola con mi librería se podría lograr resultados satisfactorios

  • Martin

    Hoal gracias de antemano, por la libreria, estuve provando la libreria Arduino 1.3, como queria cargar los puertos com en combobox siempre me regresaba todos los puertos com con el mismo nombre era el del ultimo puerto leido, le cambie unas cuantas cosas te dejo el link del googledrive para que cheques los cambios que le hice a tu libreria y como la implemente en un combobox
    aqui esta el link de los cambios que hice:https://drive.google.com/file/d/0B4RQWx-fMFmwaXRkUDVaeHotdVU/edit?usp=sharing
    y este es el link del código de implementacion https://docs.google.com/document/d/1BF4F7fRQsiA-cN-maPYHmj7CLYlWB63wk5RtgqIMs6s/edit?usp=sharing

  • Javier Supelano

    oye pero la libreria no sirve para ubuntu has un tutorial para trabajar en ubuntu por que en windows 8 los puertos estan protegidos por uefi y esa maldita proteccion no me deja establecer la conexion con java y arduino