Problema al transmitir datos de arduino y leerlos en java

Inicio Foros Arduino + Java Problema al transmitir datos de arduino y leerlos en java

Este debate contiene 5 respuestas, tiene 2 mensajes y lo actualizó  Antony García González hace 1 año.

  • Autor
    Publicaciones
  • #11509

    leviathandavid
    Participante

    Pues eso, estoy tratando de enviar datos de arduino a java para mostrarlos en una aplicacion web usando javaEE y payara como servidor de aplicaciones, basicamente debo leer 5 sensores y mostrar los valores en una pagina web, los sensores todavia no se han conseguido asi que hice una simulacion de envio de valores. el problema ocurre cuando java recibe los datos, cuando uso el serial monitor de IDE me muestra los datos ordenados, pero cuando java los lee no se muestran correctamente. asi que hice unas pruebas con la funcion delay de arduino y digamos que mitigo el error pero se que asi no se debe hacer una aplicacion de la complejidad que estoy desarrollando, aqui unas imagenes…

     

    sin la funcion delay

    sin delay

    con la fincion delay a 21

     

    usando la funcion delay a 35 puede haber errores…

     

     

     

     

    el codigo lo voy a cargar en un archivo plano con algunos comentarios.

    Muchas gracias.

     

     

    Archivos adjuntos:
    You must be logged in to view attached files.
  • #11512

    Antony García González
    Jefe de claves

    Hola amigo. Gracias por participar de este foro.

     

    La librería PanamaHitek_Arduino cuenta con una herramienta especial para la gestión de múltiples mensajes simultáneos. Se trata de la clase MultiMessage, la cual puedes ver en acción si compilas los códigos de ejemplo de la librería. Estos los puedes encontrar en nuestro repositorio de Github.

    Te invito a que subas este código en Arduino y luego corras este código en Java y verás los resultados. Arduino envía los valores de 4 variables y Java los recibe en orden para luego imprimirlos en la consola.

    Espero que esta información te sea útil y nos cuentes como te va. Saludos.

  • #11565

    leviathandavid
    Participante

    Muchar gracias por responder, he adaptado el codigo que esta en git al proyecto y sigo teniendo el mismo problema.

    la salida por consola es la siguiente:

    Info: _______________________________
    Info: Sensor 1: 10a1650.00
    Info: Sensor 2: a1651.00
    Info: Sensor 3: f66
    Info: Sensor 4: a1652.00
    Info: Sensor 5: a1653.00
    Info: Sensor 6: a1654.00
    Info: _______________________________
    Info: Sensor 1: 00
    Info: Sensor 2: a1656.00
    Info: Sensor 3: b67.00
    Info: Sensor 4: a1657.00
    Info: Sensor 5: a1658.00
    Info: Sensor 6: a1659.00
    Info: _______________________________
    Info: Sensor 1: 10a1661.00
    Info: Sensor 2: c67.00
    Info: Sensor 3: a1662.00
    Info: Sensor 4: a1663.00
    Info: Sensor 5: a1664.00
    Info: Sensor 6: a1665.00
    Info: _______________________________
    Info: Sensor 1: 66.00
    Info: Sensor 2: d67
    Info: Sensor 3: a1667.00
    Info: Sensor 4: a1668.00
    Info: Sensor 5: a1669.00
    Info: Sensor 6: a1670.00
    Info: _______________________________
    Info: Sensor 1: 10e67
    Info: Sensor 2: a1672.00
    Info: Sensor 3: a1673.00
    Info: Sensor 4: a1674.00
    Info: Sensor 5: a1675.00
    Info: Sensor 6: a1676.00
    Info: _______________________________

     

    como se puede ver, aun se mezclan las lecturas.

    La funcion serial quedo asi:

    muchas gracias.

    *por si acaso les comparto el controlador que estoy usando… ignoren el metodo send()

    Archivos adjuntos:
    You must be logged in to view attached files.
  • #11570

    Antony García González
    Jefe de claves

    Podría ver tu código en Arduino?

  • #11572

    leviathandavid
    Participante

    claro no hay problema con eso…

     

    *ignorar la funcion Serial.print(«») despues de la funcion loop, eran pruebas que estaba haciendo a ver si pasaba el mismo error

    Archivos adjuntos:
    You must be logged in to view attached files.
  • #11576

    Antony García González
    Jefe de claves

    Después de ver tu código te recomiendo:

    • Eliminar el Serial.print
    • Establecer un delay en cada ciclo para el envío de los datos. Tal parece ser que el Puerto Serie se está saturando con el envío de tanta información en muy poco tiempo. Básicamente estás enviando datos a la velocidad del loop(), lo cual es mucho para Java. Otra opción podría ser aumentar la velocidad a 115200 baudios (tanto en Arduino como en Java), lo cual permitiría manejar más información en menos tiempo. Aún así, un delay pequeño es recomendable para darle tiempo a Java de recibir los datos y procesarlos.

    Me dices como te va. Saludos.

Debes estar registrado para responder a este debate.