Librería PanamaHitek_Arduino, v3.0.0 (Actualizado 24/12/17)

162
35058

***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 librería PanamaHitek_Arduino trabaje. Ahora solo es necesario importar la librería PanamaHitek_Arduino a los proyectos en Netbeans, sin tener que preocuparse por la RXTXcomm. Luego de la versión 2.6.0, esta librería ha sido nombrada PanamaHitek_Arduino.

Desde la versión 2.7.0 no es necesaria la instalación de los archivos dll, ya que la librería crea automáticamente la ruta C:/JavaRXTX (sólo en Windows), donde almacena estos archivos y los pone a disposición de nuestra aplicación.

En la versión 2.8.0 se ha reemplazado la librería RXTX en favor de Java Simple Serial Connector y se ha agregado compatibilidad para sistemas operativos Linux, Mac y Solaris, además de Windows.

____________________________________________________________

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

La librería está disponible en nuestro repositorio en GitHub y en SourceForge. También pueden agregar nuestra librería a sus proyectos Maven agregando el repositorio de Jitpack:

La librería PanamaHitek_Arduino debe ser agregada como una dependencia:

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() isMessageAvailable() 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()

getPortsAvailable()

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.

Métodos de la versión 2.6.0

getSerialPorts() Devuelve una lista con los puertos disponibles. Reemplazo de NameSerialPortAt();
setParity(int input_Parity) Se establece la paridad (nula por defecto)
setStopBits(int Bytes) Se establecen los StopBits (1 por defecto)
setByteSize(int Bits) Se establece la cantidad de Bytes que se manejará (8 por defecto)
setTimeOut(int time) Se establece el TimeOut (2000 milisegundos por defecto)

Métodos de la versión 2.8.0

