¿Como puedo enviar varios datos hacia Arduino desde Java?

Inicio Foros Arduino + Java ¿Como puedo enviar varios datos hacia Arduino desde Java?

Mostrando 6 respuestas a los debates
  • Autor
    Publicaciones
    • #10528

      Tengo un proyecto con Arduino y java en el cual Arduino hace girar unos motores al recibir la instruccion «start» y me retornan un dato, esto desde java con la libreria de PanaHiteck, mi problema es que necesito enviar la instrucción en varias ocasiones y después de enviar la primera instrucción ya no me recibe mas. Me gustaria saber si es posible Flashear el puerto sin tener que cerrarlo ya que al abrirlo de nuevo activa de forma involuntaria el mecanismo en Arduino.

    • #10530
      Antony García González
      Superadministrador

      Depende del código que estés utilizando.

      Aquí hay un ejemplo de recepción de un dato a la vez: https://github.com/PanamaHitek/java_post_examples/blob/master/src/main/java/Java_Arduino/ArduinoRX/JavaRX.java

      Aquí hay un ejemplo de recepción de múltiples datos a la vez donde se utiliza flushBuffer() para indicarle a Java que puede seguir escuchando a un nuevo grupo de mensajes entrante:
      https://github.com/PanamaHitek/java_post_examples/blob/master/src/main/java/Java_Arduino/ArduinoRX_multi/JavaRX_multi.java

      Si lo que quieres es enviar datos de Java a Arduino, aquí hay un ejemplo:
      https://github.com/PanamaHitek/java_post_examples/tree/master/src/main/java/Java_Arduino/ArduinoTX

      Este ejemplo es de transmisión y recepción de datos:
      https://github.com/PanamaHitek/java_post_examples/tree/master/src/main/java/Java_Arduino/ArduinoRXTX

    • #10533

      Muchas Gracias, Voy a revisarlos en este momento y en caso tal te seguiré escribiendo.. que excelente trabajo.

    • #10534

      Hola ya revise los post, pero no me funciono el flushBufer(). Lo que logro identificar es que para seguir haciendo envíos dese Java hacia Arduino, debo resetear el Arduino y ahí es donde tengo el problema, ya que en la maquina final no hay acceso al boton de reset. Hay alguna forma de resetearlo desde software, sin necesidad de oprimir el botón del Arduino???
      Mil gracias.

    • #10535
      Antony García González
      Superadministrador

      El código funciona sin que tengas que resetearlo. Te recomiendo que subas esto a tu Arduino:

      https://github.com/PanamaHitek/java_post_examples/blob/master/src/main/java/Java_Arduino/ArduinoTX/ArduinoRX.ino

      Y en Java uses este código:
      https://github.com/PanamaHitek/java_post_examples/blob/master/src/main/java/Java_Arduino/ArduinoTX/JavaTX.java

      Prefiero que descargues el proyecto completo en tu netbeans. Prueba a seguir las instrucciones que verás ahí y te darás cuenta que podrás enviarle información repetidas veces sin que haya que resetar.

    • #10582
      Adán LPZ
      Participante

      me funciono a la perfección, solo que tengo una duda, recibe java como tal variables del tipo STRING, digo tal vez sea muy basico pero yo apenas ando aprendiendo Java, pero estos datos que recibo que son numéricos, como podria convertirlos a variables del tipo ENTERO? lo menciono porque en base a los datos que reciba tomare acciones en la interfaz para que realice diferentes eventos. Desde ya gracias.

      • #10583
        Antony García González
        Superadministrador

        Pues es muy sencillo:

        El método parseInt() se utiliza para convertir de String a Integer

      • #10593
        Adán LPZ
        Participante

        Hola, gracias, si ya lo había checado y si efectivamente con esa función los convierto aunque me parece que existen mas, pero lo iré investigando. Disculpa la molestia pero me surgió otra duda, me he percatado que si al momento de iniciar la interfaz la tarjeta arduino no esta conectada, el IDE de netbeans te genera errores y cuando la conectas no lo hace, mi duda se enfoca a que si hay una forma de checar si efectivamente esta conectado arduino y si no cerrar la interfaz o mandar un aviso y cerrar despues, se podria hacer y en dado caso como o que funcion de la libreria se utilizaría?

        ya averigüe como lo puedo hacer, tendría que meter las instrucciones en catch (ArduinoException ex), y ahi decir que haga en dado caso que no lo encuentre.

    • #10606
      Adán LPZ
      Participante

      Hola, disculpa la molestia, de casualidad se puede usar la recepción multimensaje y monomensaje (por así decirlo) en el mismo Frame? por ejemplo mandar datos de tres sensores en un método de trabajo y en otra forma de trabajo solo leer un sensor hacer una rutina, leer un segundo sensor y reiniciar el proceso, como una especie de conteo. Mi duda va enfocada a si se puede usar ambas forma de comunicación, la multimensaje y la normal o sencilla.

      • #10612
        Antony García González
        Superadministrador

        Hola. Creo que no se puede hacer lo que pides. Te recomendaría que utilices multimensage de una forma tal que ciertas posiciones se usen para un modo de trabajo y otras posiciones para el otro modo de trabajo. Puedes enviar mensajes vacíos en posiciones que no estés utilizando en un momento dado.

      • #10646
        Adán LPZ
        Participante

        Sí, eso fue lo que decidí hacer, igual y dices que como molesto, pero como puedo utilizar los datos recibidos fuera de la función public void serialEvent(SerialPortEvent spe), por aquí es donde se agrega el try catch para leer los datos del buffer eso si existen, pero no logro extraer eso datos a otros metodos, solo puedo trabajarlos dentro del IF de recepción.

      • #10648
        Antony García González
        Superadministrador

        Crea una variable global. Lees en el serialEvent y guardas el valor en una variable global

Mostrando 6 respuestas a los debates
  • Debes estar registrado para responder a este debate.