flushSerialPorts() Se limpia los buffer de entrada y salida del puerto serie
getInputBytesAvailable() Devuelve la cantidad de bytes disponibles para ser leídos en el buffer de entrada del puerto serie
getEventListener() Devuelve el event listener que se agrega al serialPort cuando se utilizan los métodos arduinoRX() y ardunoRXTX()

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(numero de sensores a leer, instancia de la clase PanamaHitek_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 (decimal). 
  • 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 isMessageAvailable() devuelva un valor true.

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

Si tienen algún comentario no duden en hacérmelo llegar. Espero sus comentarios. Saludos.

[cite]

 DOI

162 Comentarios

  1. Hola,

    No sé si se publicó mi comentario anterior. Pero estoy usando la libreria para implementar un detector de color en Arduino y enviar esa información a Java para que haga una acción concreta en cada caso de color.
    El caso es que envío un String «The color is Blue» cuando detecta un color, pero cuando en Java intento hacer el condicional if (x=»The color is Blue») no consigo que el programa ejecute este if. Como si no estuviera.

    Alguna ayuda?

    Muchas gracias!

  2. Buenas tardes,

    Primero de todo muy buen trabajo! Tengo una duda: Ahora mismo estoy programando un detector de color en Arduino pero quiero tratar la información en Java, por lo que estoy usando su libreria.

    En Arduino estoy enviando de que color se trata con el mensaje «The color is Blue» pero cuando en Java pongo un if (x==»The color is Blue») no sucede nada. Simplemente no entra en este condicional. No se si se trata de que lo que se envia no es un String…
    Sabrias detectar el problema y proponerme una solución?

    Muchas gracias!

  3. Hola Antony ,Gracias por compartir esta librería .
    Quería hacerte una consulta , estoy haciendo una aplicación en java para graficar en tiempo real la entrada analógica de Arduino. Y el codigo que utilice funciona bien ,salvo para altas frecuencias de muestreo. Cuando el envio de datos desde arduino a java supera los 10 datos por segundo me sucede que printMessage() me envia de manera aleatoria dos lecturas seguidas y una sin nada .
    Ejemplo : en vez de mostrarme 1000 y en la siguiente 997 me muestra 1000997 y en la siguiente nada . Estoy buscando la forma de mejorar ya que es una aplicacion para fisica y la frecuencia de muestreo debe ser mas alta. Muchas Gracias.

    • Hola. Esta librería normalmente no te brinda buenos resultados para altas frecuencias de muestreo. Podrías intentar no utilizar el printMessage y en vez de eso usar receiveData() que te entregará los bytes tal como Arduino los envía. De esta forma podrías intentar procesar los datos y talvez encontrar un algoritmo que lo haga más rápido que printMessage. Yo en lo personal no recomiendo usar altas frecuencias de muestreo con esta librería.

  4. Disculpa cuando quiero recibir un dato en java con printMessage() y lo almaceno en una variable me aparece que no hay datos disponibles, solo los puedo usar con un System…

    • Eso se debe talvez a que no estás usando el método isMessageAvailable() o a que no estás enviando los datos desde el Arduino usando Serial.println().

  5. Hola!!
    Estoy he desarrollado una interfaz q muestra los piertos COM disponibles en el PC, permite seleccionar uno de ellos e iniciar la conexion con Arduino. Mi pregunta es ¿Como puedo chequear q en el COM seleccionado existe un Arduino conectado?

  6. hola una pregunta cuando uso el metodo killconection() siempre me sale un aviso que es persistente y no me deja seguir usando la aplicacion entonces mi pregunta es como puedo solucionar ese inconveniente que cuando cierre la conexion me permita seguir usando la aplicacion

  7. Hola tengo un problema estoy utilizando el método RXTX y envío datos perfectamente sin embargo cuando recibo datos no me los agarra bien aveces desde arduino estoy enviando serial. Println (“R»+minutos)
    serial. Println (“R»+segundos )
    serial. Println (“R»+décimas)
    serial. Println (“R»+centensimas)
    serial. Println (“R»+milésimas)
    Sin embargo aveces recibo lo siguiente
    R0R
    1
    R7
    R5
    R3

    Y yo quisiera recibir
    R0
    R1
    R7
    R5
    R3

    • En Arduino no puedes concatenar cadenas de caracteres dentro de el Serial.println. Al menos yo nunca he tenido éxito haciéndolo.

      Te recomiendo que te crees un String y concatenes los datos Luego imprimes. Por ejemplo:
      String msg = «R»;
      msg += mminutos;
      Serial.println(msg);

      Así debería funcionar.

  8. Buenas noches, quiero replicar la aplicación en un computador de mesa y no me sirve cuando le doy en el botón encender y tengo el mismo código en mi portátil y todo funciona, que podría ser, sera que falta alguna configuración? , agradezco tu ayuda mil gracias.

  9. Disculpe,una pregunta…si en el caso de que en el arduino presione un pulsador y quiero que en el programa realice algún evento,que debo utilizar?

  10. Disculpa amigo me podrías indicar como se da el funcionamiento de la clase MultiMessage, no entiendo como puedo usarlo dentro del código si por ejemplo tengo 5 sensores que detectan movimiento y que envían datos desde arduino a java

  11. No me gusta que al Crear el contructor del Objeto Arduino salga con un sout la informacion esa impresa voy a descomplilar la libreria

    • La librería es libre, no es necesario descompilarla. Y la impresión es simplemente la información de quien creó la librería. Usualmente se respeta lo que el autor del código ha puesto ahí. Igual el código es libre

  12. Hola, tengo una pregunta, ¿hay alguna manera de que al iniciar la aplicación de java, y se inicie la conexión, si desconecto el arduino del PC, este indique la perdida de conexión, y volver a recuperar la conexión si se conecta de nuevo? es algo difícil, ya que los métodos de conexión solo se ejecutan al inicio del programa de java, he intentado con hilos pero no reconoce los métodos ya que el RXTX lo reconoce como RX.
    La librería me ha funcionado muy bien es muy sencillo usarla, gracias por compartirlo y la realización de este proyecto sobre arduino y java que realizan,

  13. Una duda, disculpa, estoy intentando enviar datos desde un HC 06, pero no desde arduino, sino de un ATmega 328,( el microcontrolador sin el bootloader), y el problema con las libreiras RxTx, es que no detectan los puertos de servicio saliente, los Dev b, y en un video tuyo,conectas java, con arduino mediante bluetooth, entonces tengo la duda, si me servira tu libreria, a pesar de que realmente no tengo el arduino cargado en el ATmega

  14. ¿Cómo funciona la clase multiMessage();? Intento leer los datos de un sensor de humedad y otro de temperatura con getmessage(); pero me manda el error «java.lang.IndexOutOfBoundsException: Index: 1, Size: 0». La verdad no sé que puede estar mal. Sería tan amable de mostrarme un ejemplo, espero su respuesta a la brevedad. Es de prioridad.

  15. ¿Cómo funciona la clase multiMessage();? Intento leer los datos de un sensor de humedad y otro de temperatura con getmessage(); pero me manda el error «java.lang.IndexOutOfBoundsException: Index: 1, Size: 0». La verdad no sé que puede estar mal. Sería tan amable de mostrarme un ejemplo, espero su respuesta a la brevedad. Es de prioridad.

  16. disculpa amigo, si lo que deseo enviar desde arduino a java es un vector char o int por ejemplo, ay una funcion que me permita hacerlo?

  17. disculpa broo me esta dando un tanto de problemas el usar las nuevas librerias con el video que tienes posteado ya que en ella utilizas la libreria version1.3.0 y no la encuentro en la pagina me podrias apoyar muchisimas gracias de antemano

  18. Que tal, buen trabajo amigo.

    Pero he tenido problemillas al querer implementarlo bajo windows con un arduino nano clonado.

    Problema 1. vi que el método

    serialPort.addEventListener((SerialPortEventListener) events);

    No está trabajando bien, ya que nunca me regresa el evento de que se ha recibido datos desde el arduino.
    Solución 1:
    Investigando un poco llegué a esta dirección donde dan la respuesta, quizá sea bueno agregarlo a la libreria que has creado.
    http://embeddedfreak.wordpress.com/2008/08/12/serial-port-event-in-rxtx/

    Problema 2. Cuando el arduino me devuelve una cadena de datos («por ejemplo») las líneas de codigo siguiente

    PanamaHitek_Arduino device = new PanamaHitek_Arduino();
    device.arduinoRXTX(«COM2»,9600, null); //ignorado el tercer parametro a proposito
    device.sendData(«0»);
    String response=null;
    if (device.isMessageAvailable()){
    response = device.printMessage();
    }

    específicamente
    siempre dice falso, aunque haya
    recibido el primer valor «p» del ejemplo que el arduino esta
    devolviendo.

    Yo lo cambie así:

    PanamaHitek_Arduino device = new PanamaHitek_Arduino();
    device.arduinoRXTX(«COM2»,9600, null); //ignorar el tercer parametro
    device.sendData(«0»);
    String response=null;
    while(device.isMessageAvailable()==false);
    response = device.printMessage();
    }

    Obviamente no es la mejor forma de hacerlo pero me sirvio para salir del paso.

    Bueno, este ha sido mi aporte, sigamos mejorando.

    Un abrazo desde Bolivia.

  19. Muy buena la libreria. Mi enhorabuena. Solo una pega: aunque dices que no es necesario usar la libreria RXTXcomm a partir de la version 2.2.0 (lo que es cierto: no hay que incluir la libreria en el proyecto que estoy desarrollando en NetBeans) sí que hay que tener instaladas las dll (yo uso windows) de RXTXcomm para que funcione el compilador. Ver rxtx.qbang.org/wiki/index.php/Instalation_for_Windows para más informacion

    • Es correcto. Las dll es lo que le permite a la máquina virtual de Java comunicarse con el puerto serie, así que por lo pronto es dependiente de dichos ficheros

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

  21. 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:http://drive.google.com/file/d/0B4RQWx-fMFmwaXRkUDVaeHotdVU/edit?usp=sharing
    y este es el link del código de implementacion http://docs.google.com/document/d/1BF4F7fRQsiA-cN-maPYHmj7CLYlWB63wk5RtgqIMs6s/edit?usp=sharing

  22. 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!!!!!!

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

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

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

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

    • 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»

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

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

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

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

  31. 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?

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

    • 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

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

  33. 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 ([email protected]) y si me pasas el tuyo para enviarte mi proyecto en cuanto lo acabe para compartirlo con ustedes.
    Se te agradece desde México.

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

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

  36. 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 🙂

  37. 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 🙂

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

  39. Eres una eminencia!! Mis felicitaciones!! y muchas gracias, lo logre 😀
    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 😀

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

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

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

  43. 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??

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

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

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

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

  48. 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?

Dejar respuesta

Please enter your comment!
Please enter your name here